minitest 3.2.0 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
data.tar.gz.sig CHANGED
Binary file
data/History.txt CHANGED
@@ -1,3 +1,21 @@
1
+ === 3.3.0 / 2012-07-26
2
+
3
+ * 1 major enhancement:
4
+
5
+ * Deprecated add_(setup|teardown)_hook in favor of (before|after)_(setup|teardown) [2013-01-01]
6
+
7
+ * 4 minor enhancements:
8
+
9
+ * Refactored deprecated hook system into a module.
10
+ * Refactored lifecycle hooks into a module.
11
+ * Removed after_setup/before_teardown + run_X_hooks from Spec.
12
+ * Spec#before/after now do a simple define_method and call super. DUR.
13
+
14
+ * 2 bug fixes:
15
+
16
+ * Fixed #passed? when used against a test that called flunk. (floehopper)
17
+ * Fixed rdoc bug preventing doco for some expectations. (stomar).
18
+
1
19
  === 3.2.0 / 2012-06-26
2
20
 
3
21
  * 1 minor enhancement:
data/lib/minitest/mock.rb CHANGED
@@ -50,7 +50,7 @@ module MiniTest
50
50
  self
51
51
  end
52
52
 
53
- def __call name, data
53
+ def __call name, data # :nodoc:
54
54
  case data
55
55
  when Hash then
56
56
  "#{name}(#{data[:args].inspect[1..-2]}) => #{data[:retval].inspect}"
data/lib/minitest/spec.rb CHANGED
@@ -155,10 +155,11 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
155
155
  #
156
156
  # Equivalent to MiniTest::Unit::TestCase#setup.
157
157
 
158
- def self.before type = :each, &block
159
- raise "unsupported before type: #{type}" unless type == :each
160
-
161
- add_setup_hook {|tc| tc.instance_eval(&block) }
158
+ def self.before type = nil, &block
159
+ define_method :setup do
160
+ super()
161
+ self.instance_eval(&block)
162
+ end
162
163
  end
163
164
 
164
165
  ##
@@ -168,10 +169,11 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
168
169
  #
169
170
  # Equivalent to MiniTest::Unit::TestCase#teardown.
170
171
 
171
- def self.after type = :each, &block
172
- raise "unsupported after type: #{type}" unless type == :each
173
-
174
- add_teardown_hook {|tc| tc.instance_eval(&block) }
172
+ def self.after type = nil, &block
173
+ define_method :teardown do
174
+ self.instance_eval(&block)
175
+ super()
176
+ end
175
177
  end
176
178
 
177
179
  ##
@@ -240,14 +242,6 @@ class MiniTest::Spec < MiniTest::Unit::TestCase
240
242
  end
241
243
 
242
244
  # :stopdoc:
243
- def after_setup
244
- run_setup_hooks
245
- end
246
-
247
- def before_teardown
248
- run_teardown_hooks
249
- end
250
-
251
245
  class << self
252
246
  attr_reader :desc
253
247
  alias :specify :it
@@ -283,11 +277,11 @@ module MiniTest::Expectations
283
277
  #
284
278
  # n.must_be_close_to m [, delta]
285
279
  #
286
- # :method: must_be_within_delta
280
+ # :method: must_be_close_to
287
281
 
288
282
  infect_an_assertion :assert_in_delta, :must_be_close_to
289
283
 
290
- alias :must_be_within_delta :must_be_close_to
284
+ alias :must_be_within_delta :must_be_close_to # :nodoc:
291
285
 
292
286
  ##
293
287
  # See MiniTest::Assertions#assert_in_epsilon
@@ -443,12 +437,11 @@ module MiniTest::Expectations
443
437
  #
444
438
  # n.wont_be_close_to m [, delta]
445
439
  #
446
- # :method: wont_be_within_delta
440
+ # :method: wont_be_close_to
447
441
 
448
- infect_an_assertion :refute_in_delta, :wont_be_within_delta
442
+ infect_an_assertion :refute_in_delta, :wont_be_close_to
449
443
 
450
- alias :wont_be_close_to :wont_be_within_delta
451
- # FIX: reverse aliases
444
+ alias :wont_be_within_delta :wont_be_close_to # :nodoc:
452
445
 
453
446
  ##
454
447
  # See MiniTest::Assertions#refute_in_epsilon
data/lib/minitest/unit.rb CHANGED
@@ -184,9 +184,12 @@ module MiniTest
184
184
 
185
185
  ##
186
186
  # Fails unless the block returns a true value.
187
+ #
188
+ # NOTE: This method is deprecated, use assert. It will be removed
189
+ # on 2013-01-01."
187
190
 
188
191
  def assert_block msg = nil
189
- warn "NOTE: MiniTest::Unit::TestCase#assert_block is deprecated, use assert. It will be removed on or after 2012-06-01. Called from #{caller.first}"
192
+ warn "NOTE: MiniTest::Unit::TestCase#assert_block is deprecated, use assert. It will be removed on 2013-01-01. Called from #{caller.first}"
190
193
  msg = message(msg) { "Expected block to return true value" }
191
194
  assert yield, msg
192
195
  end
@@ -645,7 +648,7 @@ module MiniTest
645
648
  end
646
649
 
647
650
  class Unit # :nodoc:
648
- VERSION = "3.2.0" # :nodoc:
651
+ VERSION = "3.3.0" # :nodoc:
649
652
 
650
653
  attr_accessor :report, :failures, :errors, :skips # :nodoc:
651
654
  attr_accessor :test_count, :assertion_count # :nodoc:
@@ -667,8 +670,8 @@ module MiniTest
667
670
  @@after_tests = []
668
671
 
669
672
  ##
670
- # A simple hook allowing you to run a block of code after the
671
- # tests are done. Eg:
673
+ # A simple hook allowing you to run a block of code after _all_ of
674
+ # the tests are done. Eg:
672
675
  #
