assert 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -8
- data/lib/assert.rb +9 -62
- data/lib/assert/assert_runner.rb +15 -30
- data/lib/assert/assertions.rb +105 -41
- data/lib/assert/cli.rb +1 -1
- data/lib/assert/config.rb +56 -0
- data/lib/assert/context.rb +44 -150
- data/lib/assert/context/setup_dsl.rb +70 -0
- data/lib/assert/context/subject_dsl.rb +39 -0
- data/lib/assert/context/suite_dsl.rb +20 -0
- data/lib/assert/context/test_dsl.rb +51 -0
- data/lib/assert/runner.rb +8 -2
- data/lib/assert/suite.rb +33 -12
- data/lib/assert/test.rb +11 -8
- data/lib/assert/utils.rb +23 -11
- data/lib/assert/version.rb +1 -1
- data/lib/assert/view.rb +9 -7
- data/lib/assert/view/base.rb +26 -4
- data/lib/assert/view/default_view.rb +1 -1
- data/lib/assert/view/helpers/ansi_styles.rb +1 -1
- data/lib/assert/view/helpers/common.rb +16 -6
- data/test/helper.rb +1 -94
- data/test/support/factory.rb +70 -0
- data/test/system/running_tests.rb +55 -28
- data/test/unit/assert_tests.rb +6 -33
- data/test/unit/assertions/assert_block_tests.rb +3 -3
- data/test/unit/assertions/assert_empty_tests.rb +6 -4
- data/test/unit/assertions/assert_equal_tests.rb +19 -22
- data/test/unit/assertions/assert_file_exists_tests.rb +6 -4
- data/test/unit/assertions/assert_includes_tests.rb +8 -4
- data/test/unit/assertions/assert_instance_of_tests.rb +8 -6
- data/test/unit/assertions/assert_kind_of_tests.rb +8 -5
- data/test/unit/assertions/assert_match_tests.rb +8 -4
- data/test/unit/assertions/assert_nil_tests.rb +6 -4
- data/test/unit/assertions/assert_raises_tests.rb +2 -2
- data/test/unit/assertions/assert_respond_to_tests.rb +7 -5
- data/test/unit/assertions/assert_same_tests.rb +75 -6
- data/test/unit/assertions/assert_true_false_tests.rb +116 -0
- data/test/unit/assertions_tests.rb +7 -5
- data/test/unit/config_tests.rb +58 -0
- data/test/unit/context/{setup_teardown_singleton_tests.rb → setup_dsl_tests.rb} +17 -19
- data/test/unit/context/subject_dsl_tests.rb +78 -0
- data/test/unit/context/suite_dsl_tests.rb +47 -0
- data/test/unit/context/{test_should_singleton_tests.rb → test_dsl_tests.rb} +33 -34
- data/test/unit/context_tests.rb +19 -15
- data/test/unit/runner_tests.rb +9 -3
- data/test/unit/suite_tests.rb +20 -23
- data/test/unit/test_tests.rb +22 -14
- data/test/unit/utils_tests.rb +15 -21
- data/test/unit/view_tests.rb +12 -5
- metadata +23 -10
- data/test/unit/context/basic_singleton_tests.rb +0 -86
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'assert'
|
2
|
+
require 'assert/context/suite_dsl'
|
3
|
+
|
4
|
+
require 'assert/suite'
|
5
|
+
|
6
|
+
module Assert::Context::SuiteDSL
|
7
|
+
|
8
|
+
class UnitTests < Assert::Context
|
9
|
+
desc "Assert::Context::SuiteDSL"
|
10
|
+
setup do
|
11
|
+
@custom_suite = Factory.modes_off_suite
|
12
|
+
@context_class = Factory.context_class
|
13
|
+
end
|
14
|
+
subject{ @context_class }
|
15
|
+
|
16
|
+
should "use `Assert.suite` by default" do
|
17
|
+
assert_equal Assert.suite, subject.suite
|
18
|
+
end
|
19
|
+
|
20
|
+
should "use any given custom suite" do
|
21
|
+
subject.suite(@custom_suite)
|
22
|
+
assert_equal @custom_suite, subject.suite
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
|
27
|
+
class SuiteFromParentTests < UnitTests
|
28
|
+
desc "`suite` method using parent context"
|
29
|
+
setup do
|
30
|
+
@parent_class = Factory.context_class
|
31
|
+
@parent_class.suite(@custom_suite)
|
32
|
+
@context_class = Factory.context_class(@parent_class)
|
33
|
+
end
|
34
|
+
|
35
|
+
should "default to it's parents subject block" do
|
36
|
+
assert_equal @custom_suite, subject.suite
|
37
|
+
end
|
38
|
+
|
39
|
+
should "use any given custom suite" do
|
40
|
+
another_suite = Factory.modes_off_suite
|
41
|
+
subject.suite(another_suite)
|
42
|
+
assert_equal another_suite, subject.suite
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
@@ -1,25 +1,23 @@
|
|
1
1
|
require 'assert'
|
2
|
-
require 'assert/context'
|
2
|
+
require 'assert/context/test_dsl'
|
3
3
|
|
4
|
-
|
4
|
+
module Assert::Context::TestDSL
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
desc "test and should methods"
|
6
|
+
class UnitTests < Assert::Context
|
7
|
+
desc "Assert::Context::TestDSL"
|
9
8
|
setup do
|
10
|
-
@test_count_before = Assert.suite.tests.size
|
11
9
|
@test_desc = "be true"
|
12
10
|
@test_block = ::Proc.new{ assert(true) }
|
13
11
|
end
|
14
12
|
|
15
13
|
should "build a test using `test` with a desc and code block" do
|
16
14
|
d, b = @test_desc, @test_block
|
17
|
-
Factory.
|
15
|
+
context_class = Factory.modes_off_context_class{ test(d, &b) }
|
18
16
|
|
19
|
-
assert_equal
|
17
|
+
assert_equal 1, context_class.suite.tests.size
|
20
18
|
|
21
19
|
exp_test_name = @test_desc
|
22
|
-
built_test =
|
20
|
+
built_test = context_class.suite.tests.first
|
23
21
|
assert_kind_of Assert::Test, built_test
|
24
22
|
assert_equal exp_test_name, built_test.name
|
25
23
|
assert_equal @test_block, built_test.code
|
@@ -27,12 +25,12 @@ class Assert::Context
|
|
27
25
|
|
28
26
|
should "build a test using `should` with a desc and code block" do
|
29
27
|
d, b = @test_desc, @test_block
|
30
|
-
Factory.
|
28
|
+
context_class = Factory.modes_off_context_class{ should(d, &b) }
|
31
29
|
|
32
|
-
assert_equal
|
30
|
+
assert_equal 1, context_class.suite.tests.size
|
33
31
|
|
34
32
|
exp_test_name = "should #{@test_desc}"
|
35
|
-
built_test =
|
33
|
+
built_test = context_class.suite.tests.last
|
36
34
|
assert_kind_of Assert::Test, built_test
|
37
35
|
assert_equal exp_test_name, built_test.name
|
38
36
|
assert_equal @test_block, built_test.code
|
@@ -42,10 +40,10 @@ class Assert::Context
|
|
42
40
|
d, b = @test_desc, @test_block
|
43
41
|
context = build_eval_context{ test_eventually(d, &b) }
|
44
42
|
err = capture_err(Assert::Result::TestSkipped) do
|
45
|
-
context.instance_eval(&
|
43
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
46
44
|
end
|
47
45
|
|
48
|
-
assert_equal
|
46
|
+
assert_equal 1, context.class.suite.tests.size
|
49
47
|
assert_equal "", err.message
|
50
48
|
end
|
51
49
|
|
@@ -53,10 +51,10 @@ class Assert::Context
|
|
53
51
|
d, b = @test_desc, @test_block
|
54
52
|
context = build_eval_context{ should_eventually(d, &b) }
|
55
53
|
err = capture_err(Assert::Result::TestSkipped) do
|
56
|
-
context.instance_eval(&
|
54
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
57
55
|
end
|
58
56
|
|
59
|
-
assert_equal
|
57
|
+
assert_equal 1, context.class.suite.tests.size
|
60
58
|
assert_equal "", err.message
|
61
59
|
end
|
62
60
|
|
@@ -64,10 +62,10 @@ class Assert::Context
|
|
64
62
|
d = @test_desc
|
65
63
|
context = build_eval_context { test(d) } # no block passed
|
66
64
|
err = capture_err(Assert::Result::TestSkipped) do
|
67
|
-
context.instance_eval(&
|
65
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
68
66
|
end
|
69
67
|
|
70
|
-
assert_equal
|
68
|
+
assert_equal 1, context.class.suite.tests.size
|
71
69
|
assert_equal "TODO", err.message
|
72
70
|
end
|
73
71
|
|
@@ -75,10 +73,10 @@ class Assert::Context
|
|
75
73
|
d = @test_desc
|
76
74
|
context = build_eval_context { should(d) } # no block passed
|
77
75
|
err = capture_err(Assert::Result::TestSkipped) do
|
78
|
-
context.instance_eval(&
|
76
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
79
77
|
end
|
80
78
|
|
81
|
-
assert_equal
|
79
|
+
assert_equal 1, context.class.suite.tests.size
|
82
80
|
assert_equal "TODO", err.message
|
83
81
|
end
|
84
82
|
|
@@ -86,10 +84,10 @@ class Assert::Context
|
|
86
84
|
d = @test_desc
|
87
85
|
context = build_eval_context{ test_eventually(d) } # no block given
|
88
86
|
err = capture_err(Assert::Result::TestSkipped) do
|
89
|
-
context.instance_eval(&
|
87
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
90
88
|
end
|
91
89
|
|
92
|
-
assert_equal
|
90
|
+
assert_equal 1, context.class.suite.tests.size
|
93
91
|
assert_equal "TODO", err.message
|
94
92
|
end
|
95
93
|
|
@@ -97,27 +95,27 @@ class Assert::Context
|
|
97
95
|
d = @test_desc
|
98
96
|
context = build_eval_context{ should_eventually(d) } # no block given
|
99
97
|
err = capture_err(Assert::Result::TestSkipped) do
|
100
|
-
context.instance_eval(&
|
98
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
101
99
|
end
|
102
100
|
|
103
|
-
assert_equal
|
101
|
+
assert_equal 1, context.class.suite.tests.size
|
104
102
|
assert_equal "TODO", err.message
|
105
103
|
end
|
106
104
|
|
107
105
|
should "build a test from a macro using `test`" do
|
108
106
|
d, b = @test_desc, @test_block
|
109
107
|
m = Assert::Macro.new{ test(d, &b); test(d, &b) }
|
110
|
-
Factory.
|
108
|
+
context_class = Factory.modes_off_context_class{ test(m) }
|
111
109
|
|
112
|
-
assert_equal
|
110
|
+
assert_equal 2, context_class.suite.tests.size
|
113
111
|
end
|
114
112
|
|
115
113
|
should "build a test from a macro using `should`" do
|
116
114
|
d, b = @test_desc, @test_block
|
117
115
|
m = Assert::Macro.new{ should(d, &b); should(d, &b) }
|
118
|
-
Factory.
|
116
|
+
context_class = Factory.modes_off_context_class{ should(m) }
|
119
117
|
|
120
|
-
assert_equal
|
118
|
+
assert_equal 2, context_class.suite.tests.size
|
121
119
|
end
|
122
120
|
|
123
121
|
should "build a test that skips from a macro using `test_eventually`" do
|
@@ -125,9 +123,9 @@ class Assert::Context
|
|
125
123
|
m = Assert::Macro.new{ test(d, &b); test(d, &b) }
|
126
124
|
context = build_eval_context{ test_eventually(m) }
|
127
125
|
|
128
|
-
assert_equal
|
126
|
+
assert_equal 1, context.class.suite.tests.size
|
129
127
|
assert_raises(Assert::Result::TestSkipped) do
|
130
|
-
context.instance_eval(&
|
128
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
131
129
|
end
|
132
130
|
end
|
133
131
|
|
@@ -136,9 +134,9 @@ class Assert::Context
|
|
136
134
|
m = Assert::Macro.new{ should(d, &b); should(d, &b) }
|
137
135
|
context = build_eval_context{ should_eventually(m) }
|
138
136
|
|
139
|
-
assert_equal
|
137
|
+
assert_equal 1, context.class.suite.tests.size
|
140
138
|
assert_raises(Assert::Result::TestSkipped) do
|
141
|
-
context.instance_eval(&
|
139
|
+
context.instance_eval(&context.class.suite.tests.last.code)
|
142
140
|
end
|
143
141
|
|
144
142
|
end
|
@@ -146,9 +144,10 @@ class Assert::Context
|
|
146
144
|
private
|
147
145
|
|
148
146
|
def build_eval_context(&build_block)
|
149
|
-
context_class = Factory.
|
147
|
+
context_class = Factory.modes_off_context_class &build_block
|
150
148
|
context_info = Factory.context_info(context_class)
|
151
|
-
|
149
|
+
test = Factory.test("whatever", context_info)
|
150
|
+
context_class.new(test, test.config)
|
152
151
|
end
|
153
152
|
|
154
153
|
def capture_err(err_class, &block)
|
data/test/unit/context_tests.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'assert'
|
2
2
|
require 'assert/context'
|
3
3
|
|
4
|
+
require 'assert/config'
|
4
5
|
require 'assert/utils'
|
5
6
|
|
6
7
|
class Assert::Context
|
@@ -10,13 +11,19 @@ class Assert::Context
|
|
10
11
|
setup do
|
11
12
|
@test = Factory.test
|
12
13
|
@context_class = @test.context_class
|
13
|
-
@context = @context_class.new(@test)
|
14
|
-
end
|
15
|
-
teardown do
|
16
|
-
TEST_ASSERT_SUITE.tests.clear
|
14
|
+
@context = @context_class.new(@test, @test.config)
|
17
15
|
end
|
18
16
|
subject{ @context }
|
19
17
|
|
18
|
+
# DSL methods
|
19
|
+
should have_cmeths :description, :desc, :describe, :subject, :suite
|
20
|
+
should have_cmeths :setup_once, :before_once, :startup
|
21
|
+
should have_cmeths :teardown_once, :after_once, :shutdown
|
22
|
+
should have_cmeths :setup, :before, :setups
|
23
|
+
should have_cmeths :teardown, :after, :teardowns
|
24
|
+
should have_cmeths :test, :test_eventually, :test_skip
|
25
|
+
should have_cmeths :should, :should_eventually, :should_skip
|
26
|
+
|
20
27
|
should have_imeths :assert, :assert_not, :refute
|
21
28
|
should have_imeths :skip, :pass, :fail, :flunk, :ignore
|
22
29
|
should have_imeths :with_backtrace, :subject
|
@@ -115,16 +122,13 @@ class Assert::Context
|
|
115
122
|
class HaltOnFailTests < FailTests
|
116
123
|
desc "when halting on fails"
|
117
124
|
setup do
|
118
|
-
@
|
125
|
+
@halt_config = Assert::Config.new(:halt_on_fail => true)
|
126
|
+
@context = @context_class.new(@test, @halt_config)
|
119
127
|
@fail_msg = "something failed"
|
120
128
|
end
|
121
|
-
teardown do
|
122
|
-
Assert.config.halt_on_fail @orig_halt_fail
|
123
|
-
end
|
124
129
|
subject{ @result }
|
125
130
|
|
126
131
|
should "raise an exception with the failure's message" do
|
127
|
-
Assert.config.halt_on_fail true
|
128
132
|
err = begin
|
129
133
|
@context.fail @fail_msg
|
130
134
|
rescue Exception => exception
|
@@ -158,10 +162,10 @@ class Assert::Context
|
|
158
162
|
end
|
159
163
|
|
160
164
|
should "pp the assertion value in the fail message by default" do
|
161
|
-
|
165
|
+
exp_def_what = "Failed assert: assertion was `#{Assert::U.show(false, @test.config)}`."
|
162
166
|
result = subject.assert(false, @fail_desc)
|
163
167
|
|
164
|
-
assert_equal [@fail_desc,
|
168
|
+
assert_equal [@fail_desc, exp_def_what].join("\n"), result.message
|
165
169
|
end
|
166
170
|
|
167
171
|
should "use a custom fail message if one is given" do
|
@@ -197,10 +201,10 @@ class Assert::Context
|
|
197
201
|
end
|
198
202
|
|
199
203
|
should "pp the assertion value in the fail message by default" do
|
200
|
-
|
204
|
+
exp_def_what = "Failed assert_not: assertion was `#{Assert::U.show(true, @test.config)}`."
|
201
205
|
result = subject.assert_not(true, @fail_desc)
|
202
206
|
|
203
|
-
assert_equal [@fail_desc,
|
207
|
+
assert_equal [@fail_desc, exp_def_what].join("\n"), result.message
|
204
208
|
end
|
205
209
|
|
206
210
|
should "return a fail result given a \"truthy\" assertion" do
|
@@ -217,10 +221,10 @@ class Assert::Context
|
|
217
221
|
desc "subject method"
|
218
222
|
setup do
|
219
223
|
expected = @expected = "amazing"
|
220
|
-
@context_class = Factory.
|
224
|
+
@context_class = Factory.modes_off_context_class do
|
221
225
|
subject{ @something = expected }
|
222
226
|
end
|
223
|
-
@context = @context_class.new
|
227
|
+
@context = @context_class.new(@test, @test.config)
|
224
228
|
@subject = @context.subject
|
225
229
|
end
|
226
230
|
subject{ @subject }
|
data/test/unit/runner_tests.rb
CHANGED
@@ -8,13 +8,19 @@ class Assert::Runner
|
|
8
8
|
class BasicTests < Assert::Context
|
9
9
|
desc "a basic runner"
|
10
10
|
setup do
|
11
|
-
@
|
11
|
+
@config = Factory.modes_off_config
|
12
|
+
@suite = Assert::Suite.new(@config)
|
12
13
|
@view = Assert::View::Base.new(StringIO.new("", "w+"), @suite)
|
13
|
-
@runner = Assert::Runner.new
|
14
|
+
@runner = Assert::Runner.new(@config)
|
14
15
|
end
|
15
16
|
subject { @runner }
|
16
17
|
|
17
|
-
should
|
18
|
+
should have_readers :config
|
19
|
+
should have_imeths :run
|
20
|
+
|
21
|
+
should "know its config" do
|
22
|
+
assert_equal @config, subject.config
|
23
|
+
end
|
18
24
|
|
19
25
|
should "return an integer exit code" do
|
20
26
|
assert_equal 0, subject.run(@suite, @view)
|
data/test/unit/suite_tests.rb
CHANGED
@@ -5,17 +5,19 @@ require 'test/support/inherited_stuff'
|
|
5
5
|
|
6
6
|
class Assert::Suite
|
7
7
|
|
8
|
-
class
|
9
|
-
desc "
|
8
|
+
class UnitTests < Assert::Context
|
9
|
+
desc "Assert::Suite"
|
10
10
|
setup do
|
11
|
-
@
|
11
|
+
@config = Factory.modes_off_config
|
12
|
+
@suite = Assert::Suite.new(@config)
|
12
13
|
end
|
13
14
|
subject{ @suite }
|
14
15
|
|
15
|
-
should
|
16
|
+
should have_accessors :config, :tests, :test_methods, :start_time, :end_time
|
17
|
+
should have_imeths :ordered_tests, :results, :ordered_results
|
18
|
+
should have_imeths :run_time, :test_rate, :result_rate
|
16
19
|
should have_imeths :count, :test_count, :result_count
|
17
20
|
should have_imeths :setup, :startup, :teardown, :shutdown
|
18
|
-
should have_accessors :tests, :test_methods, :start_time, :end_time
|
19
21
|
|
20
22
|
should "determine a klass' local public test methods" do
|
21
23
|
exp = ["test_subclass_stuff", "test_mixin_stuff", "test_repeated"].sort
|
@@ -23,17 +25,18 @@ class Assert::Suite
|
|
23
25
|
assert_equal(exp, act)
|
24
26
|
end
|
25
27
|
|
26
|
-
should "have zero
|
28
|
+
should "have a zero run time, test rate and result by default" do
|
27
29
|
assert_equal 0, subject.run_time
|
30
|
+
assert_equal 0, subject.test_rate
|
31
|
+
assert_equal 0, subject.result_rate
|
28
32
|
end
|
29
33
|
|
30
34
|
end
|
31
35
|
|
32
|
-
class WithTestsTests <
|
36
|
+
class WithTestsTests < UnitTests
|
33
37
|
desc "a suite with tests"
|
34
38
|
setup do
|
35
|
-
ci = Factory.context_info(Factory.
|
36
|
-
@suite = Assert::Suite.new
|
39
|
+
ci = Factory.context_info(Factory.modes_off_context_class)
|
37
40
|
@suite.tests = [
|
38
41
|
Factory.test("should nothing", ci){ },
|
39
42
|
Factory.test("should pass", ci){ assert(1==1); refute(1==0) },
|
@@ -44,7 +47,6 @@ class Assert::Suite
|
|
44
47
|
]
|
45
48
|
@suite.tests.each(&:run)
|
46
49
|
end
|
47
|
-
subject{ @suite }
|
48
50
|
|
49
51
|
should "build test instances to run" do
|
50
52
|
assert_kind_of Assert::Test, subject.tests.first
|
@@ -121,37 +123,33 @@ class Assert::Suite
|
|
121
123
|
|
122
124
|
end
|
123
125
|
|
124
|
-
class SetupTests <
|
126
|
+
class SetupTests < UnitTests
|
125
127
|
desc "a suite with a setup block"
|
126
128
|
setup do
|
127
129
|
@setup_status = nil
|
128
|
-
@suite = Assert::Suite.new
|
129
130
|
@setup_blocks = []
|
130
131
|
@setup_blocks << ::Proc.new{ @setup_status = "setup" }
|
131
132
|
@setup_blocks << ::Proc.new{ @setup_status += " has been run" }
|
132
133
|
@setup_blocks.each{ |setup_block| @suite.setup(&setup_block) }
|
133
134
|
end
|
134
|
-
subject{ @setup_status }
|
135
135
|
|
136
136
|
should "set the setup status to the correct message" do
|
137
|
-
|
138
|
-
assert_equal "setup has been run",
|
137
|
+
subject.setup
|
138
|
+
assert_equal "setup has been run", @setup_status
|
139
139
|
end
|
140
140
|
|
141
141
|
should "return the setup blocks with the #setups method" do
|
142
|
-
setups = @suite.send(:setups)
|
143
142
|
@setup_blocks.each do |setup_block|
|
144
|
-
assert_includes setup_block, setups
|
143
|
+
assert_includes setup_block, subject.send(:setups)
|
145
144
|
end
|
146
145
|
end
|
147
146
|
|
148
147
|
end
|
149
148
|
|
150
|
-
class TeardownTests <
|
149
|
+
class TeardownTests < UnitTests
|
151
150
|
desc "a suite with a teardown"
|
152
151
|
setup do
|
153
152
|
@teardown_status = nil
|
154
|
-
@suite = Assert::Suite.new
|
155
153
|
@teardown_blocks = []
|
156
154
|
@teardown_blocks << ::Proc.new{ @teardown_status += " has been run" }
|
157
155
|
@teardown_blocks << ::Proc.new{ @teardown_status = "teardown" }
|
@@ -159,20 +157,19 @@ class Assert::Suite
|
|
159
157
|
end
|
160
158
|
|
161
159
|
should "set the teardown status to the correct message" do
|
162
|
-
|
160
|
+
subject.teardown
|
163
161
|
assert_equal "teardown has been run", @teardown_status
|
164
162
|
end
|
165
163
|
|
166
164
|
should "return the teardown blocks with the #teardowns method" do
|
167
|
-
teardowns = @suite.send(:teardowns)
|
168
165
|
@teardown_blocks.each do |setup_block|
|
169
|
-
assert_includes setup_block, teardowns
|
166
|
+
assert_includes setup_block, subject.send(:teardowns)
|
170
167
|
end
|
171
168
|
end
|
172
169
|
|
173
170
|
end
|
174
171
|
|
175
|
-
class ContextInfoTests <
|
172
|
+
class ContextInfoTests < UnitTests
|
176
173
|
desc "a suite's context info"
|
177
174
|
setup do
|
178
175
|
@caller = caller
|