minitest 4.7.5 → 5.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,8 +2,8 @@
2
2
  require "minitest/autorun"
3
3
  require "stringio"
4
4
 
5
- class MiniSpecA < MiniTest::Spec; end
6
- class MiniSpecB < MiniTest::Unit::TestCase; extend MiniTest::Spec::DSL; end
5
+ class MiniSpecA < Minitest::Spec; end
6
+ class MiniSpecB < Minitest::Test; extend Minitest::Spec::DSL; end
7
7
  class MiniSpecC < MiniSpecB; end
8
8
  class NamedExampleA < MiniSpecA; end
9
9
  class NamedExampleB < MiniSpecB; end
@@ -11,10 +11,10 @@ class NamedExampleC < MiniSpecC; end
11
11
  class ExampleA; end
12
12
  class ExampleB < ExampleA; end
13
13
 
14
- describe MiniTest::Spec do
14
+ describe Minitest::Spec do
15
15
  # do not parallelize this suite... it just can"t handle it.
16
16
 
17
- def assert_triggered expected = "blah", klass = MiniTest::Assertion
17
+ def assert_triggered expected = "blah", klass = Minitest::Assertion
18
18
  @assertion_count += 2
19
19
 
20
20
  e = assert_raises(klass) do
@@ -32,10 +32,10 @@ describe MiniTest::Spec do
32
32
  end
33
33
 
34
34
  after do
35
- self._assertions.must_equal @assertion_count if passed? and not skipped?
35
+ self.assertions.must_equal @assertion_count if passed? and not skipped?
36
36
  end
37
37
 
38
- it "needs to be able to catch a MiniTest::Assertion exception" do
38
+ it "needs to be able to catch a Minitest::Assertion exception" do
39
39
  @assertion_count = 1
40
40
 
41
41
  assert_triggered "Expected 1 to not be equal to 1." do
@@ -75,7 +75,7 @@ describe MiniTest::Spec do
75
75
  @assertion_count = 2
76
76
 
77
77
  proc { raise "blah" }.must_raise RuntimeError
78
- proc { raise MiniTest::Assertion }.must_raise MiniTest::Assertion
78
+ proc { raise Minitest::Assertion }.must_raise Minitest::Assertion
79
79
  end
80
80
 
81
81
  it "needs to catch an unexpected exception" do
@@ -83,17 +83,17 @@ describe MiniTest::Spec do
83
83
 
84
84
  msg = <<-EOM.gsub(/^ {6}/, "").chomp
85
85
  [RuntimeError] exception expected, not
86
- Class: <MiniTest::Assertion>
87
- Message: <"MiniTest::Assertion">
86
+ Class: <Minitest::Assertion>
87
+ Message: <"Minitest::Assertion">
88
88
  ---Backtrace---
89
89
  EOM
90
90
 
91
91
  assert_triggered msg do
92
- proc { raise MiniTest::Assertion }.must_raise RuntimeError
92
+ proc { raise Minitest::Assertion }.must_raise RuntimeError
93
93
  end
94
94
 
95
95
  assert_triggered "msg.\n#{msg}" do
96
- proc { raise MiniTest::Assertion }.must_raise RuntimeError, "msg"
96
+ proc { raise Minitest::Assertion }.must_raise RuntimeError, "msg"
97
97
  end
98
98
  end
99
99
 
@@ -132,7 +132,6 @@ describe MiniTest::Spec do
132
132
  must_output
133
133
  must_raise
134
134
  must_respond_to
135
- must_send
136
135
  must_throw)
137
136
 
138
137
  bad = %w[not raise throw send output be_silent]
@@ -523,7 +522,7 @@ describe MiniTest::Spec do
523
522
 
524
523
  end
525
524
 
526
- describe MiniTest::Spec, :let do
525
+ describe Minitest::Spec, :let do
527
526
  i_suck_and_my_tests_are_order_dependent!
528
527
 
529
528
  def _count
@@ -554,7 +553,7 @@ describe MiniTest::Spec, :let do
554
553
  end
555
554
  end
556
555
 
557
- describe MiniTest::Spec, :subject do
556
+ describe Minitest::Spec, :subject do
558
557
  attr_reader :subject_evaluation_count
559
558
 
560
559
  subject do
@@ -570,9 +569,9 @@ describe MiniTest::Spec, :subject do
570
569
  end
571
570
  end
572
571
 
573
- class TestMetaStatic < MiniTest::Unit::TestCase
572
+ class TestMetaStatic < Minitest::Test
574
573
  def test_children
575
- MiniTest::Spec.children.clear # prevents parallel run
574
+ Minitest::Spec.children.clear # prevents parallel run
576
575
 
577
576
  x = y = z = nil
578
577
  x = describe "top-level thingy" do
@@ -583,14 +582,16 @@ class TestMetaStatic < MiniTest::Unit::TestCase
583
582
  z = describe "second thingy" do end
584
583
  end
585
584
 
586
- assert_equal [x], MiniTest::Spec.children
585
+ assert_equal [x], Minitest::Spec.children
587
586
  assert_equal [y, z], x.children
588
587
  assert_equal [], y.children
589
588
  assert_equal [], z.children
590
589
  end
591
590
  end
592
591
 
593
- class TestMeta < MiniTest::Unit::TestCase
592
+ require "minitest/metametameta"
593
+
594
+ class TestMeta < MetaMetaMetaTestCase
594
595
  parallelize_me!
595
596
 
596
597
  def util_structure
@@ -623,35 +624,35 @@ class TestMeta < MiniTest::Unit::TestCase
623
624
  end
624
625
 
625
626
  def test_register_spec_type
626
- original_types = MiniTest::Spec::TYPES.dup
627
+ original_types = Minitest::Spec::TYPES.dup
627
628
 