673
676
  # MiniTest::Unit.after_tests { p $debugging_info }
674
677
 
@@ -1018,6 +1021,143 @@ module MiniTest
1018
1021
  end
1019
1022
  end
1020
1023
 
1024
+ ##
1025
+ # Provides before/after hooks for setup and teardown. These are
1026
+ # meant for library writers, NOT for regular test authors. See
1027
+ # #before_setup for an example.
1028
+
1029
+ module LifecycleHooks
1030
+ ##
1031
+ # Runs before every test, after setup. This hook is meant for
1032
+ # libraries to extend minitest. It is not meant to be used by
1033
+ # test developers.
1034
+ #
1035
+ # See #before_setup for an example.
1036
+
1037
+ def after_setup; end
1038
+
1039
+ ##
1040
+ # Runs before every test, before setup. This hook is meant for
1041
+ # libraries to extend minitest. It is not meant to be used by
1042
+ # test developers.
1043
+ #
1044
+ # As a simplistic example:
1045
+ #
1046
+ # module MyMinitestPlugin
1047
+ # def before_setup
1048
+ # super
1049
+ # # ... stuff to do before setup is run
1050
+ # end
1051
+ #
1052
+ # def after_setup
1053
+ # # ... stuff to do after setup is run
1054
+ # super
1055
+ # end
1056
+ #
1057
+ # def before_teardown
1058
+ # super
1059
+ # # ... stuff to do before teardown is run
1060
+ # end
1061
+ #
1062
+ # def after_teardown
1063
+ # # ... stuff to do after teardown is run
1064
+ # super
1065
+ # end
1066
+ # end
1067
+ #
1068
+ # class MiniTest::Unit::TestCase
1069
+ # include MyMinitestPlugin
1070
+ # end
1071
+
1072
+ def before_setup; end
1073
+
1074
+ ##
1075
+ # Runs after every test, before teardown. This hook is meant for
1076
+ # libraries to extend minitest. It is not meant to be used by
1077
+ # test developers.
1078
+ #
1079
+ # See #before_setup for an example.
1080
+
1081
+ def before_teardown; end
1082
+
1083
+ ##
1084
+ # Runs after every test, after teardown. This hook is meant for
1085
+ # libraries to extend minitest. It is not meant to be used by
1086
+ # test developers.
1087
+ #
1088
+ # See #before_setup for an example.
1089
+
1090
+ def after_teardown; end
1091
+ end
1092
+
1093
+ module Deprecated # :nodoc:
1094
+
1095
+ ##
1096
+ # This entire module is deprecated and slated for removal on 2013-01-01.
1097
+
1098
+ module Hooks
1099
+ ##
1100
+ # Adds a block of code that will be executed before every
1101
+ # TestCase is run.
1102
+ #
1103
+ # NOTE: This method is deprecated, use before/after_setup. It
1104
+ # will be removed on 2013-01-01.
1105
+
1106
+ def self.add_setup_hook arg=nil, &block
1107
+ warn "NOTE: MiniTest::Unit::TestCase.add_setup_hook is deprecated, use before/after_setup via a module (and call super!). It will be removed on 2013-01-01. Called from #{caller.first}"
1108
+ hook = arg || block
1109
+ @setup_hooks << hook
1110
+ end
1111
+
1112
+ def self.setup_hooks # :nodoc:
1113
+ if superclass.respond_to? :setup_hooks then
1114
+ superclass.setup_hooks
1115
+ else
1116
+ []
1117
+ end + @setup_hooks
1118
+ end
1119
+
1120
+ def run_setup_hooks # :nodoc:
1121
+ _run_hooks self.class.setup_hooks
1122
+ end
1123
+
1124
+ def _run_hooks hooks # :nodoc:
1125
+ hooks.each do |hook|
1126
+ if hook.respond_to?(:arity) && hook.arity == 1
1127
+ hook.call(self)
1128
+ else
1129
+ hook.call
1130
+ end
1131
+ end
1132
+ end
1133
+
1134
+ ##
1135
+ # Adds a block of code that will be executed after every
1136
+ # TestCase is run.
1137
+ #
1138
+ # NOTE: This method is deprecated, use before/after_teardown. It
1139
+ # will be removed on 2013-01-01.
1140
+
1141
+ def self.add_teardown_hook arg=nil, &block
1142
+ warn "NOTE: MiniTest::Unit::TestCase#add_teardown_hook is deprecated, use before/after_teardown. It will be removed on 2013-01-01. Called from #{caller.first}"
1143
+ hook = arg || block
1144
+ @teardown_hooks << hook
1145
+ end
1146
+
1147
+ def self.teardown_hooks # :nodoc:
1148
+ if superclass.respond_to? :teardown_hooks then
1149
+ superclass.teardown_hooks
1150
+ else
1151
+ []
1152
+ end + @teardown_hooks
1153
+ end
1154
+
1155
+ def run_teardown_hooks # :nodoc:
1156
+ _run_hooks self.class.teardown_hooks.reverse
1157
+ end
1158
+ end
1159
+ end
1160
+
1021
1161
  ##
1022
1162
  # Subclass TestCase to create your own tests. Typically you'll want a
1023
1163
  # TestCase subclass per implementation class.
@@ -1025,6 +1165,8 @@ module MiniTest
1025
1165
  # See MiniTest::Assertions
1026
1166
 
1027
1167
  class TestCase
1168
+ include LifecycleHooks
1169
+ include Deprecated::Hooks
1028
1170
  include Guard
1029
1171
  extend Guard
1030
1172
 
@@ -1070,6 +1212,7 @@ module MiniTest
1070
1212
  rescue *PASSTHROUGH_EXCEPTIONS
1071
1213
  raise
1072
1214
  rescue Exception => e
1215
+ @passed = false
1073
1216
  result = runner.puke self.class, self.__name__, e
