attestify 0.1.0.pre.1 → 0.1.0.pre.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/attestify.rb +6 -0
- data/lib/attestify/autorun.rb +80 -0
- data/lib/attestify/cli.rb +11 -17
- data/lib/attestify/reporter.rb +6 -2
- data/lib/attestify/test.rb +8 -0
- data/lib/attestify/test_executor.rb +49 -0
- data/lib/attestify/version.rb +1 -1
- metadata +5 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 876c694bdaec5a2ae1048fc2a54b2d38b4251969
|
4
|
+
data.tar.gz: efc2a21cff2441ba14938aeac038f0d8912efbf5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5db0a47826a1872993a5be2780251302d3ec3fb2cf0cae3b9d861cd8c87f9c608f5b93da28bbdfe9b2c9984e413b6d92780dc081dfdb20ae9eefa49cf61b6451
|
7
|
+
data.tar.gz: 50427b717de140bca88a281a4cbdfa894c7de4ce9ab562c2008686e10cc52f5ff2a4de5235022cd03c4fd295f09770a5d8904933ef103565379f19e4913c4e10
|
data/lib/attestify.rb
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
module Attestify
|
3
3
|
autoload :AssertionResults, "attestify/assertion_results"
|
4
4
|
autoload :Assertions, "attestify/assertions"
|
5
|
+
autoload :Autorun, "attestify/autorun"
|
5
6
|
autoload :CLI, "attestify/cli"
|
6
7
|
autoload :ColorReporter, "attestify/color_reporter"
|
7
8
|
autoload :Mock, "attestify/mock"
|
@@ -9,6 +10,7 @@ module Attestify
|
|
9
10
|
autoload :Reporter, "attestify/reporter"
|
10
11
|
autoload :SkippedError, "attestify/skipped_error"
|
11
12
|
autoload :Test, "attestify/test"
|
13
|
+
autoload :TestExecutor, "attestify/test_executor"
|
12
14
|
autoload :TestList, "attestify/test_list"
|
13
15
|
autoload :TestRunner, "attestify/test_runner"
|
14
16
|
autoload :Timer, "attestify/timer"
|
@@ -17,4 +19,8 @@ module Attestify
|
|
17
19
|
def self.root
|
18
20
|
@root ||= File.realpath(File.expand_path("../..", __FILE__)).freeze
|
19
21
|
end
|
22
|
+
|
23
|
+
def self.autorun
|
24
|
+
@autorun ||= Attestify::Autorun.new.tap(&:enable)
|
25
|
+
end
|
20
26
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
require "attestify"
|
2
|
+
require "optparse"
|
3
|
+
|
4
|
+
module Attestify
|
5
|
+
# Supports autorun mode, where all tests defined will get run.
|
6
|
+
class Autorun
|
7
|
+
include Attestify::TestExecutor
|
8
|
+
|
9
|
+
def initialize(args = ARGV)
|
10
|
+
@args = args
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_list
|
14
|
+
@test_list ||= Attestify::Autorun::TestList.new(dir: options[:directory])
|
15
|
+
end
|
16
|
+
|
17
|
+
def reporter
|
18
|
+
@reporter ||=
|
19
|
+
if options[:color]
|
20
|
+
Attestify::ColorReporter.new
|
21
|
+
else
|
22
|
+
Attestify::Reporter.new
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def enable
|
27
|
+
parse_options
|
28
|
+
require_helper
|
29
|
+
at_exit { start }
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def parse_options
|
35
|
+
option_parser.parse!(@args)
|
36
|
+
end
|
37
|
+
|
38
|
+
def require_helper
|
39
|
+
return unless test_list.test_helper_file
|
40
|
+
require File.realpath(test_list.test_helper_file)
|
41
|
+
end
|
42
|
+
|
43
|
+
def options
|
44
|
+
@options ||= {
|
45
|
+
color: true
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def option_parser # rubocop:disable Metrics/MethodLength
|
50
|
+
@option_parser ||= OptionParser.new do |opts|
|
51
|
+
opts.on("-d", "--directory [DIR]", "Run the tests as if from the provided DIR") do |dir|
|
52
|
+
options[:directory] = dir
|
53
|
+
end
|
54
|
+
|
55
|
+
opts.on("-c", "--color", "Run with color") do
|
56
|
+
options[:color] = true
|
57
|
+
end
|
58
|
+
|
59
|
+
opts.on("-C", "--no-color", "Run without color") do
|
60
|
+
options[:color] = false
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def after_exec
|
66
|
+
exit(exit_code)
|
67
|
+
end
|
68
|
+
|
69
|
+
# A TestList to support auto-running a test.
|
70
|
+
class TestList < Attestify::TestList
|
71
|
+
def test_files
|
72
|
+
[]
|
73
|
+
end
|
74
|
+
|
75
|
+
def run?(_test_class, _method)
|
76
|
+
true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
data/lib/attestify/cli.rb
CHANGED
@@ -4,9 +4,10 @@ require "optparse"
|
|
4
4
|
module Attestify
|
5
5
|
# Command Line Interface for running Attestify tests.
|
6
6
|
class CLI
|
7
|
+
include Attestify::TestExecutor
|
8
|
+
|
7
9
|
def initialize(args = ARGV)
|
8
10
|
@args = args
|
9
|
-
@exit_code = true
|
10
11
|
end
|
11
12
|
|
12
13
|
def self.start
|
@@ -26,6 +27,8 @@ module Attestify
|
|
26
27
|
end
|
27
28
|
end
|
28
29
|
|
30
|
+
private
|
31
|
+
|
29
32
|
def options
|
30
33
|
@options ||= {
|
31
34
|
color: true
|
@@ -56,29 +59,20 @@ module Attestify
|
|
56
59
|
end
|
57
60
|
end
|
58
61
|
|
62
|
+
def report?
|
63
|
+
!@ignore_reporting
|
64
|
+
end
|
65
|
+
|
59
66
|
def ignore_reporting
|
60
67
|
@ignore_reporting = true
|
61
68
|
end
|
62
69
|
|
63
|
-
def
|
70
|
+
def before_run
|
64
71
|
option_parser.parse!(@args)
|
65
72
|
end
|
66
73
|
|
67
|
-
def
|
68
|
-
|
69
|
-
rescue => e
|
70
|
-
@exit_code = 2
|
71
|
-
STDERR.puts("Error running tests: #{e}\n #{e.backtrace.join("\n ")}")
|
72
|
-
ensure
|
73
|
-
reporter.timer = timer
|
74
|
-
reporter.report unless @ignore_reporting
|
75
|
-
exit(@exit_code)
|
76
|
-
end
|
77
|
-
|
78
|
-
def run
|
79
|
-
parse_arguments
|
80
|
-
Attestify::TestRunner.new(test_list, reporter).run
|
81
|
-
@exit_code = 1 unless reporter.passed?
|
74
|
+
def after_exec
|
75
|
+
exit(exit_code)
|
82
76
|
end
|
83
77
|
end
|
84
78
|
end
|
data/lib/attestify/reporter.rb
CHANGED
@@ -75,7 +75,11 @@ module Attestify
|
|
75
75
|
end
|
76
76
|
|
77
77
|
def puts_failure_header(failure, number)
|
78
|
-
puts "#{number}) #{failure.name}"
|
78
|
+
puts "#{number}) #{failure.name}: #{failure_assertion_totals(failure)}"
|
79
|
+
end
|
80
|
+
|
81
|
+
def failure_assertion_totals(failure)
|
82
|
+
"#{failure.failed_assertions_total} out of #{failure.assertions_total} assertions failed"
|
79
83
|
end
|
80
84
|
|
81
85
|
def puts_failure_details(failure, number)
|
@@ -95,7 +99,7 @@ module Attestify
|
|
95
99
|
puts "Finished in #{elapsed_time}, #{tests_per_second}, #{assertions_per_second}"
|
96
100
|
puts "#{total_tests}, #{total_failures}, #{total_errors}, #{total_skips}, " \
|
97
101
|
"#{total_assertions}, #{total_failed_assertions}"
|
98
|
-
puts_failure_reruns
|
102
|
+
puts_failure_reruns unless @failures.empty?
|
99
103
|
end
|
100
104
|
|
101
105
|
def elapsed_time
|
data/lib/attestify/test.rb
CHANGED
@@ -0,0 +1,49 @@
|
|
1
|
+
require "attestify"
|
2
|
+
|
3
|
+
module Attestify
|
4
|
+
# A TestExecutor is responsible for running and outputing the test
|
5
|
+
# reports. This module expects reporter and test_list to be implemented. The
|
6
|
+
# reporter method must return an Attestify::Reporter, while test_list must
|
7
|
+
# return an Attestify::TestList.
|
8
|
+
module TestExecutor
|
9
|
+
def start
|
10
|
+
before_exec
|
11
|
+
@exit_code = true
|
12
|
+
timer = Attestify::Timer.time { run }
|
13
|
+
rescue => e
|
14
|
+
@exit_code = 2
|
15
|
+
STDERR.puts("Error running tests: #{e}\n #{e.backtrace.join("\n ")}")
|
16
|
+
ensure
|
17
|
+
reporter.timer = timer
|
18
|
+
reporter.report unless @ignore_reporting
|
19
|
+
after_exec
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def run
|
25
|
+
before_run
|
26
|
+
Attestify::TestRunner.new(test_list, reporter).run
|
27
|
+
@exit_code = 1 unless reporter.passed?
|
28
|
+
after_run
|
29
|
+
end
|
30
|
+
|
31
|
+
attr_reader :exit_code
|
32
|
+
|
33
|
+
def before_run
|
34
|
+
end
|
35
|
+
|
36
|
+
def after_run
|
37
|
+
end
|
38
|
+
|
39
|
+
def before_exec
|
40
|
+
end
|
41
|
+
|
42
|
+
def after_exec
|
43
|
+
end
|
44
|
+
|
45
|
+
def report?
|
46
|
+
true
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
data/lib/attestify/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: attestify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.0.pre.
|
4
|
+
version: 0.1.0.pre.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Virata-Stone
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/attestify/assertion_results.rb
|
78
78
|
- lib/attestify/assertions.rb
|
79
79
|
- lib/attestify/assertions/output_assertion.rb
|
80
|
+
- lib/attestify/autorun.rb
|
80
81
|
- lib/attestify/cli.rb
|
81
82
|
- lib/attestify/color_reporter.rb
|
82
83
|
- lib/attestify/mock.rb
|
@@ -84,6 +85,7 @@ files:
|
|
84
85
|
- lib/attestify/reporter.rb
|
85
86
|
- lib/attestify/skipped_error.rb
|
86
87
|
- lib/attestify/test.rb
|
88
|
+
- lib/attestify/test_executor.rb
|
87
89
|
- lib/attestify/test_list.rb
|
88
90
|
- lib/attestify/test_runner.rb
|
89
91
|
- lib/attestify/timer.rb
|
@@ -108,7 +110,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
108
110
|
version: 1.3.1
|
109
111
|
requirements: []
|
110
112
|
rubyforge_project:
|
111
|
-
rubygems_version: 2.
|
113
|
+
rubygems_version: 2.4.8
|
112
114
|
signing_key:
|
113
115
|
specification_version: 4
|
114
116
|
summary: A new way to test your code
|