spec 5.0.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +7 -0
  2. data/.autotest +34 -0
  3. data/.gitignore +3 -0
  4. data/History.txt +911 -0
  5. data/Manifest.txt +26 -0
  6. data/README.txt +497 -0
  7. data/Rakefile +214 -0
  8. data/design_rationale.rb +52 -0
  9. data/lib/hoe/minitest.rb +26 -0
  10. data/lib/minitest/assertions.rb +649 -0
  11. data/lib/minitest/autorun.rb +12 -0
  12. data/lib/minitest/benchmark.rb +423 -0
  13. data/lib/minitest/expectations.rb +268 -0
  14. data/lib/minitest/hell.rb +11 -0
  15. data/lib/minitest/mock.rb +220 -0
  16. data/lib/minitest/parallel_each.rb +120 -0
  17. data/lib/minitest/pride.rb +4 -0
  18. data/lib/minitest/pride_plugin.rb +143 -0
  19. data/lib/minitest/spec.rb +292 -0
  20. data/lib/minitest/test.rb +272 -0
  21. data/lib/minitest/unit.rb +45 -0
  22. data/lib/minitest.rb +839 -0
  23. data/lib/spec.rb +3 -0
  24. data/readme.md +7 -0
  25. data/release_notes.md +49 -0
  26. data/spec.gemspec +36 -0
  27. data/test/manual/appium.rb +14 -0
  28. data/test/manual/appium_after_last.rb +24 -0
  29. data/test/manual/appium_before_first.rb +23 -0
  30. data/test/manual/assert.rb +61 -0
  31. data/test/manual/before_first_0.rb +27 -0
  32. data/test/manual/before_first_1.rb +29 -0
  33. data/test/manual/debug.rb +37 -0
  34. data/test/manual/do_end.rb +31 -0
  35. data/test/manual/raise.rb +61 -0
  36. data/test/manual/run2.rb +74 -0
  37. data/test/manual/run3.rb +91 -0
  38. data/test/manual/setup.rb +13 -0
  39. data/test/manual/simple.rb +19 -0
  40. data/test/manual/simple2.rb +20 -0
  41. data/test/manual/t.rb +11 -0
  42. data/test/manual/trace.rb +19 -0
  43. data/test/manual/trace2.rb +15 -0
  44. data/test/minitest/metametameta.rb +78 -0
  45. data/test/minitest/test_helper.rb +20 -0
  46. data/test/minitest/test_minitest_benchmark.rb +131 -0
  47. data/test/minitest/test_minitest_mock.rb +490 -0
  48. data/test/minitest/test_minitest_reporter.rb +270 -0
  49. data/test/minitest/test_minitest_spec.rb +794 -0
  50. data/test/minitest/test_minitest_unit.rb +1846 -0
  51. metadata +147 -0