1074
1217
  end
1075
1218
  end
@@ -1160,148 +1303,31 @@ module MiniTest
1160
1303
  end
1161
1304
 
1162
1305
  ##
1163
- # Runs before every test. Use this to refactor test initialization.
1306
+ # Runs before every test. Use this to set up before each test
1307
+ # run.
1164
1308
 
1165
1309
  def setup; end
1166
1310
 
1167
1311
  ##
1168
- # Runs before every test after setup. Use this to refactor test
1169
- # initialization.
1170
-
1171
- def after_setup; end
1172
-
1173
- ##
1174
- # Runs before every setup. Use this to refactor test initialization.
1175
-
1176
- def before_setup; end
1177
-
1178
- ##
1179
- # Runs after every test. Use this to refactor test cleanup.
1312
+ # Runs after every test. Use this to clean up after each test
1313
+ # run.
1180
1314
 
1181
1315
  def teardown; end
1182
1316
 
1183
- ##
1184
- # Runs after every test before teardown. Use this to refactor test
1185
- # initialization.
1186
-
1187
- def before_teardown; end
1188
-
1189
- ##
1190
- # Runs after every teardown. Use this to refactor test cleanup.
1191
-
1192
- def after_teardown; end
1193
-
1194
1317
  def self.reset_setup_teardown_hooks # :nodoc:
1318
+ # also deprecated... believe it.
1195
1319
  @setup_hooks = []
1196
1320
  @teardown_hooks = []
1197
1321
  end
1198
1322
 
1199
1323
  reset_setup_teardown_hooks
1200
1324
 
1201
- ##
1202
- # Adds a block of code that will be executed before every TestCase is
1203
- # run. Equivalent to +setup+, but usable multiple times and without
1204
- # re-opening any classes.
1205
- #
1206
- # All of the setup hooks will run in order after the +setup+ method, if
1207
- # one is defined.
1208
- #
1209
- # The argument can be any object that responds to #call or a block.
1210
- # That means that this call,
1211
- #
1212
- # MiniTest::Unit::TestCase.add_setup_hook { puts "foo" }
1213
- #
1214
- # ... is equivalent to:
1215
- #
1216
- # module MyTestSetup
1217
- # def self.call
1218
- # puts "foo"
1219
- # end
1220
- # end
1221
- #
1222
- # MiniTest::Unit::TestCase.add_setup_hook MyTestSetup
1223
- #
1224
- # The blocks passed to +add_setup_hook+ take an optional parameter that
1225
- # will be the TestCase instance that is executing the block.
1226
-
1227
- def self.add_setup_hook arg=nil, &block
1228
- hook = arg || block
1229
- @setup_hooks << hook
1230
- end
1231
-
1232
- def self.setup_hooks # :nodoc:
1233
- if superclass.respond_to? :setup_hooks then
1234
- superclass.setup_hooks
1235
- else
1236
- []
1237
- end + @setup_hooks
1238
- end
1239
-
1240
- def run_setup_hooks # :nodoc:
1241
- self.class.setup_hooks.each do |hook|
1242
- if hook.respond_to?(:arity) && hook.arity == 1
1243
- hook.call(self)
1244
- else
1245
- hook.call
1246
- end
1247
- end
1248
- end
1249
-
1250
- ##
1251
- # Adds a block of code that will be executed after every TestCase is
1252
- # run. Equivalent to +teardown+, but usable multiple times and without
1253
- # re-opening any classes.
1254
- #
1255
- # All of the teardown hooks will run in reverse order after the
1256
- # +teardown+ method, if one is defined.
1257
- #
1258
- # The argument can be any object that responds to #call or a block.
1259
- # That means that this call,
1260
- #
1261
- # MiniTest::Unit::TestCase.add_teardown_hook { puts "foo" }
1262
- #
1263
- # ... is equivalent to:
1264
- #
1265
- # module MyTestTeardown
1266
- # def self.call
1267
- # puts "foo"
1268
- # end
1269
- # end
1270
- #
1271
- # MiniTest::Unit::TestCase.add_teardown_hook MyTestTeardown
1272
- #
1273
- # The blocks passed to +add_teardown_hook+ take an optional parameter
1274
- # that will be the TestCase instance that is executing the block.
1275
-
1276
- def self.add_teardown_hook arg=nil, &block
1277
- hook = arg || block
1278
- @teardown_hooks << hook
1279
- end
1280
-
1281
- def self.teardown_hooks # :nodoc:
1282
- if superclass.respond_to? :teardown_hooks then
1283
- superclass.teardown_hooks
1284
- else
1285
- []
1286
- end + @teardown_hooks
1287
- end
1288
-
1289
- def run_teardown_hooks # :nodoc:
1290
- self.class.teardown_hooks.reverse.each do |hook|
1291
- if hook.respond_to?(:arity) && hook.arity == 1
1292
- hook.call(self)
1293
- else
1294
- hook.call
1295
- end
1296
- end
1297
- end
1298
-
1299
1325
  include MiniTest::Assertions
1300
1326
  end # class TestCase
1301
1327
  end # class Unit
1302
1328
  end # module MiniTest
1303
1329
 
1304
- Minitest = MiniTest # because ugh... I typo this all the time
1330
+ Minitest = MiniTest # :nodoc: because ugh... I typo this all the time
1305
1331
 
1306
1332
  if $DEBUG then
1307
1333
  module Test # :nodoc:
@@ -2,25 +2,29 @@ require 'tempfile'
2
2
  require 'stringio'
3
3
  require 'minitest/autorun'
4
4
 
5
+ class MiniTest::Unit::TestCase
6
+ def clean s
7
+ s.gsub(/^ {6}/, '')
8
+ end
9
+ end
10
+
5
11
  class MetaMetaMetaTestCase < MiniTest::Unit::TestCase
