dohtest 0.1.6 → 0.1.7
Sign up to get free protection for your applications and to get access to all the features.
- 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:
|