@@ -0,0 +1,423 @@
1
+ require 'minitest/unit'
2
+ require 'minitest/spec'
3
+
4
+ module Minitest
5
+ ##
6
+ # Subclass Benchmark to create your own benchmark runs. Methods
7
+ # starting with "bench_" get executed on a per-class.
8
+ #
9
+ # See Minitest::Assertions
10
+
11
+ class Benchmark < Test
12
+ def self.io # :nodoc:
13
+ @io
14
+ end
15
+
16
+ def io # :nodoc:
17
+ self.class.io
18
+ end
19
+
20
+ def self.run reporter, options = {} # :nodoc:
21
+ # NOTE: this is truly horrible... but I don't see a way around this ATM.
22
+ @io = reporter.reporters.first.io
23
+ super
24
+ end
25
+
26
+ def self.runnable_methods # :nodoc:
27
+ methods_matching(/^bench_/)
28
+ end
29
+
30
+ ##
31
+ # Returns a set of ranges stepped exponentially from +min+ to
32
+ # +max+ by powers of +base+. Eg:
33
+ #
34
+ # bench_exp(2, 16, 2) # => [2, 4, 8, 16]
35
+
36
+ def self.bench_exp min, max, base = 10
37
+ min = (Math.log10(min) / Math.log10(base)).to_i
38
+ max = (Math.log10(max) / Math.log10(base)).to_i
39
+
40
+ (min..max).map { |m| base ** m }.to_a
41
+ end
42
+
43
+ ##
44
+ # Returns a set of ranges stepped linearly from +min+ to +max+ by
45
+ # +step+. Eg:
46
+ #
47
+ # bench_linear(20, 40, 10) # => [20, 30, 40]
48
+
49
+ def self.bench_linear min, max, step = 10
50
+ (min..max).step(step).to_a
51
+ rescue LocalJumpError # 1.8.6
52
+ r = []; (min..max).step(step) { |n| r << n }; r
53
+ end
54
+
55
+ ##
56
+ # Specifies the ranges used for benchmarking for that class.
57
+ # Defaults to exponential growth from 1 to 10k by powers of 10.
58
+ # Override if you need different ranges for your benchmarks.
59
+ #
60
+ # See also: ::bench_exp and ::bench_linear.
61
+
62
+ def self.bench_range
63
+ bench_exp 1, 10_000
64
+ end
65
+
66
+ ##
67
+ # Runs the given +work+, gathering the times of each run. Range
68
+ # and times are then passed to a given +validation+ proc. Outputs
69
+ # the benchmark name and times in tab-separated format, making it
70
+ # easy to paste into a spreadsheet for graphing or further
71
+ # analysis.
72
+ #
73
+ # Ranges are specified by ::bench_range.
74
+ #
75
+ # Eg:
76
+ #
77
+ # def bench_algorithm
78
+ # validation = proc { |x, y| ... }
79
+ # assert_performance validation do |n|
80
+ # @obj.algorithm(n)
81
+ # end
82
+ # end
83
+
84
+ def assert_performance validation, &work
85
+ range = self.class.bench_range
86
+
87
+ io.print "#{self.name}"
88
+
89
+ times = []
90
+
91
+ range.each do |x|
92
+ GC.start
93
+ t0 = Time.now
94
+ instance_exec(x, &work)
95
+ t = Time.now - t0
96
+
97
+ io.print "\t%9.6f" % t
98
+ times << t
99
+ end
100
+ io.puts
101
+
102
+ validation[range, times]
103
+ end
104
+
105
+ ##
106
+ # Runs the given +work+ and asserts that the times gathered fit to
107
+ # match a constant rate (eg, linear slope == 0) within a given
108
+ # +threshold+. Note: because we're testing for a slope of 0, R^2
109
+ # is not a good determining factor for the fit, so the threshold
110
+ # is applied against the slope itself. As such, you probably want
111
+ # to tighten it from the default.
112
+ #
113
+ # See http://www.graphpad.com/curvefit/goodness_of_fit.htm for
114
+ # more details.
115
+ #
116
+ # Fit is calculated by #fit_linear.
117
+ #
118
+ # Ranges are specified by ::bench_range.
119
+ #
120
+ # Eg:
121
+ #
122
+ # def bench_algorithm
123
+ # assert_performance_constant 0.9999 do |n|
124
+ # @obj.algorithm(n)
125
+ # end
126
+ # end
127
+
128
+ def assert_performance_constant threshold = 0.99, &work
129
+ validation = proc do |range, times|
130
+ a, b, rr = fit_linear range, times
131
+ assert_in_delta 0, b, 1 - threshold
132
+ [a, b, rr]
133
+ end
134
+
135
+ assert_performance validation, &work
136
+ end
137
+
138
+ ##
139
+ # Runs the given +work+ and asserts that the times gathered fit to
140
+ # match a exponential curve within a given error +threshold+.
141
+ #
142
+ # Fit is calculated by #fit_exponential.
143
+ #
144
+ # Ranges are specified by ::bench_range.
145
+ #
146
+ # Eg:
147
+ #
148
+ # def bench_algorithm
149
+ # assert_performance_exponential 0.9999 do |n|
150
+ # @obj.algorithm(n)
151
+ # end
152
+ # end
153
+
154
+ def assert_performance_exponential threshold = 0.99, &work
155
+ assert_performance validation_for_fit(:exponential, threshold), &work
156
+ end
157
+
158
+ ##
159
+ # Runs the given +work+ and asserts that the times gathered fit to
160
+ # match a logarithmic curve within a given error +threshold+.
161
+ #
162
+ # Fit is calculated by #fit_logarithmic.
163
+ #
164
+ # Ranges are specified by ::bench_range.
165
+ #
166
+ # Eg:
167
+ #
168
+ # def bench_algorithm
169
+ # assert_performance_logarithmic 0.9999 do |n|
170
+ # @obj.algorithm(n)
171
+ # end
172
+ # end
173
+
174
+ def assert_performance_logarithmic threshold = 0.99, &work
175
+ assert_performance validation_for_fit(:logarithmic, threshold), &work
176
+ end
177
+
178
+ ##
179
+ # Runs the given +work+ and asserts that the times gathered fit to
180
+ # match a straight line within a given error +threshold+.
181
+ #
182
+ # Fit is calculated by #fit_linear.
183
+ #
184
+ # Ranges are specified by ::bench_range.
185
+ #
186
+ # Eg:
187
+ #
188
+ # def bench_algorithm
189
+ # assert_performance_linear 0.9999 do |n|
190
+ # @obj.algorithm(n)
191
+ # end
192
+ # end
193
+
194
+ def assert_performance_linear threshold = 0.99, &work
195
+ assert_performance validation_for_fit(:linear, threshold), &work
196
+ end
197
+
198
+ ##
199
+ # Runs the given +work+ and asserts that the times gathered curve
200
+ # fit to match a power curve within a given error +threshold+.
201
+ #
202
+ # Fit is calculated by #fit_power.
203
+ #
204
+ # Ranges are specified by ::bench_range.
205
+ #
206
+ # Eg:
207
+ #
208
+ # def bench_algorithm
209
+ # assert_performance_power 0.9999 do |x|
210
+ # @obj.algorithm
211
+ # end
212
+ # end
213
+
214
+ def assert_performance_power threshold = 0.99, &work
215
+ assert_performance validation_for_fit(:power, threshold), &work
216
+ end
217
+
218
+ ##
219
+ # Takes an array of x/y pairs and calculates the general R^2 value.
220
+ #
221
+ # See: http://en.wikipedia.org/wiki/Coefficient_of_determination
222
+
223
+ def fit_error xys
224
+ y_bar = sigma(xys) { |x, y| y } / xys.size.to_f
225
+ ss_tot = sigma(xys) { |x, y| (y - y_bar) ** 2 }
226
+ ss_err = sigma(xys) { |x, y| (yield(x) - y) ** 2 }
227
+
228
+ 1 - (ss_err / ss_tot)
229
+ end
230
+
231
+ ##
232
+ # To fit a functional form: y = ae^(bx).
233
+ #
234
+ # Takes x and y values and returns [a, b, r^2].
235
+ #
236
+ # See: http://mathworld.wolfram.com/LeastSquaresFittingExponential.html
237
+
238
+ def fit_exponential xs, ys
239
+ n = xs.size
240
+ xys = xs.zip(ys)
241
+ sxlny = sigma(xys) { |x,y| x * Math.log(y) }
242
+ slny = sigma(xys) { |x,y| Math.log(y) }
243
+ sx2 = sigma(xys) { |x,y| x * x }
244
+ sx = sigma xs
245
+
246
+ c = n * sx2 - sx ** 2
247
+ a = (slny * sx2 - sx * sxlny) / c
248
+ b = ( n * sxlny - sx * slny ) / c
249
+
250
+ return Math.exp(a), b, fit_error(xys) { |x| Math.exp(a + b * x) }
251
+ end
252
+
253
+ ##
254
+ # To fit a functional form: y = a + b*ln(x).
255
+ #
256
+ # Takes x and y values and returns [a, b, r^2].
257
+ #
258
+ # See: http://mathworld.wolfram.com/LeastSquaresFittingLogarithmic.html
259
+
260
+ def fit_logarithmic xs, ys
261
+ n = xs.size
262
+ xys = xs.zip(ys)
263
+ slnx2 = sigma(xys) { |x,y| Math.log(x) ** 2 }
264
+ slnx = sigma(xys) { |x,y| Math.log(x) }
265
+ sylnx = sigma(xys) { |x,y| y * Math.log(x) }
266
+ sy = sigma(xys) { |x,y| y }
267
+
268
+ c = n * slnx2 - slnx ** 2
269
+ b = ( n * sylnx - sy * slnx ) / c
270
+ a = (sy - b * slnx) / n
271
+
272
+ return a, b, fit_error(xys) { |x| a + b * Math.log(x) }
273
+ end
274
+
275
+
276
+ ##
277
+ # Fits the functional form: a + bx.
278
+ #
279
+ # Takes x and y values and returns [a, b, r^2].
280
+ #
281
+ # See: http://mathworld.wolfram.com/LeastSquaresFitting.html
282
+
283
+ def fit_linear xs, ys
284
+ n = xs.size
285
+ xys = xs.zip(ys)
286
+ sx = sigma xs
287
+ sy = sigma ys
288
+ sx2 = sigma(xs) { |x| x ** 2 }
289
+ sxy = sigma(xys) { |x,y| x * y }
290
+
291
+ c = n * sx2 - sx**2
292
+ a = (sy * sx2 - sx * sxy) / c
293
+ b = ( n * sxy - sx * sy ) / c
294
+
295
+ return a, b, fit_error(xys) { |x| a + b * x }
296
+ end
297
+
298
+ ##
299
+ # To fit a functional form: y = ax^b.
300
+ #
301
+ # Takes x and y values and returns [a, b, r^2].
302
+ #
303
+ # See: http://mathworld.wolfram.com/LeastSquaresFittingPowerLaw.html
304
+
305
+ def fit_power xs, ys
306
+ n = xs.size
307
+ xys = xs.zip(ys)
308
+ slnxlny = sigma(xys) { |x, y| Math.log(x) * Math.log(y) }
309
+ slnx = sigma(xs) { |x | Math.log(x) }
310
+ slny = sigma(ys) { | y| Math.log(y) }
311
+ slnx2 = sigma(xs) { |x | Math.log(x) ** 2 }
312
+
313
+ b = (n * slnxlny - slnx * slny) / (n * slnx2 - slnx ** 2);
314
+ a = (slny - b * slnx) / n
315
+
316
+ return Math.exp(a), b, fit_error(xys) { |x| (Math.exp(a) * (x ** b)) }
317
+ end
318
+
319
+ ##
320
+ # Enumerates over +enum+ mapping +block+ if given, returning the
321
+ # sum of the result. Eg:
322
+ #
323
+ # sigma([1, 2, 3]) # => 1 + 2 + 3 => 7
324
+ # sigma([1, 2, 3]) { |n| n ** 2 } # => 1 + 4 + 9 => 14
325
+
326
+ def sigma enum, &block
327
+ enum = enum.map(&block) if block
328
+ enum.inject { |sum, n| sum + n }
329
+ end
330
+
331
+ ##
332
+ # Returns a proc that calls the specified fit method and asserts
333
+ # that the error is within a tolerable threshold.
334
+
335
+ def validation_for_fit msg, threshold
336
+ proc do |range, times|
337
+ a, b, rr = send "fit_#{msg}", range, times
338
+ assert_operator rr, :>=, threshold
339
+ [a, b, rr]
340
+ end
341
+ end
342
+ end
343
+ end
344
+
345
+ module Minitest
346
+ class BenchSpec < Benchmark
347
+ extend Minitest::Spec::DSL
348
+
349
+ ##
350
+ # This is used to define a new benchmark method. You usually don't
351
+ # use this directly and is intended for those needing to write new
352
+ # performance curve fits (eg: you need a specific polynomial fit).
353
+ #
354
+ # See ::bench_performance_linear for an example of how to use this.
355
+
356
+ def self.bench name, &block
357
+ define_method "bench_#{name.gsub(/\W+/, '_')}", &block
358
+ end
359
+
360
+ ##
361
+ # Specifies the ranges used for benchmarking for that class.
362
+ #
363
+ # bench_range do
364
+ # bench_exp(2, 16, 2)
365
+ # end
366
+ #
367
+ # See Minitest::Benchmark#bench_range for more details.
368
+
369
+ def self.bench_range &block
370
+ return super unless block
371
+
372
+ meta = (class << self; self; end)
373
+ meta.send :define_method, "bench_range", &block
374
+ end
375
+
376
+ ##
377
+ # Create a benchmark that verifies that the performance is linear.
378
+ #
379
+ # describe "my class" do
380
+ # bench_performance_linear "fast_algorithm", 0.9999 do |n|
381
+ # @obj.fast_algorithm(n)
382
+ # end
383
+ # end
384
+
385
+ def self.bench_performance_linear name, threshold = 0.99, &work
386
+ bench name do
387
+ assert_performance_linear threshold, &work
388
+ end
389
+ end
390
+
391
+ ##
392
+ # Create a benchmark that verifies that the performance is constant.
393
+ #
394
+ # describe "my class" do
395
+ # bench_performance_constant "zoom_algorithm!" do |n|
396
+ # @obj.zoom_algorithm!(n)
397
+ # end
398
+ # end
399
+
400
+ def self.bench_performance_constant name, threshold = 0.99, &work
401
+ bench name do
402
+ assert_performance_constant threshold, &work
403
+ end
404
+ end
405
+
406
+ ##
407
+ # Create a benchmark that verifies that the performance is exponential.
408
+ #
409
+ # describe "my class" do
410
+ # bench_performance_exponential "algorithm" do |n|
411
+ # @obj.algorithm(n)
412
+ # end
413
+ # end
414
+
415
+ def self.bench_performance_exponential name, threshold = 0.99, &work
416
+ bench name do
417
+ assert_performance_exponential threshold, &work
418
+ end
419
+ end
420
+ end
421
+
422
+ Minitest::Spec.register_spec_type(/Bench(mark)?$/, Minitest::BenchSpec)
423
+ end
@@ -0,0 +1,268 @@
1
+ ##
2
+ # It's where you hide your "assertions".
3
+
4
+ module Minitest::Expectations
5
+ ##
6
+ # See Minitest::Assertions#assert_empty.
7
+ #
8
+ # collection.must_be_empty
9
+ #
10
+ # :method: must_be_empty
11
+
12
+ infect_an_assertion :assert_empty, :must_be_empty, :unary
13
+
14
+ ##
15
+ # See Minitest::Assertions#assert_equal
16
+ #
17
+ # a.must_equal b
18
+ #
19
+ # :method: must_equal
20
+
21
+ infect_an_assertion :assert_equal, :must_equal
22
+
23
+ ##
24
+ # See Minitest::Assertions#assert_in_delta
25
+ #
26
+ # n.must_be_close_to m [, delta]
27
+ #
28
+ # :method: must_be_close_to
29
+
30
+ infect_an_assertion :assert_in_delta, :must_be_close_to
31
+
32
+ alias :must_be_within_delta :must_be_close_to # :nodoc:
33
+
34
+ ##
35
+ # See Minitest::Assertions#assert_in_epsilon
36
+ #
37
+ # n.must_be_within_epsilon m [, epsilon]
38
+ #
39
+ # :method: must_be_within_epsilon
40
+
41
+ infect_an_assertion :assert_in_epsilon, :must_be_within_epsilon
42
+
43
+ ##
44
+ # See Minitest::Assertions#assert_includes
45
+ #
46
+ # collection.must_include obj
47
+ #
48
+ # :method: must_include
49
+
50
+ infect_an_assertion :assert_includes, :must_include, :reverse
51
+
52
+ ##
53
+ # See Minitest::Assertions#assert_instance_of
54
+ #
55
+ # obj.must_be_instance_of klass
56
+ #
57
+ # :method: must_be_instance_of
58
+
59
+ infect_an_assertion :assert_instance_of, :must_be_instance_of
60
+
61
+ ##
62
+ # See Minitest::Assertions#assert_kind_of
63
+ #
64
+ # obj.must_be_kind_of mod
65
+ #
66
+ # :method: must_be_kind_of
67
+
68
+ infect_an_assertion :assert_kind_of, :must_be_kind_of
69
+
70
+ ##
71
+ # See Minitest::Assertions#assert_match
72
+ #
73
+ # a.must_match b
74
+ #
75
+ # :method: must_match
76
+
77
+ infect_an_assertion :assert_match, :must_match
78
+
79
+ ##
80
+ # See Minitest::Assertions#assert_nil
81
+ #
82
+ # obj.must_be_nil
83
+ #
84
+ # :method: must_be_nil
85
+
86
+ infect_an_assertion :assert_nil, :must_be_nil, :unary
87
+
88
+ ##
89
+ # See Minitest::Assertions#assert_operator
90
+ #
91
+ # n.must_be :<=, 42
92
+ #
93
+ # This can also do predicates:
94
+ #
95
+ # str.must_be :empty?
96
+ #
97
+ # :method: must_be
98
+
99
+ infect_an_assertion :assert_operator, :must_be, :reverse
100
+
101
+ ##
102
+ # See Minitest::Assertions#assert_output
103
+ #
104
+ # proc { ... }.must_output out_or_nil [, err]
105
+ #
106
+ # :method: must_output
107
+
108
+ infect_an_assertion :assert_output, :must_output
109
+
110
+ ##
111
+ # See Minitest::Assertions#assert_raises
112
+ #
113
+ # proc { ... }.must_raise exception
114
+ #
115
+ # :method: must_raise
116
+
117
+ infect_an_assertion :assert_raises, :must_raise
118
+
119
+ ##
120
+ # See Minitest::Assertions#assert_respond_to
121
+ #
122
+ # obj.must_respond_to msg
123
+ #
124
+ # :method: must_respond_to
125
+
126
+ infect_an_assertion :assert_respond_to, :must_respond_to, :reverse
127
+
128
+ ##
129
+ # See Minitest::Assertions#assert_same
130
+ #
131
+ # a.must_be_same_as b
132
+ #
133
+ # :method: must_be_same_as
134
+
135
+ infect_an_assertion :assert_same, :must_be_same_as
136
+
137
+ ##
138
+ # See Minitest::Assertions#assert_silent
139
+ #
140
+ # proc { ... }.must_be_silent
141
+ #
142
+ # :method: must_be_silent
143
+
144
+ infect_an_assertion :assert_silent, :must_be_silent
145
+
146
+ ##
147
+ # See Minitest::Assertions#assert_throws
148
+ #
149
+ # proc { ... }.must_throw sym
150
+ #
151
+ # :method: must_throw
152
+
153
+ infect_an_assertion :assert_throws, :must_throw
154
+
155
+ ##
156
+ # See Minitest::Assertions#refute_empty
157
+ #
158
+ # collection.wont_be_empty
159
+ #
160
+ # :method: wont_be_empty
161
+
162
+ infect_an_assertion :refute_empty, :wont_be_empty, :unary
163
+
164
+ ##
165
+ # See Minitest::Assertions#refute_equal
166
+ #
167
+ # a.wont_equal b
168
+ #
169
+ # :method: wont_equal
170
+
171
+ infect_an_assertion :refute_equal, :wont_equal
172
+
173
+ ##
174
+ # See Minitest::Assertions#refute_in_delta
175
+ #
176
+ # n.wont_be_close_to m [, delta]
177
+ #
178
+ # :method: wont_be_close_to
179
+
180
+ infect_an_assertion :refute_in_delta, :wont_be_close_to
181
+
182
+ alias :wont_be_within_delta :wont_be_close_to # :nodoc:
183
+
184
+ ##
185
+ # See Minitest::Assertions#refute_in_epsilon
186
+ #
187
+ # n.wont_be_within_epsilon m [, epsilon]
188
+ #
189
+ # :method: wont_be_within_epsilon
190
+
191
+ infect_an_assertion :refute_in_epsilon, :wont_be_within_epsilon
192
+
193
+ ##
194
+ # See Minitest::Assertions#refute_includes
195
+ #
196
+ # collection.wont_include obj
197
+ #
198
+ # :method: wont_include
199
+
200
+ infect_an_assertion :refute_includes, :wont_include, :reverse
201
+
202
+ ##
203
+ # See Minitest::Assertions#refute_instance_of
204
+ #
205
+ # obj.wont_be_instance_of klass
206
+ #
207
+ # :method: wont_be_instance_of
208
+
209
+ infect_an_assertion :refute_instance_of, :wont_be_instance_of
210
+
211
+ ##
212
+ # See Minitest::Assertions#refute_kind_of
213
+ #
214
+ # obj.wont_be_kind_of mod
215
+ #
216
+ # :method: wont_be_kind_of
217
+
218
+ infect_an_assertion :refute_kind_of, :wont_be_kind_of
219
+
220
+ ##
221
+ # See Minitest::Assertions#refute_match
222
+ #
223
+ # a.wont_match b
224
+ #
225
+ # :method: wont_match
226
+
227
+ infect_an_assertion :refute_match, :wont_match
228
+
229
+ ##
230
+ # See Minitest::Assertions#refute_nil
231
+ #
232
+ # obj.wont_be_nil
233
+ #
234
+ # :method: wont_be_nil
235
+
236
+ infect_an_assertion :refute_nil, :wont_be_nil, :unary
237
+
238
+ ##
239
+ # See Minitest::Assertions#refute_operator
240
+ #
241
+ # n.wont_be :<=, 42
242
+ #
243
+ # This can also do predicates:
244
+ #
245
+ # str.wont_be :empty?
246
+ #
247
+ # :method: wont_be
248
+
249
+ infect_an_assertion :refute_operator, :wont_be, :reverse
250
+
251
+ ##
252
+ # See Minitest::Assertions#refute_respond_to
253
+ #
254
+ # obj.wont_respond_to msg
255
+ #
256
+ # :method: wont_respond_to
257
+
258
+ infect_an_assertion :refute_respond_to, :wont_respond_to, :reverse
259
+
260
+ ##
261
+ # See Minitest::Assertions#refute_same
262
+ #
263
+ # a.wont_be_same_as b
264
+ #
265
+ # :method: wont_be_same_as
266
+
267
+ infect_an_assertion :refute_same, :wont_be_same_as
268
+ end
@@ -0,0 +1,11 @@
1
+ require "minitest/parallel_each"
2
+
3
+ class Minitest::Test
4
+ class << self
5
+ alias :old_test_order :test_order # :nodoc:
6
+
7
+ def test_order # :nodoc:
8
+ :parallel
9
+ end
10
+ end
11
+ end