6
- def assert_report expected = nil
7
- expected ||= <<-EOM.gsub(/^ {6}/, '')
8
- Run options: --seed 42
12
+ def assert_report expected, flags = %w[--seed 42]
13
+ header = clean <<-EOM
14
+ Run options: #{flags.map { |s| s =~ /\|/ ? s.inspect : s }.join " "}
9
15
 
10
16
  # Running tests:
11
17
 
12
- .
13
-
14
- Finished tests in 0.00
15
-
16
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
17
18
  EOM
18
19
 
20
+ @tu.run flags
21
+
19
22
  output = @output.string.dup
20
23
  output.sub!(/Finished tests in .*/, "Finished tests in 0.00")
21
24
  output.sub!(/Loaded suite .*/, 'Loaded suite blah')
22
25
 
23
26
  output.gsub!(/ = \d+.\d\d s = /, ' = 0.00 s = ')
27
+ output.gsub!(/0x[A-Fa-f0-9]+/, '0xXXX')
24
28
 
25
29
  if windows? then
26
30
  output.gsub!(/\[(?:[A-Za-z]:)?[^\]:]+:\d+\]/, '[FILE:LINE]')
@@ -30,7 +34,7 @@ class MetaMetaMetaTestCase < MiniTest::Unit::TestCase
30
34
  output.gsub!(/^(\s+)[^:]+:\d+:in/, '\1FILE:LINE:in')
31
35
  end
32
36
 
33
- assert_equal(expected, output)
37
+ assert_equal header + expected, output
34
38
  end
35
39
 
36
40
  def setup
@@ -630,20 +630,20 @@ class TestMeta < MiniTest::Unit::TestCase
630
630
  def test_structure
631
631
  x, y, z, * = util_structure
632
632
 
633
- assert_equal "top-level thingy", x.to_s
634
- assert_equal "top-level thingy::inner thingy", y.to_s
633
+ assert_equal "top-level thingy", x.to_s
634
+ assert_equal "top-level thingy::inner thingy", y.to_s
635
635
  assert_equal "top-level thingy::inner thingy::very inner thingy", z.to_s
636
636
 
637
- assert_equal "top-level thingy", x.desc
638
- assert_equal "inner thingy", y.desc
637
+ assert_equal "top-level thingy", x.desc
638
+ assert_equal "inner thingy", y.desc
639
639
  assert_equal "very inner thingy", z.desc
640
640
 
641
- top_methods = %w(test_0001_top-level-it)
642
- inner_methods1 = %w(test_0001_inner-it)
641
+ top_methods = %w(setup teardown test_0001_top-level-it)
642
+ inner_methods1 = %w(setup teardown test_0001_inner-it)
643
643
  inner_methods2 = inner_methods1 +
644
644
  %w(test_0002_anonymous test_0003_anonymous)
645
645
 
646
- assert_equal top_methods, x.instance_methods(false).sort.map(&:to_s)
646
+ assert_equal top_methods, x.instance_methods(false).sort.map(&:to_s)
647
647
  assert_equal inner_methods1, y.instance_methods(false).sort.map(&:to_s)
648
648
  assert_equal inner_methods2, z.instance_methods(false).sort.map(&:to_s)
649
649
  end
@@ -651,13 +651,18 @@ class TestMeta < MiniTest::Unit::TestCase
651
651
  def test_setup_teardown_behavior
652
652
  _, _, z, before_list, after_list = util_structure
653
653
 
654
- tc = z.new(nil)
654
+ @tu = MiniTest::Unit.new
655
+ @output = StringIO.new("")
656
+ MiniTest::Unit.runner = nil # protect the outer runner from the inner tests
657
+ MiniTest::Unit.output = @output
655
658
 
656
- tc.run_setup_hooks
657
- tc.run_teardown_hooks
659
+ tc = z.new :test_0002_anonymous
660
+ tc.run @tu
658
661
 
659
662
  assert_equal [1, 2, 3], before_list
660
663
  assert_equal [3, 2, 1], after_list
664
+ ensure
665
+ MiniTest::Unit.output = $stdout
661
666
  end
662
667
 
663
668
  def test_children
@@ -689,7 +694,7 @@ class TestMeta < MiniTest::Unit::TestCase
689
694
  z = describe "second thingy" do end
690
695
  end
691
696
 
692
- test_methods = ['test_0001_top level it', 'test_0002_не латинские буквы-и-спецсимволы&いった α, β, γ, δ, ε hello!!! world'].sort
697
+ test_methods = ['test_0001_top level it', 'test_0002_не латинские буквы-и-спецсимволы&いった α, β, γ, δ, ε hello!!! world'].sort
693
698
 
694
699
  assert_equal test_methods, [x1, x2]
695
700
  assert_equal test_methods,
@@ -6,8 +6,8 @@ class AnError < StandardError; include MyModule; end
6
6
  class ImmutableString < String; def inspect; super.freeze; end; end
7
7
 
8
8
  class TestMiniTestUnit < MetaMetaMetaTestCase
9
- pwd = Pathname.new(File.expand_path(Dir.pwd))
10
- basedir = Pathname.new(File.expand_path("lib/minitest")) + 'mini'
9
+ pwd = Pathname.new File.expand_path Dir.pwd
10
+ basedir = Pathname.new(File.expand_path "lib/minitest") + 'mini'
11
11
  basedir = basedir.relative_path_from(pwd).to_s
12
12
  MINITEST_BASE_DIR = basedir[/\A\./] ? basedir : "./#{basedir}"