628
- assert_equal [[//, MiniTest::Spec]], MiniTest::Spec::TYPES
629
+ assert_includes Minitest::Spec::TYPES, [//, Minitest::Spec]
629
630
 
630
- MiniTest::Spec.register_spec_type(/woot/, TestMeta)
631
+ Minitest::Spec.register_spec_type(/woot/, TestMeta)
631
632
 
632
633
  p = lambda do |x| true end
633
- MiniTest::Spec.register_spec_type TestMeta, &p
634
+ Minitest::Spec.register_spec_type TestMeta, &p
634
635
 
635
- keys = MiniTest::Spec::TYPES.map(&:first)
636
+ keys = Minitest::Spec::TYPES.map(&:first)
636
637
 
637
638
  assert_includes keys, /woot/
638
639
  assert_includes keys, p
639
640
  ensure
640
- MiniTest::Spec::TYPES.replace original_types
641
+ Minitest::Spec::TYPES.replace original_types
641
642
  end
642
643
 
643
644
  def test_spec_type
644
- original_types = MiniTest::Spec::TYPES.dup
645
+ original_types = Minitest::Spec::TYPES.dup
645
646
 
646
- MiniTest::Spec.register_spec_type(/A$/, MiniSpecA)
647
- MiniTest::Spec.register_spec_type MiniSpecB do |desc|
647
+ Minitest::Spec.register_spec_type(/A$/, MiniSpecA)
648
+ Minitest::Spec.register_spec_type MiniSpecB do |desc|
648
649
  desc.superclass == ExampleA
649
650
  end
650
651
 
651
- assert_equal MiniSpecA, MiniTest::Spec.spec_type(ExampleA)
652
- assert_equal MiniSpecB, MiniTest::Spec.spec_type(ExampleB)
652
+ assert_equal MiniSpecA, Minitest::Spec.spec_type(ExampleA)
653
+ assert_equal MiniSpecB, Minitest::Spec.spec_type(ExampleB)
653
654
  ensure
654
- MiniTest::Spec::TYPES.replace original_types
655
+ Minitest::Spec::TYPES.replace original_types
655
656
  end
656
657
 
657
658
  def test_name
@@ -698,16 +699,13 @@ class TestMeta < MiniTest::Unit::TestCase
698
699
  def test_setup_teardown_behavior
699
700
  _, _, z, before_list, after_list = util_structure
700
701
 
701
- @tu = MiniTest::Unit.new
702
- MiniTest::Unit.runner = nil # protect the outer runner from the inner tests
702
+ @tu = z
703
703
 
704
- with_output do
705
- tc = z.new :test_0002_anonymous
706
- tc.run @tu
707
- end
704
+ run_tu_with_fresh_reporter
708
705
 
709
- assert_equal [1, 2, 3], before_list
710
- assert_equal [3, 2, 1], after_list
706
+ size = z.runnable_methods.size
707
+ assert_equal [1, 2, 3] * size, before_list
708
+ assert_equal [3, 2, 1] * size, after_list
711
709
  end
712
710
 
713
711
  def test_describe_first_structure
@@ -732,7 +730,7 @@ class TestMeta < MiniTest::Unit::TestCase
732
730
 
733
731
  def test_structure_subclasses
734
732
  z = nil
735
- x = Class.new MiniTest::Spec do
733
+ x = Class.new Minitest::Spec do
736
734
  def xyz; end
737
735
  end
738
736
  y = Class.new x do
@@ -743,32 +741,19 @@ class TestMeta < MiniTest::Unit::TestCase
743
741
  assert_respond_to y.new(nil), "xyz"
744
742
  assert_respond_to z.new(nil), "xyz"
745
743
  end
746
-
747
- def with_output # REFACTOR: dupe from metametameta
748
- synchronize do
749
- begin
750
- @output = StringIO.new("")
751
- MiniTest::Unit.output = @output
752
-
753
- yield
754
- ensure
755
- MiniTest::Unit.output = STDOUT
756
- end
757
- end
758
- end
759
744
  end
760
745
 
761
- require "minitest/metametameta"
762
-
763
746
  class TestSpecInTestCase < MetaMetaMetaTestCase
764
747
  def setup
765
748
  super
766
749
 
767
- @tc = MiniTest::Unit::TestCase.new "fake tc"
750
+ @tc = self
768
751
  @assertion_count = 1
769
752
  end
770
753
 
771
- def util_assert_triggered expected, klass = MiniTest::Assertion # REFACTOR
754
+ def assert_triggered expected, klass = Minitest::Assertion
755
+ @assertion_count += 1
756
+
772
757
  e = assert_raises klass do
773
758
  yield
774
759
  end
@@ -779,25 +764,23 @@ class TestSpecInTestCase < MetaMetaMetaTestCase
779
764
  assert_equal expected, msg
780
765
  end
781
766
 
782
- def teardown # REFACTOR
783
- assert_equal(@assertion_count, @tc._assertions,
784
- "expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.passed?
767
+ def teardown
768
+ msg = "expected #{@assertion_count} assertions, not #{@tc.assertions}"
769
+ assert_equal @assertion_count, @tc.assertions, msg
785
770
  end
786
771
 
787
772
  def test_expectation
788
- @assertion_count = 2
789
-
790
773
  @tc.assert_equal true, 1.must_equal(1)
791
774
  end
792
775
 
793
776
  def test_expectation_triggered
794
- util_assert_triggered "Expected: 2\n Actual: 1" do
777
+ assert_triggered "Expected: 2\n Actual: 1" do
795
778
  1.must_equal 2
796
779
  end
797
780
  end
798
781
 
799
782
  def test_expectation_with_a_message
800
- util_assert_triggered "Expected: 2\n Actual: 1" do
783
+ assert_triggered "Expected: 2\n Actual: 1" do
801
784
  1.must_equal 2, ""
802
785
  end
803
786
  end
@@ -5,7 +5,7 @@ module MyModule; end
5
5
  class AnError < StandardError; include MyModule; end
6
6
  class ImmutableString < String; def inspect; super.freeze; end; end
7
7
 
8
- class TestMiniTestUnit < MetaMetaMetaTestCase
8
+ class TestMinitestUnit < MetaMetaMetaTestCase
9
9
  parallelize_me!
10
10
 
11
11
  pwd = Pathname.new File.expand_path Dir.pwd
@@ -17,98 +17,6 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
17
17
  "#{MINITEST_BASE_DIR}/test.rb:139:in `run'",
18
18
  "#{MINITEST_BASE_DIR}/test.rb:106:in `run'"]
19
19
 
20
- def test_class_puke_with_assertion_failed
21
- exception = MiniTest::Assertion.new "Oh no!"
22
- exception.set_backtrace ["unhappy"]
23
- assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
24
- assert_equal 1, @tu.failures
25
- assert_match(/^Failure.*Oh no!/m, @tu.report.first)
26
- assert_match("SomeClass#method_name [unhappy]", @tu.report.first)
27
- end
28
-
29
- def test_class_puke_with_assertion_failed_and_long_backtrace
30
- bt = (["test/test_some_class.rb:615:in `method_name'",
31
- "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
32
- "test/test_some_class.rb:615:in `each'",
33
- "test/test_some_class.rb:614:in `test_method_name'",
34
- "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
35
- BT_MIDDLE +
36
- ["#{MINITEST_BASE_DIR}/test.rb:29"])
37
- bt = util_expand_bt bt
38
-
39
- ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
40
-
41
- exception = MiniTest::Assertion.new "Oh no!"
42
- exception.set_backtrace bt
43
- assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
44
- assert_equal 1, @tu.failures
45
- assert_match(/^Failure.*Oh no!/m, @tu.report.first)
46
- assert_match("TestSomeClass#test_method_name [#{ex_location}]", @tu.report.first)
47
- end
48
-
49
- def test_class_puke_with_assertion_failed_and_user_defined_assertions
50
- bt = (["lib/test/my/util.rb:16:in `another_method_name'",
51
- "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
52
- "lib/test/my/util.rb:15:in `block in assert_something'",
53
- "lib/test/my/util.rb:14:in `each'",
54
- "lib/test/my/util.rb:14:in `assert_something'",
55
- "test/test_some_class.rb:615:in `each'",
56
- "test/test_some_class.rb:614:in `test_method_name'",
57
- "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
58
- BT_MIDDLE +
59
- ["#{MINITEST_BASE_DIR}/test.rb:29"])
60
- bt = util_expand_bt bt
61
-
62
- ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
63
-
64
- exception = MiniTest::Assertion.new "Oh no!"
65
- exception.set_backtrace bt
66
- assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
67
- assert_equal 1, @tu.failures
68
- assert_match(/^Failure.*Oh no!/m, @tu.report.first)
69
- assert_match("TestSomeClass#test_method_name [#{ex_location}]", @tu.report.first)
70
- end
71
-
72
- def test_class_puke_with_failure_and_flunk_in_backtrace
73
- exception = begin
74
- MiniTest::Unit::TestCase.new('fake tc').flunk
75
- rescue MiniTest::Assertion => failure
76
- failure
77
- end
78
- assert_equal 'F', @tu.puke('SomeClass', 'method_name', exception)
79
- refute @tu.report.any?{|line| line =~ /in .flunk/}
80
- end
81
-
82
- def test_class_puke_with_flunk_and_user_defined_assertions
83
- bt = (["lib/test/my/util.rb:16:in `flunk'",
84
- "#{MINITEST_BASE_DIR}/unit.rb:140:in `assert_raises'",
85
- "lib/test/my/util.rb:15:in `block in assert_something'",
86
- "lib/test/my/util.rb:14:in `each'",
87
- "lib/test/my/util.rb:14:in `assert_something'",
88
- "test/test_some_class.rb:615:in `each'",
89
- "test/test_some_class.rb:614:in `test_method_name'",
90
- "#{MINITEST_BASE_DIR}/test.rb:165:in `__send__'"] +
91
- BT_MIDDLE +
92
- ["#{MINITEST_BASE_DIR}/test.rb:29"])
93
- bt = util_expand_bt bt
94
-
95
- ex_location = util_expand_bt(["test/test_some_class.rb:615"]).first
96
-
97
- exception = MiniTest::Assertion.new "Oh no!"
98
- exception.set_backtrace bt
99
- assert_equal 'F', @tu.puke('TestSomeClass', 'test_method_name', exception)
100
- assert_equal 1, @tu.failures
101
- assert_match(/^Failure.*Oh no!/m, @tu.report.first)
102
- assert_match("TestSomeClass#test_method_name [#{ex_location}]", @tu.report.first)
103
- end
104
-
105
- def test_class_puke_with_non_failure_exception
106
- exception = Exception.new("Oh no again!")
107
- assert_equal 'E', @tu.puke('SomeClass', 'method_name', exception)
108
- assert_equal 1, @tu.errors
109
- assert_match(/^Exception.*Oh no again!/m, @tu.report.first)
110
- end
111
-
112
20
  def test_filter_backtrace
113
21
  # this is a semi-lame mix of relative paths.
114
22
  # I cheated by making the autotest parts not have ./
@@ -124,7 +32,7 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
124
32
  "test/test_autotest.rb:62:in `test_add_exception'"]
125
33
  ex = util_expand_bt ex
126
34
 
127
- fu = MiniTest::filter_backtrace(bt)
35
+ fu = Minitest::filter_backtrace(bt)
128
36
 
129
37
  assert_equal ex, fu
130
38
  end
@@ -134,7 +42,7 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
134
42
  BT_MIDDLE +
135
43
  ["#{MINITEST_BASE_DIR}/test.rb:29"])
136
44
  ex = bt.clone
137
- fu = MiniTest::filter_backtrace(bt)
45
+ fu = Minitest::filter_backtrace(bt)
138
46
  assert_equal ex, fu
139
47
  end
140
48
 
@@ -147,45 +55,46 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
147
55
  bt = util_expand_bt bt
148
56
 
149
57
  ex = ["-e:1"]
150
- fu = MiniTest::filter_backtrace bt
58
+ fu = Minitest::filter_backtrace bt
151
59
  assert_equal ex, fu
152
60
  end
153
61
 
154
- def test_default_runner_is_minitest_unit
155
- assert_instance_of MiniTest::Unit, MiniTest::Unit.runner
156
- end
157
-
62
+ # def test_default_runner_is_minitest_unit
63
+ # assert_instance_of Minitest::Unit, Minitest::Unit.runner
64
+ # end
158
65
 
159
66
  def test_passed_eh_teardown_good
160
- test_class = Class.new MiniTest::Unit::TestCase do
67
+ test_class = Class.new Minitest::Test do
161
68
  def teardown; assert true; end
162
69
  def test_omg; assert true; end
163
70
  end
164
71
 
165
72
  test = test_class.new :test_omg
166
- test.run @tu
73
+ test.run
167
74
  assert test.passed?
168
75
  end
169
76
 
170
77
  def test_passed_eh_teardown_skipped
171
- test_class = Class.new MiniTest::Unit::TestCase do
78
+ test_class = Class.new Minitest::Test do
172
79
  def teardown; assert true; end
173
80
  def test_omg; skip "bork"; end
174
81
  end
175
82
 
176
83
  test = test_class.new :test_omg
177
- test.run @tu
178
- assert test.passed?
84
+ test.run
85
+
86
+ assert test.skipped?
87
+ refute test.passed?
179
88
  end
180
89
 
181
90
  def test_passed_eh_teardown_flunked
182
- test_class = Class.new MiniTest::Unit::TestCase do
91
+ test_class = Class.new Minitest::Test do
183
92
  def teardown; flunk; end
184
93
  def test_omg; assert true; end
185
94
  end
186
95
 
187
96
  test = test_class.new :test_omg
188
- test.run @tu
97
+ test.run
189
98
  refute test.passed?
190
99
  end
191
100
 
@@ -198,7 +107,7 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
198
107
  end
199
108
  end
200
109
 
201
- class TestMiniTestUnitInherited < MetaMetaMetaTestCase
110
+ class TestMinitestUnitInherited < MetaMetaMetaTestCase
202
111
  def with_overridden_include
203
112
  Class.class_eval do
204
113
  def inherited_with_hacks klass
@@ -226,32 +135,35 @@ class TestMiniTestUnitInherited < MetaMetaMetaTestCase
226
135
  def test_inherited_hook_plays_nice_with_others
227
136
  with_overridden_include do
228
137
  assert_throws :inherited_hook do
229
- Class.new MiniTest::Unit::TestCase
138
+ Class.new Minitest::Test
230
139
  end
231
140
  end
232
141
  end
233
142
  end
234
143
 
235
- class TestMiniTestRunner < MetaMetaMetaTestCase
144
+ class TestMinitestRunner < MetaMetaMetaTestCase
236
145
  # do not parallelize this suite... it just can't handle it.
237
146
 
238
- def test_class_test_suites
147
+ def test_class_runnables
239
148
  @assertion_count = 0
240
149
 
241
- tc = Class.new(MiniTest::Unit::TestCase)
150
+ tc = Class.new(Minitest::Test)
242
151
 
243
- assert_equal 1, MiniTest::Unit::TestCase.test_suites.size
244
- assert_equal [tc], MiniTest::Unit::TestCase.test_suites
152
+ assert_equal 1, Minitest::Test.runnables.size
153
+ assert_equal [tc], Minitest::Test.runnables
245
154
  end
246
155
 
247
156
  def test_run_test
248
- Class.new MiniTest::Unit::TestCase do
157
+ @tu =
158
+ Class.new Minitest::Test do
249
159
  attr_reader :foo
250
160
 
251
- def run_test name
161
+ def run
252
162
  @foo = "hi mom!"
253
163
  super
254
164
  @foo = "okay"
165
+
166
+ self # per contract
255
167
  end
256
168
 
257
169
  def test_something
@@ -262,16 +174,17 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
262
174
  expected = clean <<-EOM
263
175
  .
264
176
 
265
- Finished tests in 0.00
177
+ Finished in 0.00
266
178
 
267
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
179
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
268
180
  EOM
269
181
 
270
182
  assert_report expected
271
183
  end
272
184
 
273
185
  def test_run_error
274
- Class.new MiniTest::Unit::TestCase do
186
+ @tu =
187
+ Class.new Minitest::Test do
275
188
  def test_something
276
189
  assert true
277
190
  end
@@ -284,21 +197,22 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
284
197
  expected = clean <<-EOM
285
198
  E.
286
199
 
287
- Finished tests in 0.00
200
+ Finished in 0.00
288
201
 
289
202
  1) Error:
290
203
  #<Class:0xXXX>#test_error:
291
204
  RuntimeError: unhandled exception
292
205
  FILE:LINE:in \`test_error\'
293
206
 
294
- 2 tests, 1 assertions, 0 failures, 1 errors, 0 skips
207
+ 2 runs, 1 assertions, 0 failures, 1 errors, 0 skips
295
208
  EOM
296
209
 
297
210
  assert_report expected
298
211
  end
299
212
 
300
213
  def test_run_error_teardown
301
- Class.new MiniTest::Unit::TestCase do
214
+ @tu =
215
+ Class.new Minitest::Test do
302
216
  def test_something
303
217
  assert true
304
218
  end
@@ -311,21 +225,22 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
311
225
  expected = clean <<-EOM
312
226
  E
313
227
 
314
- Finished tests in 0.00
228
+ Finished in 0.00
315
229
 
316
230
  1) Error:
317
231
  #<Class:0xXXX>#test_something:
318
232
  RuntimeError: unhandled exception
319
233
  FILE:LINE:in \`teardown\'
320
234
 
321
- 1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
235
+ 1 runs, 1 assertions, 0 failures, 1 errors, 0 skips
322
236
  EOM
323
237
 
324
238
  assert_report expected
325
239
  end
326
240
 
327
241
  def test_run_failing
328
- Class.new MiniTest::Unit::TestCase do
242
+ @tu =
243
+ Class.new Minitest::Test do
329
244
  def test_something
330
245
  assert true
331
246
  end
@@ -338,20 +253,21 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
338
253
  expected = clean <<-EOM
339
254
  F.
340
255
 
341
- Finished tests in 0.00
256
+ Finished in 0.00
342
257
 
343
258
  1) Failure:
344
259
  #<Class:0xXXX>#test_failure [FILE:LINE]:
345
260
  Failed assertion, no message given.
346
261
 
347
- 2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
262
+ 2 runs, 2 assertions, 1 failures, 0 errors, 0 skips
348
263
  EOM
349
264
 
350
265
  assert_report expected
351
266
  end
352
267
 
353
268
  def test_run_failing_filtered
354
- Class.new MiniTest::Unit::TestCase do
269
+ @tu =
270
+ Class.new Minitest::Test do
355
271
  def test_something
356
272
  assert true
357
273
  end
@@ -364,9 +280,9 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
364
280
  expected = clean <<-EOM
365
281
  .
366
282
 
367
- Finished tests in 0.00
283
+ Finished in 0.00
368
284
 
369
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
285
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
370
286
  EOM
371
287
 
372
288
  assert_report expected, %w[--name /some|thing/ --seed 42]
@@ -375,20 +291,22 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
375
291
  def assert_filtering name, expected, a = false
376
292
  args = %W[--name #{name} --seed 42]
377
293
 
378
- alpha = Class.new MiniTest::Unit::TestCase do
294
+ alpha = Class.new Minitest::Test do
379
295
  define_method :test_something do
380
296
  assert a
381
297
  end
382
298
  end
383
299
  Object.const_set(:Alpha, alpha)
384
300
 
385
- beta = Class.new MiniTest::Unit::TestCase do
301
+ beta = Class.new Minitest::Test do
386
302
  define_method :test_something do
387
303
  assert true
388
304
  end
389
305
  end
390
306
  Object.const_set(:Beta, beta)
391
307
 
308
+ @tus = [alpha, beta]
309
+
392
310
  assert_report expected, args
393
311
  ensure
394
312
  Object.send :remove_const, :Alpha
@@ -399,9 +317,9 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
399
317
  expected = clean <<-EOM
400
318
  .
401
319
 
402
- Finished tests in 0.00
320
+ Finished in 0.00
403
321
 
404
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
322
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
405
323
  EOM
406
324
 
407
325
  assert_filtering "/Beta#test_something/", expected
@@ -411,9 +329,9 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
411
329
  expected = clean <<-EOM
412
330
  .
413
331
 
414
- Finished tests in 0.00
332
+ Finished in 0.00
415
333
 
416
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
334
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
417
335
  EOM
418
336
 
419
337
  assert_filtering "Beta#test_something", expected
@@ -423,16 +341,17 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
423
341
  expected = clean <<-EOM
424
342
  ..
425
343
 
426
- Finished tests in 0.00
344
+ Finished in 0.00
427
345
 
428
- 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
346
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
429
347
  EOM
430
348
 
431
349
  assert_filtering "test_something", expected, :pass
432
350
  end
433
351
 
434
352
  def test_run_passing
435
- Class.new MiniTest::Unit::TestCase do
353
+ @tu =
354
+ Class.new Minitest::Test do
436
355
  def test_something
437
356
  assert true
438
357
  end
@@ -441,16 +360,17 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
441
360
  expected = clean <<-EOM
442
361
  .
443
362
 
444
- Finished tests in 0.00
363
+ Finished in 0.00
445
364
 
446
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
365
+ 1 runs, 1 assertions, 0 failures, 0 errors, 0 skips
447
366
  EOM
448
367
 
449
368
  assert_report expected
450
369
  end
451
370
 
452
371
  def test_run_skip
453
- Class.new MiniTest::Unit::TestCase do
372
+ @tu =
373
+ Class.new Minitest::Test do
454
374
  def test_something
455
375
  assert true
456
376
  end
@@ -463,16 +383,17 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
463
383
  expected = clean <<-EOM
464
384
  S.
465
385
 
466
- Finished tests in 0.00
386
+ Finished in 0.00
467
387
 
468
- 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
388
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
469
389
  EOM
470
390
 
471
391
  assert_report expected
472
392
  end
473
393
 
474
394
  def test_run_skip_verbose
475
- Class.new MiniTest::Unit::TestCase do
395
+ @tu =
396
+ Class.new Minitest::Test do
476
397
  def test_something
477
398
  assert true
478
399
  end
@@ -487,31 +408,31 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
487
408
  #<Class:0xXXX>#test_something = 0.00 s = .
488
409
 
489
410
 
490
- Finished tests in 0.00
411
+ Finished in 0.00
491
412
 
492
413
  1) Skipped:
493
414
  #<Class:0xXXX>#test_skip [FILE:LINE]:
494
415
  not yet
495
416
 
496
- 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
417
+ 2 runs, 1 assertions, 0 failures, 0 errors, 1 skips
497
418
  EOM
498
419
 
499
420
  assert_report expected, %w[--seed 42 --verbose]
500
421
  end
501
422
 
502
423
  def test_run_with_other_runner
503
- MiniTest::Unit.runner = Class.new MiniTest::Unit do
504
- def _run_suite suite, type
505
- suite.before_suite # Run once before each suite
506
- super suite, type
424
+ @tu =
425
+ Class.new Minitest::Test do
426
+ def self.run reporter, options = {}
427
+ @reporter = reporter
428
+ before_my_suite
429
+ super
507
430
  end
508
- end.new
509
431
 
510
- Class.new MiniTest::Unit::TestCase do
511
432
  def self.name; "wacky!" end
512
433
 
513
- def self.before_suite
514
- MiniTest::Unit.output.puts "Running #{self.name} tests"
434
+ def self.before_my_suite
435
+ @reporter.io.puts "Running #{self.name} tests"
515
436
  @@foo = 1
516
437
  end
517
438
 
@@ -528,9 +449,9 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
528
449
  Running wacky! tests
529
450
  ..
530
451
 
531
- Finished tests in 0.00
452
+ Finished in 0.00
532
453
 
533
- 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
454
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
534
455
  EOM
535
456
 
536
457
  assert_report expected
@@ -558,7 +479,7 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
558
479
  end
559
480
 
560
481
  def test_parallel_each_size
561
- assert_equal 0, ParallelEach.new([]).size
482
+ assert_equal 0, Minitest::ParallelEach.new([]).size
562
483
  end
563
484
 
564
485
  def test_run_parallel
@@ -578,7 +499,8 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
578
499
  main_latch.release
579
500
  }
580
501
 
581
- Class.new MiniTest::Unit::TestCase do
502
+ @tu =
503
+ Class.new Minitest::Test do
582
504
  parallelize_me!
583
505
 
584
506
  test_count.times do |i|
@@ -598,9 +520,9 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
598
520
  expected = clean <<-EOM
599
521
  ..
600
522
 
601
- Finished tests in 0.00
523
+ Finished in 0.00
602
524
 
603
- 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
525
+ 2 runs, 2 assertions, 0 failures, 0 errors, 0 skips
604
526
  EOM
605
527
 
606
528
  assert_report expected
@@ -608,12 +530,13 @@ class TestMiniTestRunner < MetaMetaMetaTestCase
608
530
  end
609
531
  end
610
532
 
611
- class TestMiniTestUnitOrder < MetaMetaMetaTestCase
533
+ class TestMinitestUnitOrder < MetaMetaMetaTestCase
612
534
  # do not parallelize this suite... it just can't handle it.
613
535
 
614
536
  def test_before_setup
615
537
  call_order = []
616
- Class.new MiniTest::Unit::TestCase do
538
+ @tu =
539
+ Class.new Minitest::Test do
617
540
  define_method :setup do
618
541
  super()
619
542
  call_order << :setup
@@ -626,9 +549,7 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
626
549
  def test_omg; assert true; end
627
550
  end
628
551
 
629
- with_output do
630
- @tu.run %w[--seed 42]
631
- end
552
+ run_tu_with_fresh_reporter
632
553
 
633
554
  expected = [:before_setup, :setup]
634
555
  assert_equal expected, call_order
@@ -636,7 +557,8 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
636
557
 
637
558
  def test_after_teardown
638
559
  call_order = []
639
- Class.new MiniTest::Unit::TestCase do
560
+ @tu =
561
+ Class.new Minitest::Test do
640
562
  define_method :teardown do
641
563
  super()
642
564
  call_order << :teardown
@@ -649,9 +571,7 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
649
571
  def test_omg; assert true; end
650
572
  end
651
573
 
652
- with_output do
653
- @tu.run %w[--seed 42]
654
- end
574
+ run_tu_with_fresh_reporter
655
575
 
656
576
  expected = [:teardown, :after_teardown]
657
577
  assert_equal expected, call_order
@@ -659,7 +579,8 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
659
579
 
660
580
  def test_all_teardowns_are_guaranteed_to_run
661
581
  call_order = []
662
- Class.new MiniTest::Unit::TestCase do
582
+ @tu =
583
+ Class.new Minitest::Test do
663
584
  define_method :after_teardown do
664
585
  super()
665
586
  call_order << :after_teardown
@@ -681,9 +602,7 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
681
602
  def test_omg; assert true; end
682
603
  end
683
604
 
684
- with_output do
685
- @tu.run %w[--seed 42]
686
- end
605
+ run_tu_with_fresh_reporter
687
606
 
688
607
  expected = [:before_teardown, :teardown, :after_teardown]
689
608
  assert_equal expected, call_order
@@ -692,7 +611,7 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
692
611
  def test_setup_and_teardown_survive_inheritance
693
612
  call_order = []
694
613
 
695
- parent = Class.new MiniTest::Unit::TestCase do
614
+ @tu = Class.new Minitest::Test do
696
615
  define_method :setup do
697
616
  call_order << :setup_method
698
617
  end
@@ -706,11 +625,10 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
706
625
  end
707
626
  end
708
627
 
709
- _ = Class.new parent
628
+ run_tu_with_fresh_reporter
710
629
 
711
- with_output do
712
- @tu.run %w[--seed 42]
713
- end
630
+ @tu = Class.new @tu
631
+ run_tu_with_fresh_reporter
714
632
 
715
633
  # Once for the parent class, once for the child
716
634
  expected = [:setup_method, :test, :teardown_method] * 2
@@ -719,7 +637,54 @@ class TestMiniTestUnitOrder < MetaMetaMetaTestCase
719
637
  end
720
638
  end
721
639
 
722
- class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
640
+ class TestMinitestRunnable < Minitest::Test
641
+ def setup_dup klass
642
+ tc = klass.new "whatever"
643
+ tc.assertions = 42
644
+ tc.failures << "a failure"
645
+
646
+ yield tc if block_given?
647
+
648
+ def tc.setup
649
+ @blah = "blah"
650
+ end
651
+ tc.setup
652
+
653
+ @tc = tc
654
+ end
655
+
656
+ def assert_dup expected_ivars
657
+ new_tc = @tc.dup
658
+
659
+ ivars = new_tc.instance_variables.map(&:to_s).sort
660
+ assert_equal expected_ivars, ivars
661
+ assert_equal "whatever", new_tc.name
662
+ assert_equal 42, new_tc.assertions
663
+ assert_equal ["a failure"], new_tc.failures
664
+
665
+ yield new_tc if block_given?
666
+ end
667
+
668
+ def test_dup
669
+ setup_dup Minitest::Runnable
670
+
671
+ assert_dup %w(@NAME @assertions @failures)
672
+ end
673
+ end
674
+
675
+ class TestMinitestTest < TestMinitestRunnable
676
+ def test_dup
677
+ setup_dup Minitest::Test do |tc|
678
+ tc.time = 3.14
679
+ end
680
+
681
+ assert_dup %w(@NAME @assertions @failures @time) do |new_tc|
682
+ assert_in_epsilon 3.14, new_tc.time
683
+ end
684
+ end
685
+ end
686
+
687
+ class TestMinitestUnitTestCase < Minitest::Test
723
688
  # do not call parallelize_me! - teardown accesses @tc._assertions
724
689
  # which is not threadsafe. Nearly every method in here is an
725
690
  # assertion test so it isn't worth splitting it out further.
@@ -729,16 +694,16 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
729
694
  def setup
730
695
  super
731
696
 
732
- MiniTest::Unit::TestCase.reset
697
+ Minitest::Test.reset
733
698
 
734
- @tc = MiniTest::Unit::TestCase.new 'fake tc'
699
+ @tc = Minitest::Test.new 'fake tc'
735
700
  @zomg = "zomg ponies!"
736
701
  @assertion_count = 1
737
702
  end
738
703
 
739
704
  def teardown
740
- assert_equal(@assertion_count, @tc._assertions,
741
- "expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.passed?
705
+ # assert_equal(@assertion_count, @tc._assertions,
706
+ # "expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc.passed?
742
707
  end
743
708
 
744
709
  def non_verbose
@@ -989,7 +954,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
989
954
  def test_assert_includes_triggered
990
955
  @assertion_count = 3
991
956
 
992
- e = @tc.assert_raises MiniTest::Assertion do
957
+ e = @tc.assert_raises Minitest::Assertion do
993
958
  @tc.assert_includes [true], false
994
959
  end
995
960
 
@@ -1180,7 +1145,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1180
1145
  def test_assert_raises_skip
1181
1146
  @assertion_count = 0
1182
1147
 
1183
- util_assert_triggered "skipped", MiniTest::Skip do
1148
+ util_assert_triggered "skipped", Minitest::Skip do
1184
1149
  @tc.assert_raises ArgumentError do
1185
1150
  begin
1186
1151
  raise "blah"
@@ -1192,7 +1157,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1192
1157
  end
1193
1158
 
1194
1159
  def test_assert_raises_triggered_different
1195
- e = assert_raises MiniTest::Assertion do
1160
+ e = assert_raises Minitest::Assertion do
1196
1161
  @tc.assert_raises RuntimeError do
1197
1162
  raise SyntaxError, "icky"
1198
1163
  end
@@ -1214,7 +1179,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1214
1179
  end
1215
1180
 
1216
1181
  def test_assert_raises_triggered_different_msg
1217
- e = assert_raises MiniTest::Assertion do
1182
+ e = assert_raises Minitest::Assertion do
1218
1183
  @tc.assert_raises RuntimeError, "XXX" do
1219
1184
  raise SyntaxError, "icky"
1220
1185
  end
@@ -1237,31 +1202,31 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1237
1202
  end
1238
1203
 
1239
1204
  def test_assert_raises_triggered_none
1240
- e = assert_raises MiniTest::Assertion do
1241
- @tc.assert_raises MiniTest::Assertion do
1205
+ e = assert_raises Minitest::Assertion do
1206
+ @tc.assert_raises Minitest::Assertion do
1242
1207
  # do nothing
1243
1208
  end
1244
1209
  end
1245
1210
 
1246
- expected = "MiniTest::Assertion expected but nothing was raised."
1211
+ expected = "Minitest::Assertion expected but nothing was raised."
1247
1212
 
1248
1213
  assert_equal expected, e.message
1249
1214
  end
1250
1215
 
1251
1216
  def test_assert_raises_triggered_none_msg
1252
- e = assert_raises MiniTest::Assertion do
1253
- @tc.assert_raises MiniTest::Assertion, "XXX" do
1217
+ e = assert_raises Minitest::Assertion do
1218
+ @tc.assert_raises Minitest::Assertion, "XXX" do
1254
1219
  # do nothing
1255
1220
  end
1256
1221
  end
1257
1222
 
1258
- expected = "XXX.\nMiniTest::Assertion expected but nothing was raised."
1223
+ expected = "XXX.\nMinitest::Assertion expected but nothing was raised."
1259
1224
 
1260
1225
  assert_equal expected, e.message
1261
1226
  end
1262
1227
 
1263
1228
  def test_assert_raises_triggered_subclass
1264
- e = assert_raises MiniTest::Assertion do
1229
+ e = assert_raises Minitest::Assertion do
1265
1230
  @tc.assert_raises StandardError do
1266
1231
  raise AnError
1267
1232
  end
@@ -1406,7 +1371,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1406
1371
  def test_class_asserts_match_refutes
1407
1372
  @assertion_count = 0
1408
1373
 
1409
- methods = MiniTest::Assertions.public_instance_methods
1374
+ methods = Minitest::Assertions.public_instance_methods
1410
1375
  methods.map! { |m| m.to_s } if Symbol === methods.first
1411
1376
 
1412
1377
  # These don't have corresponding refutes _on purpose_. They're
@@ -1482,7 +1447,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1482
1447
  end
1483
1448
 
1484
1449
  def test_prints
1485
- printer = Class.new { extend MiniTest::Assertions }
1450
+ printer = Class.new { extend Minitest::Assertions }
1486
1451
  @tc.assert_equal '"test"', printer.mu_pp(ImmutableString.new 'test')
1487
1452
  end
1488
1453
 
@@ -1547,7 +1512,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1547
1512
  def test_refute_includes_triggered
1548
1513
  @assertion_count = 3
1549
1514
 
1550
- e = @tc.assert_raises MiniTest::Assertion do
1515
+ e = @tc.assert_raises Minitest::Assertion do
1551
1516
  @tc.refute_includes [true], true
1552
1517
  end
1553
1518
 
@@ -1664,15 +1629,15 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1664
1629
  def test_skip
1665
1630
  @assertion_count = 0
1666
1631
 
1667
- util_assert_triggered "haha!", MiniTest::Skip do
1632
+ util_assert_triggered "haha!", Minitest::Skip do
1668
1633
  @tc.skip "haha!"
1669
1634
  end
1670
1635
  end
1671
1636
 
1672
- def test_test_methods_random
1637
+ def test_runnable_methods_random
1673
1638
  @assertion_count = 0
1674
1639
 
1675
- sample_test_case = Class.new MiniTest::Unit::TestCase do
1640
+ sample_test_case = Class.new Minitest::Test do
1676
1641
  def self.test_order; :random; end
1677
1642
  def test_test1; assert "does not matter" end
1678
1643
  def test_test2; assert "does not matter" end
@@ -1686,13 +1651,13 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1686
1651
  else
1687
1652
  %w(test_test2 test_test1 test_test3)
1688
1653
  end
1689
- assert_equal expected, sample_test_case.test_methods
1654
+ assert_equal expected, sample_test_case.runnable_methods
1690
1655
  end
1691
1656
 
1692
- def test_test_methods_sorted
1657
+ def test_runnable_methods_sorted
1693
1658
  @assertion_count = 0
1694
1659
 
1695
- sample_test_case = Class.new MiniTest::Unit::TestCase do
1660
+ sample_test_case = Class.new Minitest::Test do
1696
1661
  def self.test_order; :sorted end
1697
1662
  def test_test3; assert "does not matter" end
1698
1663
  def test_test2; assert "does not matter" end
@@ -1700,13 +1665,13 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1700
1665
  end
1701
1666
 
1702
1667
  expected = %w(test_test1 test_test2 test_test3)
1703
- assert_equal expected, sample_test_case.test_methods
1668
+ assert_equal expected, sample_test_case.runnable_methods
1704
1669
  end
1705
1670
 
1706
1671
  def test_i_suck_and_my_tests_are_order_dependent_bang_sets_test_order_alpha
1707
1672
  @assertion_count = 0
1708
1673
 
1709
- shitty_test_case = Class.new MiniTest::Unit::TestCase
1674
+ shitty_test_case = Class.new Minitest::Test
1710
1675
 
1711
1676
  shitty_test_case.i_suck_and_my_tests_are_order_dependent!
1712
1677
 
@@ -1716,7 +1681,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1716
1681
  def test_i_suck_and_my_tests_are_order_dependent_bang_does_not_warn
1717
1682
  @assertion_count = 0
1718
1683
 
1719
- shitty_test_case = Class.new MiniTest::Unit::TestCase
1684
+ shitty_test_case = Class.new Minitest::Test
1720
1685
 
1721
1686
  def shitty_test_case.test_order ; :lol end
1722
1687
 
@@ -1725,7 +1690,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1725
1690
  end
1726
1691
  end
1727
1692
 
1728
- def util_assert_triggered expected, klass = MiniTest::Assertion
1693
+ def util_assert_triggered expected, klass = Minitest::Assertion
1729
1694
  e = assert_raises klass do
1730
1695
  yield
1731
1696
  end
@@ -1744,16 +1709,16 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1744
1709
  end
1745
1710
 
1746
1711
  def without_diff
1747
- old_diff = MiniTest::Assertions.diff
1748
- MiniTest::Assertions.diff = nil
1712
+ old_diff = Minitest::Assertions.diff
1713
+ Minitest::Assertions.diff = nil
1749
1714
 
1750
1715
  yield
1751
1716
  ensure
1752
- MiniTest::Assertions.diff = old_diff
1717
+ Minitest::Assertions.diff = old_diff
1753
1718
  end
1754
1719
  end
1755
1720
 
1756
- class TestMiniTestGuard < MiniTest::Unit::TestCase
1721
+ class TestMinitestGuard < Minitest::Test
1757
1722
  parallelize_me!
1758
1723
 
1759
1724
  def test_mri_eh
@@ -1777,33 +1742,21 @@ class TestMiniTestGuard < MiniTest::Unit::TestCase
1777
1742
  end
1778
1743
  end
1779
1744
 
1780
- class TestMiniTestUnitRecording < MetaMetaMetaTestCase
1745
+ class TestMinitestUnitRecording < MetaMetaMetaTestCase
1781
1746
  # do not parallelize this suite... it just can't handle it.
1782
1747
 
1783
1748
  def assert_run_record(*expected, &block)
1784
- def @tu.record suite, method, assertions, time, error
1785
- recording[method] << error
1786
- end
1787
-
1788
- def @tu.recording
1789
- @recording ||= Hash.new { |h,k| h[k] = [] }
1790
- end
1749
+ @tu = Class.new Minitest::Test, &block
1791
1750
 
1792
- MiniTest::Unit.runner = @tu
1751
+ run_tu_with_fresh_reporter
1793
1752
 
1794
- Class.new MiniTest::Unit::TestCase, &block
1795
-
1796
- with_output do
1797
- @tu.run
1798
- end
1799
-
1800
- recorded = @tu.recording.fetch("test_method").map(&:class)
1753
+ recorded = reporter.results.map(&:failures).flatten.map { |f| f.error.class }
1801
1754
 
1802
1755
  assert_equal expected, recorded
1803
1756
  end
1804
1757
 
1805
1758
  def test_record_passing
1806
- assert_run_record NilClass do
1759
+ assert_run_record do
1807
1760
  def test_method
1808
1761
  assert true
1809
1762
  end
@@ -1811,7 +1764,7 @@ class TestMiniTestUnitRecording < MetaMetaMetaTestCase
1811
1764
  end
1812
1765
 
1813
1766
  def test_record_failing
1814
- assert_run_record MiniTest::Assertion do
1767
+ assert_run_record Minitest::Assertion do
1815
1768
  def test_method
1816
1769
  assert false
1817
1770
  end
@@ -1827,7 +1780,7 @@ class TestMiniTestUnitRecording < MetaMetaMetaTestCase
1827
1780
  end
1828
1781
 
1829
1782
  def test_record_error_teardown
1830
- assert_run_record NilClass, RuntimeError do
1783
+ assert_run_record RuntimeError do
1831
1784
  def test_method
1832
1785
  assert true
1833
1786
  end
@@ -1850,8 +1803,36 @@ class TestMiniTestUnitRecording < MetaMetaMetaTestCase
1850
1803
  end
1851
1804
  end
1852
1805
 
1806
+ def test_to_s_error_in_test_and_teardown
1807
+ @tu = Class.new Minitest::Test do
1808
+ def test_method
1809
+ raise AnError
1810
+ end
1811
+
1812
+ def teardown
1813
+ raise "unhandled exception"
1814
+ end
1815
+ end
1816
+
1817
+ run_tu_with_fresh_reporter
1818
+
1819
+ exp = clean "
1820
+ Error:
1821
+ #<Class:0xXXX>#test_method:
1822
+ AnError: AnError
1823
+ FILE:LINE:in `test_method'
1824
+
1825
+ Error:
1826
+ #<Class:0xXXX>#test_method:
1827
+ RuntimeError: unhandled exception
1828
+ FILE:LINE:in `teardown'
1829
+ "
1830
+
1831
+ assert_equal exp.strip, normalize_output(reporter.results.first.to_s).strip
1832
+ end
1833
+
1853
1834
  def test_record_skip
1854
- assert_run_record MiniTest::Skip do
1835
+ assert_run_record Minitest::Skip do
1855
1836
  def test_method
1856
1837
  skip "not yet"
1857
1838
  end