dohtest 0.1.6 → 0.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/doh/test/assertions.rb +34 -27
- data/lib/doh/test/capture_output.rb +53 -0
- data/lib/doh/test/failure.rb +12 -0
- data/lib/doh/test/group_runner.rb +90 -29
- data/lib/doh/test/master_runner.rb +3 -1
- data/lib/doh/test/stream_output.rb +53 -10
- data/test/test_backtrace_parser.rb +2 -1
- data/test/test_group_runner.rb +169 -0
- metadata +8 -4
data/lib/doh/test/assertions.rb
CHANGED
@@ -1,55 +1,62 @@
|
|
1
|
-
|
1
|
+
require 'doh/test/failure'
|
2
2
|
|
3
|
-
|
3
|
+
module DohTest
|
4
4
|
|
5
5
|
class TestGroup
|
6
|
-
def assert(
|
7
|
-
if
|
6
|
+
def assert(boolean, msg = nil)
|
7
|
+
if boolean
|
8
8
|
@runner.assertion_passed
|
9
9
|
else
|
10
|
-
raise DohTest::
|
10
|
+
raise DohTest::Failure.new(msg, :boolean, nil, nil)
|
11
11
|
end
|
12
12
|
end
|
13
13
|
|
14
|
-
def
|
15
|
-
if
|
16
|
-
|
14
|
+
def assert_equal(expected, actual, msg = nil)
|
15
|
+
if expected == actual
|
16
|
+
@runner.assertion_passed
|
17
17
|
else
|
18
|
-
|
18
|
+
raise DohTest::Failure.new(msg, :equal, expected, actual)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
def
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
def assert_raises(*args)
|
27
|
-
msg = args.pop if args.last.is_a?(String)
|
28
|
-
|
22
|
+
def assert_raises(*expected)
|
23
|
+
msg = expected.pop if expected.last.is_a?(String)
|
29
24
|
begin
|
30
25
|
yield
|
31
26
|
no_exception = true
|
32
|
-
rescue Exception =>
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
raise DohTest::AssertionFailed, msg || "expected: #{args}, but no exception was raised"
|
27
|
+
rescue Exception => actual_excpt
|
28
|
+
actual_class = actual_excpt.class
|
29
|
+
if expected.any? { |elem| elem.instance_of?(Module) ? actual_excpt.kind_of?(elem) : elem == actual_class }
|
30
|
+
@runner.assertion_passed
|
31
|
+
else
|
32
|
+
raise DohTest::Failure.new(msg, :raises, expected, actual_class)
|
33
|
+
end
|
40
34
|
end
|
35
|
+
raise DohTest::Failure.new(msg, :raises, expected, nil) if no_exception
|
41
36
|
end
|
42
37
|
|
43
38
|
def assert_instance_of(expected_class, actual_object, msg = nil)
|
44
|
-
|
39
|
+
if actual_object.instance_of?(expected_class)
|
40
|
+
@runner.assertion_passed
|
41
|
+
else
|
42
|
+
raise DohTest::Failure.new(msg, :instance_of, expected_class, actual_object)
|
43
|
+
end
|
45
44
|
end
|
46
45
|
|
47
46
|
def assert_match(expected_regex, actual_str, msg = nil)
|
48
|
-
|
47
|
+
if actual_str.match(expected_regex)
|
48
|
+
@runner.assertion_passed
|
49
|
+
else
|
50
|
+
raise DohTest::Failure.new(msg, :match, expected_regex, actual_str)
|
51
|
+
end
|
49
52
|
end
|
50
53
|
|
51
54
|
def assert_not_equal(expected, actual, msg = nil)
|
52
|
-
|
55
|
+
if expected != actual
|
56
|
+
@runner.assertion_passed
|
57
|
+
else
|
58
|
+
raise DohTest::Failure.new(msg, :not_equal, expected, actual)
|
59
|
+
end
|
53
60
|
end
|
54
61
|
end
|
55
62
|
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module DohTest
|
2
|
+
|
3
|
+
class CaptureOutput
|
4
|
+
attr_reader :events
|
5
|
+
|
6
|
+
def initialize
|
7
|
+
@events = []
|
8
|
+
end
|
9
|
+
|
10
|
+
def run_begin(config)
|
11
|
+
add(:config => config)
|
12
|
+
end
|
13
|
+
|
14
|
+
def run_end(duration)
|
15
|
+
add(:duration => duration)
|
16
|
+
end
|
17
|
+
|
18
|
+
def group_begin(group_name)
|
19
|
+
add(:group_name => group_name)
|
20
|
+
end
|
21
|
+
|
22
|
+
def group_end(group_name, tests_ran, tests_skipped, assertions_passed, assertions_failed)
|
23
|
+
add(:group_name => group_name, :tests_ran => tests_ran, :tests_skipped => tests_skipped, :assertions_passed => assertions_passed, :assertions_failed => assertions_failed)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_begin(group_name, test_name)
|
27
|
+
add(:group_name => group_name, :test_name => test_name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_end(group_name, test_name)
|
31
|
+
add(:group_name => group_name, :test_name => test_name)
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_error(group_name, test_name, error)
|
35
|
+
add(:group_name => group_name, :test_name => test_name, :error => error)
|
36
|
+
end
|
37
|
+
|
38
|
+
def assertion_failed(group_name, test_name, failure)
|
39
|
+
add(:group_name => group_name, :test_name => test_name, :failure => failure)
|
40
|
+
end
|
41
|
+
|
42
|
+
def assertion_passed(group_name, test_name)
|
43
|
+
add(:group_name => group_name, :test_name => test_name)
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
def add(args)
|
48
|
+
args[:name] = caller.first.rpartition(':in ').last[1..-2]
|
49
|
+
@events.push(args)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
@@ -7,64 +7,120 @@ class GroupRunner
|
|
7
7
|
@group_class,@output = group_class,output
|
8
8
|
@config = config || {}
|
9
9
|
@group_name = @group_class.to_s
|
10
|
-
@
|
11
|
-
@tests_ran = 0
|
12
|
-
@tests_skipped = 0
|
13
|
-
@assertions_passed = 0
|
14
|
-
@assertions_failed = 0
|
10
|
+
@before_all_failed = false
|
11
|
+
@error_count = @tests_ran = @tests_skipped = @assertions_failed = @assertions_passed = 0
|
15
12
|
end
|
16
13
|
|
17
14
|
def run
|
18
15
|
@output.group_begin(@group_name)
|
19
|
-
create_group
|
20
|
-
|
21
|
-
|
22
|
-
|
16
|
+
if create_group
|
17
|
+
run_before_all
|
18
|
+
run_tests unless @before_all_failed
|
19
|
+
run_after_all
|
20
|
+
end
|
23
21
|
@output.group_end(@group_name, @tests_ran, @tests_skipped, @assertions_passed, @assertions_failed)
|
22
|
+
past_brink?
|
24
23
|
end
|
25
24
|
|
26
25
|
def create_group
|
27
26
|
@group = @group_class.new
|
28
27
|
rescue => error
|
29
|
-
|
30
|
-
|
28
|
+
caught_error(error, 'initialize')
|
29
|
+
false
|
31
30
|
else
|
32
31
|
@group.runner = self
|
32
|
+
true
|
33
33
|
end
|
34
34
|
|
35
35
|
def run_before_all
|
36
36
|
@group.before_all if @group.respond_to?(:before_all)
|
37
37
|
rescue => error
|
38
|
-
@
|
39
|
-
|
38
|
+
@before_all_failed = true
|
39
|
+
caught_error(error, 'before_all')
|
40
40
|
end
|
41
41
|
|
42
42
|
def run_after_all
|
43
43
|
@group.after_all if @group.respond_to?(:after_all)
|
44
44
|
rescue => error
|
45
|
-
|
45
|
+
caught_error(error, 'after_all')
|
46
46
|
end
|
47
47
|
|
48
|
-
def
|
49
|
-
determine_test_methods
|
48
|
+
def find_before_each_method
|
50
49
|
has_before_each = @group.respond_to?(:before_each)
|
50
|
+
has_setup = @group.respond_to?(:setup)
|
51
|
+
if has_before_each && has_setup
|
52
|
+
raise ":before_each and :setup both defined; please pick one"
|
53
|
+
elsif has_before_each
|
54
|
+
@before_each_method = :before_each
|
55
|
+
elsif has_setup
|
56
|
+
@before_each_method = :setup
|
57
|
+
else
|
58
|
+
@before_each_method = nil
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def find_after_each_method
|
51
63
|
has_after_each = @group.respond_to?(:after_each)
|
64
|
+
has_teardown = @group.respond_to?(:teardown)
|
65
|
+
if has_after_each && has_teardown
|
66
|
+
raise ":after_each and :teardown both defined; please pick one"
|
67
|
+
elsif has_after_each
|
68
|
+
@after_each_method = :after_each
|
69
|
+
elsif has_teardown
|
70
|
+
@after_each_method = :teardown
|
71
|
+
else
|
72
|
+
@after_each_method = nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def run_before_each
|
77
|
+
@group.send(@before_each_method)
|
78
|
+
rescue => error
|
79
|
+
@before_each_failed = true
|
80
|
+
caught_error(error)
|
81
|
+
end
|
82
|
+
|
83
|
+
def run_after_each
|
84
|
+
@group.send(@after_each_method)
|
85
|
+
rescue => error
|
86
|
+
caught_error(error)
|
87
|
+
end
|
88
|
+
|
89
|
+
def run_test_method
|
90
|
+
@group.send(@test_name)
|
91
|
+
rescue DohTest::Failure => failure
|
92
|
+
@assertions_failed += 1
|
93
|
+
@output.assertion_failed(@group_name, @test_name, failure)
|
94
|
+
rescue => error
|
95
|
+
caught_error(error)
|
96
|
+
end
|
97
|
+
|
98
|
+
def setup_brink
|
99
|
+
@max_errors = if @config.key?(:max_errors) then @config[:max_errors].to_i else nil end
|
100
|
+
@max_failures = if @config.key?(:max_failures) then @config[:max_failures].to_i else nil end
|
101
|
+
@has_brink = @max_errors || @max_failures
|
102
|
+
end
|
103
|
+
|
104
|
+
def past_brink?
|
105
|
+
(@max_errors && (@error_count > @max_errors)) || (@max_failures && (@assertions_failed > @max_failures))
|
106
|
+
end
|
107
|
+
|
108
|
+
def run_tests
|
109
|
+
determine_test_methods
|
110
|
+
find_before_each_method
|
111
|
+
find_after_each_method
|
112
|
+
setup_brink
|
52
113
|
|
53
114
|
@test_methods.each do |method_name|
|
115
|
+
break if @has_brink && past_brink?
|
54
116
|
@test_name = method_name
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
rescue DohTest::AssertionFailed => failure
|
63
|
-
@assertions_failed += 1
|
64
|
-
@output.assertion_failed(@group_name, @test_name, failure)
|
65
|
-
rescue => error
|
66
|
-
@output.test_error(@group_name, @test_name, error)
|
67
|
-
end
|
117
|
+
@before_each_failed = false
|
118
|
+
@output.test_begin(@group_name, @test_name)
|
119
|
+
run_before_each if @before_each_method
|
120
|
+
run_test_method unless @before_each_failed
|
121
|
+
run_after_each if @after_each_method
|
122
|
+
@tests_ran += 1
|
123
|
+
@output.test_end(@group_name, @test_name)
|
68
124
|
end
|
69
125
|
end
|
70
126
|
|
@@ -81,6 +137,11 @@ class GroupRunner
|
|
81
137
|
@assertions_passed += 1
|
82
138
|
@output.assertion_passed(@group_name, @test_name)
|
83
139
|
end
|
140
|
+
|
141
|
+
def caught_error(error, test_name = nil)
|
142
|
+
@error_count += 1
|
143
|
+
@output.test_error(@group_name, test_name || @test_name, error)
|
144
|
+
end
|
84
145
|
end
|
85
146
|
|
86
147
|
end
|
@@ -13,7 +13,9 @@ class MasterRunner
|
|
13
13
|
DohTest::require_paths(@config[:glob], @paths)
|
14
14
|
srand(@config[:seed])
|
15
15
|
@output.run_begin(@config)
|
16
|
-
TestGroup.descendants.each
|
16
|
+
TestGroup.descendants.each do |group_class|
|
17
|
+
break if GroupRunner.new(group_class, @output, @config).run
|
18
|
+
end
|
17
19
|
@output.run_end(Time.now - start_time)
|
18
20
|
end
|
19
21
|
end
|
@@ -75,13 +75,13 @@ class StreamOutput
|
|
75
75
|
def test_error(group_name, test_name, error)
|
76
76
|
@badness.add(group_name)
|
77
77
|
@error_count += 1
|
78
|
-
display_badness(
|
78
|
+
display_badness(group_name, test_name, error)
|
79
79
|
end
|
80
80
|
|
81
81
|
def assertion_failed(group_name, test_name, failure)
|
82
82
|
@badness.add(group_name)
|
83
83
|
@assertions_failed += 1
|
84
|
-
display_badness(
|
84
|
+
display_badness(group_name, test_name, failure)
|
85
85
|
end
|
86
86
|
|
87
87
|
def assertion_passed(group_name, test_name)
|
@@ -89,18 +89,61 @@ class StreamOutput
|
|
89
89
|
end
|
90
90
|
|
91
91
|
private
|
92
|
-
def display_badness(
|
92
|
+
def display_badness(group_name, test_name, excpt)
|
93
|
+
badness_type = if excpt.is_a?(DohTest::Failure) then :failure else :error end
|
93
94
|
parser = DohTest::BacktraceParser.new(excpt.backtrace)
|
94
|
-
warn "#{
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
95
|
+
warn "#{badness_type} in #{group_name}.#{test_name}"
|
96
|
+
if badness_type == :error
|
97
|
+
warn "#{excpt.class}: #{excpt}"
|
98
|
+
else
|
99
|
+
display_failure_message(excpt)
|
100
|
+
end
|
100
101
|
parser.relevant_stack.each do |path, line|
|
101
|
-
warn "
|
102
|
+
warn "#{path}:#{line}"
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def display_failure_message(failure)
|
107
|
+
if failure.message.empty?
|
108
|
+
warn send("display_#{failure.assert}_failure", failure)
|
109
|
+
else
|
110
|
+
warn failure.message
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def display_boolean_failure(failure)
|
115
|
+
"assertion failed"
|
116
|
+
end
|
117
|
+
|
118
|
+
def display_equal_failure(failure)
|
119
|
+
if (failure.expected.to_s.size + failure.actual.to_s.size) < 50
|
120
|
+
"expected: #{failure.expected}; actual: #{failure.actual}"
|
121
|
+
else
|
122
|
+
"\nexpected: #{failure.expected}\n actual: #{failure.actual}"
|
102
123
|
end
|
103
124
|
end
|
125
|
+
|
126
|
+
def display_raises_failure(failure)
|
127
|
+
if failure.actual
|
128
|
+
expected_str = if (failure.expected.size == 1) then failure.expected.first else "one of #{failure.expected.join(',')}" end
|
129
|
+
"expected: #{expected_str}; actual: #{failure.actual.class}: #{failure.actual.message}"
|
130
|
+
else
|
131
|
+
"expected: #{failure.expected}, but no exception was raised"
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def display_instance_of_failure(failure)
|
136
|
+
"expected class: #{failure.expected}; actual: #{failure.actual}"
|
137
|
+
end
|
138
|
+
|
139
|
+
def display_match_failure(failure)
|
140
|
+
"expected regex #{failure.expected} to match str: #{failure.actual}"
|
141
|
+
end
|
142
|
+
|
143
|
+
def display_not_equal_failure(failure)
|
144
|
+
"expected unequal values; both are: #{failure.expected}"
|
145
|
+
end
|
146
|
+
|
104
147
|
end
|
105
148
|
|
106
149
|
end
|
@@ -0,0 +1,169 @@
|
|
1
|
+
require 'doh/root'; Doh::find_root_from_file
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'doh/test/group_runner'
|
4
|
+
require 'doh/test/capture_output'
|
5
|
+
|
6
|
+
module DohTest
|
7
|
+
|
8
|
+
class TestGroupRunner < MiniTest::Unit::TestCase
|
9
|
+
def verify_event(expected_pairs, event)
|
10
|
+
expected_pairs.each_pair do |key, value|
|
11
|
+
assert_equal(value, event[key])
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def run_group(group_klass, grepstr = nil)
|
16
|
+
@group_klass = group_klass
|
17
|
+
@output = CaptureOutput.new
|
18
|
+
config = if grepstr then {:grep => grepstr} else nil end
|
19
|
+
@runner = GroupRunner.new(@group_klass, @output, config)
|
20
|
+
@runner.run
|
21
|
+
@events = @output.events
|
22
|
+
assert_equal({:name => 'group_begin', :group_name => @group_klass.to_s}, @events.shift)
|
23
|
+
verify_event({:name => 'group_end', :group_name => @group_klass.to_s}, @events.last)
|
24
|
+
end
|
25
|
+
|
26
|
+
|
27
|
+
class EmptyTestGroup < DohTest::TestGroup; end
|
28
|
+
def test_empty_group
|
29
|
+
run_group(EmptyTestGroup)
|
30
|
+
assert_equal(1, @events.size)
|
31
|
+
assert_equal({:name => 'group_end', :group_name => EmptyTestGroup.to_s, :tests_ran => 0, :tests_skipped => 0, :assertions_passed => 0, :assertions_failed => 0}, @events.shift)
|
32
|
+
end
|
33
|
+
|
34
|
+
class SetupTeardownWithErrorGroup < DohTest::TestGroup
|
35
|
+
def initialize
|
36
|
+
@@ran_setup = @@ran_teardown = false
|
37
|
+
end
|
38
|
+
|
39
|
+
def setup
|
40
|
+
@@ran_setup = true
|
41
|
+
end
|
42
|
+
|
43
|
+
def teardown
|
44
|
+
@@ran_teardown = true
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_just_an_error
|
48
|
+
raise "an error"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_setup_teardown_with_error
|
53
|
+
run_group(SetupTeardownWithErrorGroup)
|
54
|
+
assert_equal(4, @events.size)
|
55
|
+
assert_equal('test_begin', @events.shift[:name])
|
56
|
+
assert_equal('test_error', @events.shift[:name])
|
57
|
+
assert_equal('test_end', @events.shift[:name])
|
58
|
+
verify_event({:tests_ran => 1, :tests_skipped => 0, :assertions_passed => 0, :assertions_failed => 0}, @events.shift)
|
59
|
+
assert(@group_klass.class_variable_get(:@@ran_setup))
|
60
|
+
assert(@group_klass.class_variable_get(:@@ran_teardown))
|
61
|
+
end
|
62
|
+
|
63
|
+
class BeforeAfterWithErrorGroup < DohTest::TestGroup
|
64
|
+
def initialize
|
65
|
+
@@ran_before = @@ran_after = false
|
66
|
+
end
|
67
|
+
|
68
|
+
def before_each
|
69
|
+
@@ran_before = true
|
70
|
+
end
|
71
|
+
|
72
|
+
def after_each
|
73
|
+
@@ran_after = true
|
74
|
+
end
|
75
|
+
|
76
|
+
def test_just_an_error
|
77
|
+
raise "an error"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_before_after_with_error
|
82
|
+
run_group(BeforeAfterWithErrorGroup)
|
83
|
+
assert_equal(4, @events.size)
|
84
|
+
assert_equal('test_begin', @events.shift[:name])
|
85
|
+
assert_equal('test_error', @events.shift[:name])
|
86
|
+
assert_equal('test_end', @events.shift[:name])
|
87
|
+
verify_event({:tests_ran => 1, :tests_skipped => 0, :assertions_passed => 0, :assertions_failed => 0}, @events.shift)
|
88
|
+
assert(@group_klass.class_variable_get(:@@ran_before))
|
89
|
+
assert(@group_klass.class_variable_get(:@@ran_after))
|
90
|
+
end
|
91
|
+
|
92
|
+
class ErrorInBefore < DohTest::TestGroup
|
93
|
+
def initialize
|
94
|
+
@@ran_before = @@ran_test = @@ran_after = false
|
95
|
+
end
|
96
|
+
|
97
|
+
def before_each
|
98
|
+
@@ran_before = true
|
99
|
+
raise "blah"
|
100
|
+
end
|
101
|
+
|
102
|
+
def after_each
|
103
|
+
@@ran_after = true
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_no_error
|
107
|
+
@@ran_test = true
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_error_in_before
|
112
|
+
run_group(ErrorInBefore)
|
113
|
+
assert_equal(4, @events.size)
|
114
|
+
assert_equal('test_begin', @events.shift[:name])
|
115
|
+
assert_equal('test_error', @events.shift[:name])
|
116
|
+
assert_equal('test_end', @events.shift[:name])
|
117
|
+
verify_event({:tests_ran => 1, :tests_skipped => 0, :assertions_passed => 0, :assertions_failed => 0}, @events.shift)
|
118
|
+
assert(@group_klass.class_variable_get(:@@ran_before))
|
119
|
+
assert(!@group_klass.class_variable_get(:@@ran_test))
|
120
|
+
assert(@group_klass.class_variable_get(:@@ran_after))
|
121
|
+
end
|
122
|
+
|
123
|
+
class GreppingWithPass < DohTest::TestGroup
|
124
|
+
def test_blah
|
125
|
+
assert(true)
|
126
|
+
end
|
127
|
+
def test_blee
|
128
|
+
assert(true);assert(true)
|
129
|
+
end
|
130
|
+
def test_blahblah
|
131
|
+
assert(true);assert(true);assert(true)
|
132
|
+
end
|
133
|
+
def test_blahblee
|
134
|
+
assert(true);assert(true);assert(true);assert(true)
|
135
|
+
end
|
136
|
+
def test_blahbloo
|
137
|
+
assert(true);assert(true);assert(true);assert(true);assert(true)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
def test_grepping_with_pass_no_grep
|
142
|
+
run_group(GreppingWithPass)
|
143
|
+
# group_end (1) + test_begin (5) + test_end (5) + assertion_passed (15)
|
144
|
+
assert_equal(26, @events.size)
|
145
|
+
verify_event({:tests_ran => 5, :tests_skipped => 0, :assertions_passed => 15, :assertions_failed => 0}, @events.last)
|
146
|
+
end
|
147
|
+
|
148
|
+
def test_grepping_with_pass_grep_blah
|
149
|
+
run_group(GreppingWithPass, 'blah')
|
150
|
+
verify_event({:tests_ran => 4, :tests_skipped => 1, :assertions_passed => 13, :assertions_failed => 0}, @events.last)
|
151
|
+
end
|
152
|
+
|
153
|
+
def test_grepping_with_pass_grep_blee
|
154
|
+
run_group(GreppingWithPass, 'blee')
|
155
|
+
verify_event({:tests_ran => 2, :tests_skipped => 3, :assertions_passed => 6, :assertions_failed => 0}, @events.last)
|
156
|
+
end
|
157
|
+
|
158
|
+
def test_grepping_with_pass_grep_bloo
|
159
|
+
run_group(GreppingWithPass, 'bloo')
|
160
|
+
verify_event({:tests_ran => 1, :tests_skipped => 4, :assertions_passed => 5, :assertions_failed => 0}, @events.last)
|
161
|
+
end
|
162
|
+
|
163
|
+
def test_grepping_with_pass_grep_zzz
|
164
|
+
run_group(GreppingWithPass, 'zzz')
|
165
|
+
verify_event({:tests_ran => 0, :tests_skipped => 5, :assertions_passed => 0, :assertions_failed => 0}, @events.last)
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dohtest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,11 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2012-03-
|
13
|
+
date: 2012-03-14 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: dohroot
|
17
|
-
requirement: &
|
17
|
+
requirement: &70349766447240 !ruby/object:Gem::Requirement
|
18
18
|
none: false
|
19
19
|
requirements:
|
20
20
|
- - ! '>='
|
@@ -22,7 +22,7 @@ dependencies:
|
|
22
22
|
version: 0.1.0
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
|
-
version_requirements: *
|
25
|
+
version_requirements: *70349766447240
|
26
26
|
description: Minimalist unit test framework, easy to understand and extend.
|
27
27
|
email:
|
28
28
|
- devinfo@atpsoft.com
|
@@ -35,13 +35,16 @@ files:
|
|
35
35
|
- bin/dohtest
|
36
36
|
- lib/doh/test/assertions.rb
|
37
37
|
- lib/doh/test/backtrace_parser.rb
|
38
|
+
- lib/doh/test/capture_output.rb
|
38
39
|
- lib/doh/test/configure.rb
|
40
|
+
- lib/doh/test/failure.rb
|
39
41
|
- lib/doh/test/group_runner.rb
|
40
42
|
- lib/doh/test/master_runner.rb
|
41
43
|
- lib/doh/test/require_paths.rb
|
42
44
|
- lib/doh/test/stream_output.rb
|
43
45
|
- lib/doh/test/test_group.rb
|
44
46
|
- test/test_backtrace_parser.rb
|
47
|
+
- test/test_group_runner.rb
|
45
48
|
- MIT-LICENSE
|
46
49
|
homepage: https://github.com/atpsoft/dohtest
|
47
50
|
licenses:
|
@@ -70,4 +73,5 @@ specification_version: 3
|
|
70
73
|
summary: minimalist unit test framework
|
71
74
|
test_files:
|
72
75
|
- test/test_backtrace_parser.rb
|
76
|
+
- test/test_group_runner.rb
|
73
77
|
has_rdoc:
|