13
13
  BT_MIDDLE = ["#{MINITEST_BASE_DIR}/test.rb:161:in `each'",
@@ -145,12 +145,12 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
145
145
  bt = util_expand_bt bt
146
146
 
147
147
  ex = ["-e:1"]
148
- fu = MiniTest::filter_backtrace(bt)
148
+ fu = MiniTest::filter_backtrace bt
149
149
  assert_equal ex, fu
150
150
  end
151
151
 
152
152
  def test_run_test
153
- tc = Class.new(MiniTest::Unit::TestCase) do
153
+ Class.new MiniTest::Unit::TestCase do
154
154
  attr_reader :foo
155
155
 
156
156
  def run_test name
@@ -164,25 +164,19 @@ class TestMiniTestUnit < MetaMetaMetaTestCase
164
164
  end
165
165
  end
166
166
 
167
- Object.const_set(:ATestCase, tc)
168
-
169
- @tu.run %w[--seed 42]
170
-
171
- expected = "Run options: --seed 42
172
-
173
- # Running tests:
167
+ expected = clean <<-EOM
168
+ .
174
169
 
175
- .
170
+ Finished tests in 0.00
176
171
 
177
- Finished tests in 0.00
172
+ 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
173
+ EOM
178
174
 
179
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
180
- "
181
175
  assert_report expected
182
176
  end
183
177
 
184
178
  def test_run_error
185
- tc = Class.new(MiniTest::Unit::TestCase) do
179
+ Class.new MiniTest::Unit::TestCase do
186
180
  def test_something
187
181
  assert true
188
182
  end
@@ -192,21 +186,13 @@ Finished tests in 0.00
192
186
  end
193
187
  end
194
188
 
195
- Object.const_set(:ATestCase, tc)
196
-
197
- @tu.run %w[--seed 42]
198
-
199
- expected = <<-EOM.gsub(/^ {6}/, '')
200
- Run options: --seed 42
201
-
202
- # Running tests:
203
-
189
+ expected = clean <<-EOM
204
190
  E.
205
191
 
206
192
  Finished tests in 0.00
207
193
 
208
194
  1) Error:
209
- test_error(ATestCase):
195
+ test_error(#<Class:0xXXX>):
210
196
  RuntimeError: unhandled exception
211
197
  FILE:LINE:in `test_error'
212
198
 
@@ -217,7 +203,7 @@ Finished tests in 0.00
217
203
  end
218
204
 
219
205
  def test_run_error_teardown
220
- tc = Class.new(MiniTest::Unit::TestCase) do
206
+ Class.new MiniTest::Unit::TestCase do
221
207
  def test_something
222
208
  assert true
223
209
  end
@@ -227,30 +213,24 @@ Finished tests in 0.00
227
213
  end
228
214
  end
229
215
 
230
- Object.const_set(:ATestCase, tc)
231
-
232
- @tu.run %w[--seed 42]
233
-
234
- expected = "Run options: --seed 42
216
+ expected = clean <<-EOM
217
+ E
235
218
 
236
- # Running tests:
237
-
238
- E
219
+ Finished tests in 0.00
239
220
 
240
- Finished tests in 0.00
221
+ 1) Error:
222
+ test_something(#<Class:0xXXX>):
223
+ RuntimeError: unhandled exception
224
+ FILE:LINE:in `teardown'
241
225
 
242
- 1) Error:
243
- test_something(ATestCase):
244
- RuntimeError: unhandled exception
245
- FILE:LINE:in `teardown'
226
+ 1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
227
+ EOM
246
228
 
247
- 1 tests, 1 assertions, 0 failures, 1 errors, 0 skips
248
- "
249
229
  assert_report expected
250
230
  end
251
231
 
252
232
  def test_run_failing
253
- tc = Class.new(MiniTest::Unit::TestCase) do
233
+ Class.new MiniTest::Unit::TestCase do
254
234
  def test_something
255
235
  assert true
256
236
  end
@@ -260,29 +240,23 @@ RuntimeError: unhandled exception
260
240
  end
261
241
  end
262
242
 
263
- Object.const_set(:ATestCase, tc)
264
-
265
- @tu.run %w[--seed 42]
243
+ expected = clean <<-EOM
244
+ F.
266
245
 
267
- expected = "Run options: --seed 42
268
-
269
- # Running tests:
270
-
271
- F.
246
+ Finished tests in 0.00
272
247
 
273
- Finished tests in 0.00
248
+ 1) Failure:
249
+ test_failure(#<Class:0xXXX>) [FILE:LINE]:
250
+ Failed assertion, no message given.
274
251
 
275
- 1) Failure:
276
- test_failure(ATestCase) [FILE:LINE]:
277
- Failed assertion, no message given.
252
+ 2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
253
+ EOM
278
254
 
279
- 2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
280
- "
281
255
  assert_report expected
282
256
  end
283
257
 
284
258
  def test_run_failing_filtered
285
- tc = Class.new(MiniTest::Unit::TestCase) do
259
+ Class.new MiniTest::Unit::TestCase do
286
260
  def test_something
287
261
  assert true
288
262
  end
@@ -292,39 +266,37 @@ Failed assertion, no message given.
292
266
  end
293
267
  end
294
268
 
295
- Object.const_set(:ATestCase, tc)
269
+ expected = clean <<-EOM
270
+ .
296
271
 
297
- @tu.run %w[--name /some|thing/ --seed 42]
298
-
299
- expected = "Run options: --name \"/some|thing/\" --seed 42
300
-
301
- # Running tests:
302
-
303
- .
272
+ Finished tests in 0.00
304
273
 
305
- Finished tests in 0.00
274
+ 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
275
+ EOM
306
276
 
307
- 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
308
- "
309
- assert_report expected
277
+ assert_report expected, %w[--name /some|thing/ --seed 42]
310
278
  end
311
279
 
312
280
  def test_run_passing
313
- tc = Class.new(MiniTest::Unit::TestCase) do
281
+ Class.new MiniTest::Unit::TestCase do
314
282
  def test_something
315
283
  assert true
316
284
  end
317
285
  end
318
286
 
319
- Object.const_set(:ATestCase, tc)
287
+ expected = clean <<-EOM
288
+ .
320
289
 
321
- @tu.run %w[--seed 42]
290
+ Finished tests in 0.00
322
291
 
323
- assert_report
292
+ 1 tests, 1 assertions, 0 failures, 0 errors, 0 skips
293
+ EOM
294
+
295
+ assert_report expected
324
296
  end
325
297
 
326
298
  def test_run_skip
327
- tc = Class.new(MiniTest::Unit::TestCase) do
299
+ Class.new MiniTest::Unit::TestCase do
328
300
  def test_something
329
301
  assert true
330
302
  end
@@ -334,25 +306,19 @@ Finished tests in 0.00
334
306
  end
335
307
  end
336
308
 
337
- Object.const_set(:ATestCase, tc)
338
-
339
- @tu.run %w[--seed 42]
309
+ expected = clean <<-EOM
310
+ S.
340
311
 
341
- expected = "Run options: --seed 42
342
-
343
- # Running tests:
344
-
345
- S.
312
+ Finished tests in 0.00
346
313
 
347
- Finished tests in 0.00
314
+ 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
315
+ EOM
348
316
 
349
- 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
350
- "
351
317
  assert_report expected
352
318
  end
353
319
 
354
320
  def test_run_skip_verbose
355
- tc = Class.new(MiniTest::Unit::TestCase) do
321
+ Class.new MiniTest::Unit::TestCase do
356
322
  def test_something
357
323
  assert true
358
324
  end
@@ -362,27 +328,21 @@ Finished tests in 0.00
362
328
  end
363
329
  end
364
330
 
365
- Object.const_set(:ATestCase, tc)
331
+ expected = clean <<-EOM
332
+ #<Class:0xXXX>#test_skip = 0.00 s = S
333
+ #<Class:0xXXX>#test_something = 0.00 s = .
366
334
 
367
- @tu.run %w[--seed 42 --verbose]
368
-
369
- expected = "Run options: --seed 42 --verbose
370
-
371
- # Running tests:
372
-
373
- ATestCase#test_skip = 0.00 s = S
374
- ATestCase#test_something = 0.00 s = .
375
335
 
336
+ Finished tests in 0.00
376
337
 
377
- Finished tests in 0.00
338
+ 1) Skipped:
339
+ test_skip(#<Class:0xXXX>) [FILE:LINE]:
340
+ not yet
378
341
 
379
- 1) Skipped:
380
- test_skip(ATestCase) [FILE:LINE]:
381
- not yet
342
+ 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
343
+ EOM
382
344
 
383
- 2 tests, 1 assertions, 0 failures, 0 errors, 1 skips
384
- "
385
- assert_report expected
345
+ assert_report expected, %w[--seed 42 --verbose]
386
346
  end
387
347
 
388
348
  def test_default_runner_is_minitest_unit
@@ -390,18 +350,15 @@ not yet
390
350
  end
391
351
 
392
352
  def test_run_with_other_runner
393
-
394
- runner = Class.new(MiniTest::Unit) do
395
- # Run once before each suite
396
- def _run_suite(suite, type)
397
- begin
398
- suite.before_suite
399
- super(suite, type)
400
- end
353
+ MiniTest::Unit.runner = Class.new MiniTest::Unit do
354
+ def _run_suite suite, type
355
+ suite.before_suite # Run once before each suite
356
+ super suite, type
401
357
  end
402
- end
358
+ end.new
403
359
 
404
- tc = Class.new(MiniTest::Unit::TestCase) do
360
+ Class.new MiniTest::Unit::TestCase do
361
+ def self.name; "wacky!" end
405
362
 
406
363
  def self.before_suite
407
364
  MiniTest::Unit.output.puts "Running #{self.name} tests"
@@ -417,22 +374,15 @@ not yet
417
374
  end
418
375
  end
419
376
 
420
- Object.const_set(:ATestCase, tc)
421
- MiniTest::Unit.runner = runner.new
422
- @tu.run %w[--seed 42]
423
-
424
- # We should only see 'running ATestCase tests' once
425
- expected = "Run options: --seed 42
377
+ expected = clean <<-EOM
378
+ Running wacky! tests
379
+ ..
426
380
 
427
- # Running tests:
428
-
429
- Running ATestCase tests
430
- ..
381
+ Finished tests in 0.00
431
382
 
432
- Finished tests in 0.00
383
+ 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
384
+ EOM
433
385
 
434
- 2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
435
- "
436
386
  assert_report expected
437
387
  end
438
388
 
@@ -448,7 +398,6 @@ Finished tests in 0.00
448
398
  end
449
399
 
450
400
  yield
451
-
452
401
  ensure
453
402
  Class.class_eval do
454
403
  alias inherited inherited_without_hacks
@@ -471,7 +420,7 @@ Finished tests in 0.00
471
420
 
472
421
  def test_before_setup
473
422
  call_order = []
474
- Class.new(MiniTest::Unit::TestCase) do
423
+ Class.new MiniTest::Unit::TestCase do
475
424
  define_method :setup do
476
425
  super()
477
426
  call_order << :setup
@@ -490,9 +439,31 @@ Finished tests in 0.00
490
439
  assert_equal expected, call_order
491
440
  end
492
441
 
442
+ def test_passed_eh_teardown_good
443
+ test_class = Class.new MiniTest::Unit::TestCase do
444
+ def teardown; assert true; end
445
+ def test_omg; assert true; end
446
+ end
447
+
448
+ test = test_class.new :test_omg
449
+ test.run @tu
450
+ assert test.passed?
451
+ end
452
+
453
+ def test_passed_eh_teardown_flunked
454
+ test_class = Class.new MiniTest::Unit::TestCase do
455
+ def teardown; flunk; end
456
+ def test_omg; assert true; end
457
+ end
458
+
459
+ test = test_class.new :test_omg
460
+ test.run @tu
461
+ refute test.passed?
462
+ end
463
+
493
464
  def test_after_teardown
494
465
  call_order = []
495
- Class.new(MiniTest::Unit::TestCase) do
466
+ Class.new MiniTest::Unit::TestCase do
496
467
  define_method :teardown do
497
468
  super()
498
469
  call_order << :teardown
@@ -513,7 +484,7 @@ Finished tests in 0.00
513
484
 
514
485
  def test_all_teardowns_are_guaranteed_to_run
515
486
  call_order = []
516
- Class.new(MiniTest::Unit::TestCase) do
487
+ Class.new MiniTest::Unit::TestCase do
517
488
  define_method :after_teardown do
518
489
  super()
519
490
  call_order << :after_teardown
@@ -541,91 +512,15 @@ Finished tests in 0.00
541
512
  assert_equal expected, call_order
542
513
  end
543
514
 
544
- def test_setup_hooks
545
- call_order = []
546
-
547
- tc = Class.new(MiniTest::Spec) do
548
- define_method :setup do
549
- super()
550
- call_order << :method
551
- end
552
-
553
- define_method :test2 do
554
- call_order << :test2
555
- end
556
-
557
- define_method :test1 do
558
- call_order << :test1
559
- end
560
- end
561
-
562
- tc.add_setup_hook lambda { call_order << :proc }
563
-
564
- argument = nil
565
-
566
- tc.add_setup_hook do |arg|
567
- argument = arg
568
- call_order << :block
569
- end
570
-
571
- @tu.run %w[--seed 42]
572
-
573
- assert_kind_of tc, argument
574
-
575
- expected = [:method, :proc, :block, :test1,
576
- :method, :proc, :block, :test2]
577
-
578
- assert_equal expected, call_order
579
- end
580
-
581
- def test_teardown_hooks
515
+ def test_setup_and_teardown_survive_inheritance
582
516
  call_order = []
583
517
 
584
- tc = Class.new(MiniTest::Spec) do
585
- define_method :teardown do
586
- super()
587
- call_order << :method
588
- end
589
-
590
- define_method :test2 do
591
- call_order << :test2
592
- end
593
-
594
- define_method :test1 do
595
- call_order << :test1
596
- end
597
- end
598
-
599
- tc.add_teardown_hook lambda { call_order << :proc }
600
-
601
- argument = nil
602
-
603
- tc.add_teardown_hook do |arg|
604
- argument = arg
605
- call_order << :block
606
- end
607
-
608
- @tu.run %w[--seed 42]
609
-
610
- assert_kind_of tc, argument
611
-
612
- expected = [:test1, :block, :proc, :method,
613
- :test2, :block, :proc, :method]
614
-
615
- assert_equal expected, call_order
616
- end
617
-
618
- def test_setup_and_teardown_hooks_survive_inheritance
619
- call_order = []
620
-
621
- parent = Class.new(MiniTest::Spec) do
622
- define_method :setup do
623
- super()
518
+ parent = Class.new MiniTest::Spec do
519
+ before do
624
520
  call_order << :setup_method
625
521
  end
626
522
 
627
- define_method :teardown do
628
- super()
523
+ after do
629
524
  call_order << :teardown_method
630
525
  end
631
526
 
@@ -634,19 +529,12 @@ Finished tests in 0.00
634
529
  end
635
530
  end
636
531
 
637
- parent.add_setup_hook { call_order << :setup_hook }
638
- parent.add_teardown_hook { call_order << :teardown_hook }
639
-
640
532
  _ = Class.new parent
641
533
 
642
- parent.add_setup_hook { call_order << :setup_after }
643
- parent.add_teardown_hook { call_order << :teardown_after }
644
-
645
534
  @tu.run %w[--seed 42]
646
535
 
647
536
  # Once for the parent class, once for the child
648
- expected = [:setup_method, :setup_hook, :setup_after, :test,
649
- :teardown_after, :teardown_hook, :teardown_method] * 2
537
+ expected = [:setup_method, :test, :teardown_method] * 2
650
538
 
651
539
  assert_equal expected, call_order
652
540
  end
@@ -676,7 +564,6 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
676
564
  def teardown
677
565
  assert_equal(@assertion_count, @tc._assertions,
678
566
  "expected #{@assertion_count} assertions to be fired during the test, not #{@tc._assertions}") if @tc._assertions
679
- Object.send :remove_const, :ATestCase if defined? ATestCase
680
567
  end
681
568
 
682
569
  def test_assert
@@ -699,7 +586,7 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
699
586
 
700
587
  def test_assert_block
701
588
  exp = ["NOTE: MiniTest::Unit::TestCase#assert_block is deprecated,",
702
- "use assert. It will be removed on or after 2012-06-01."].join " "
589
+ "use assert. It will be removed on 2013-01-01."].join " "
703
590
 
704
591
  out, err = capture_io do
705
592
  @tc.assert_block do
@@ -1097,12 +984,14 @@ class TestMiniTestUnitTestCase < MiniTest::Unit::TestCase
1097
984
  end
1098
985
  end
1099
986
 
1100
- expected = "[RuntimeError] exception expected, not
1101
- Class: <SyntaxError>
1102
- Message: <\"icky\">
1103
- ---Backtrace---
1104
- FILE:LINE:in `test_assert_raises_triggered_different'
1105
- ---------------"
987
+ expected = clean <<-EOM.chomp
988
+ [RuntimeError] exception expected, not
989
+ Class: <SyntaxError>
990
+ Message: <\"icky\">
991
+ ---Backtrace---
992
+ FILE:LINE:in `test_assert_raises_triggered_different'
993
+ ---------------
994
+ EOM
1106
995
 
1107
996
  actual = e.message.gsub(/^.+:\d+/, 'FILE:LINE')
1108
997
  actual.gsub!(/block \(\d+ levels\) in /, '') if RUBY_VERSION >= '1.9.0'
@@ -1117,7 +1006,7 @@ FILE:LINE:in `test_assert_raises_triggered_different'
1117
1006
  end
1118
1007
  end
1119
1008
 
1120
- expected = <<-EOM.gsub(/^ {6}/, '').chomp
1009
+ expected = clean <<-EOM
1121
1010
  XXX.
1122
1011
  [RuntimeError] exception expected, not
1123
1012
  Class: <SyntaxError>
@@ -1130,7 +1019,7 @@ FILE:LINE:in `test_assert_raises_triggered_different'
1130
1019
  actual = e.message.gsub(/^.+:\d+/, 'FILE:LINE')
1131
1020
  actual.gsub!(/block \(\d+ levels\) in /, '') if RUBY_VERSION >= '1.9.0'
1132
1021
 
1133
- assert_equal expected, actual
1022
+ assert_equal expected.chomp, actual
1134
1023
  end
1135
1024
 
1136
1025
  def test_assert_raises_triggered_none
@@ -1164,12 +1053,14 @@ FILE:LINE:in `test_assert_raises_triggered_different'
1164
1053
  end
1165
1054
  end
1166
1055
 
1167
- expected = "[StandardError] exception expected, not
1168
- Class: <AnError>
1169
- Message: <\"AnError\">
1170
- ---Backtrace---
1171
- FILE:LINE:in `test_assert_raises_triggered_subclass'
1172
- ---------------"
1056
+ expected = clean <<-EOM.chomp
1057
+ [StandardError] exception expected, not
1058
+ Class: <AnError>
1059
+ Message: <\"AnError\">
1060
+ ---Backtrace---
1061
+ FILE:LINE:in `test_assert_raises_triggered_subclass'
1062
+ ---------------
1063
+ EOM
1173
1064
 
1174
1065
  actual = e.message.gsub(/^.+:\d+/, 'FILE:LINE')
1175
1066
  actual.gsub!(/block \(\d+ levels\) in /, '') if RUBY_VERSION >= '1.9.0'
@@ -1248,14 +1139,14 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1248
1139
  end
1249
1140
 
1250
1141
  def test_assert_throws
1251
- @tc.assert_throws(:blah) do
1142
+ @tc.assert_throws :blah do
1252
1143
  throw :blah
1253
1144
  end
1254
1145
  end
1255
1146
 
1256
1147
  def test_assert_throws_different
1257
1148
  util_assert_triggered 'Expected :blah to have been thrown, not :not_blah.' do
1258
- @tc.assert_throws(:blah) do
1149
+ @tc.assert_throws :blah do
1259
1150
  throw :not_blah
1260
1151
  end
1261
1152
  end
@@ -1263,7 +1154,7 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1263
1154
 
1264
1155
  def test_assert_throws_unthrown
1265
1156
  util_assert_triggered 'Expected :blah to have been thrown.' do
1266
- @tc.assert_throws(:blah) do
1157
+ @tc.assert_throws :blah do
1267
1158
  # do nothing
1268
1159
  end
1269
1160
  end
@@ -1308,21 +1199,13 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1308
1199
  assert_empty asserts.map { |n| n.sub(/^assert/, 'refute') } - refutes
1309
1200
  end
1310
1201
 
1311
- def test_class_inherited
1312
- @assertion_count = 0
1313
-
1314
- Object.const_set(:ATestCase, Class.new(MiniTest::Unit::TestCase))
1315
-
1316
- assert_equal [ATestCase], MiniTest::Unit::TestCase.test_suites
1317
- end
1318
-
1319
1202
  def test_class_test_suites
1320
1203
  @assertion_count = 0
1321
1204
 
1322
- Object.const_set(:ATestCase, Class.new(MiniTest::Unit::TestCase))
1205
+ tc = Class.new(MiniTest::Unit::TestCase)
1323
1206
 
1324
1207
  assert_equal 1, MiniTest::Unit::TestCase.test_suites.size
1325
- assert_equal [ATestCase], MiniTest::Unit::TestCase.test_suites
1208
+ assert_equal [tc], MiniTest::Unit::TestCase.test_suites
1326
1209
  end
1327
1210
 
1328
1211
  def test_expectation
@@ -1558,7 +1441,7 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1558
1441
  def test_test_methods_random
1559
1442
  @assertion_count = 0
1560
1443
 
1561
- sample_test_case = Class.new(MiniTest::Unit::TestCase) do
1444
+ sample_test_case = Class.new MiniTest::Unit::TestCase do
1562
1445
  def test_test1; assert "does not matter" end
1563
1446
  def test_test2; assert "does not matter" end
1564
1447
  def test_test3; assert "does not matter" end
@@ -1572,7 +1455,7 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1572
1455
  def test_test_methods_sorted
1573
1456
  @assertion_count = 0
1574
1457
 
1575
- sample_test_case = Class.new(MiniTest::Unit::TestCase) do
1458
+ sample_test_case = Class.new MiniTest::Unit::TestCase do
1576
1459
  def self.test_order; :sorted end
1577
1460
  def test_test3; assert "does not matter" end
1578
1461
  def test_test2; assert "does not matter" end
@@ -1606,7 +1489,7 @@ FILE:LINE:in `test_assert_raises_triggered_subclass'
1606
1489
  end
1607
1490
 
1608
1491
  def util_assert_triggered expected, klass = MiniTest::Assertion
1609
- e = assert_raises(klass) do
1492
+ e = assert_raises klass do
1610
1493
  yield
1611
1494
  end
1612
1495
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 11
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
- - 2
8
+ - 3
9
9
  - 0
10
- version: 3.2.0
10
+ version: 3.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2012-06-26 00:00:00 Z
39
+ date: 2012-07-27 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rdoc
metadata.gz.sig CHANGED
Binary file