minitest 5.11.3 → 5.25.4
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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/History.rdoc +375 -4
- data/Manifest.txt +6 -0
- data/README.rdoc +106 -17
- data/Rakefile +11 -16
- data/lib/hoe/minitest.rb +2 -5
- data/lib/minitest/assertions.rb +255 -93
- data/lib/minitest/autorun.rb +0 -7
- data/lib/minitest/benchmark.rb +13 -16
- data/lib/minitest/compress.rb +94 -0
- data/lib/minitest/error_on_warning.rb +11 -0
- data/lib/minitest/expectations.rb +72 -35
- data/lib/minitest/manual_plugins.rb +16 -0
- data/lib/minitest/mock.rb +151 -44
- data/lib/minitest/parallel.rb +5 -5
- data/lib/minitest/pride_plugin.rb +17 -24
- data/lib/minitest/spec.rb +38 -19
- data/lib/minitest/test.rb +50 -33
- data/lib/minitest/test_task.rb +307 -0
- data/lib/minitest/unit.rb +5 -8
- data/lib/minitest.rb +414 -166
- data/test/minitest/metametameta.rb +65 -17
- data/test/minitest/test_minitest_assertions.rb +1720 -0
- data/test/minitest/test_minitest_benchmark.rb +3 -3
- data/test/minitest/test_minitest_mock.rb +409 -65
- data/test/minitest/test_minitest_reporter.rb +169 -32
- data/test/minitest/test_minitest_spec.rb +369 -193
- data/test/minitest/test_minitest_test.rb +463 -1249
- data/test/minitest/test_minitest_test_task.rb +57 -0
- data.tar.gz.sig +0 -0
- metadata +40 -23
- metadata.gz.sig +0 -0
data/lib/minitest/benchmark.rb
CHANGED
@@ -47,8 +47,6 @@ module Minitest
|
|
47
47
|
|
48
48
|
def self.bench_linear min, max, step = 10
|
49
49
|
(min..max).step(step).to_a
|
50
|
-
rescue LocalJumpError # 1.8.6
|
51
|
-
r = []; (min..max).step(step) { |n| r << n }; r
|
52
50
|
end
|
53
51
|
|
54
52
|
##
|
@@ -83,7 +81,7 @@ module Minitest
|
|
83
81
|
def assert_performance validation, &work
|
84
82
|
range = self.class.bench_range
|
85
83
|
|
86
|
-
io.print
|
84
|
+
io.print self.name
|
87
85
|
|
88
86
|
times = []
|
89
87
|
|
@@ -109,8 +107,8 @@ module Minitest
|
|
109
107
|
# is applied against the slope itself. As such, you probably want
|
110
108
|
# to tighten it from the default.
|
111
109
|
#
|
112
|
-
# See
|
113
|
-
# more details.
|
110
|
+
# See https://www.graphpad.com/guides/prism/8/curve-fitting/reg_intepretingnonlinr2.htm
|
111
|
+
# for more details.
|
114
112
|
#
|
115
113
|
# Fit is calculated by #fit_linear.
|
116
114
|
#
|
@@ -217,7 +215,7 @@ module Minitest
|
|
217
215
|
##
|
218
216
|
# Takes an array of x/y pairs and calculates the general R^2 value.
|
219
217
|
#
|
220
|
-
# See:
|
218
|
+
# See: https://en.wikipedia.org/wiki/Coefficient_of_determination
|
221
219
|
|
222
220
|
def fit_error xys
|
223
221
|
y_bar = sigma(xys) { |_, y| y } / xys.size.to_f
|
@@ -232,11 +230,11 @@ module Minitest
|
|
232
230
|
#
|
233
231
|
# Takes x and y values and returns [a, b, r^2].
|
234
232
|
#
|
235
|
-
# See:
|
233
|
+
# See: https://mathworld.wolfram.com/LeastSquaresFittingExponential.html
|
236
234
|
|
237
235
|
def fit_exponential xs, ys
|
238
236
|
n = xs.size
|
239
|
-
xys = xs.zip
|
237
|
+
xys = xs.zip ys
|
240
238
|
sxlny = sigma(xys) { |x, y| x * Math.log(y) }
|
241
239
|
slny = sigma(xys) { |_, y| Math.log(y) }
|
242
240
|
sx2 = sigma(xys) { |x, _| x * x }
|
@@ -254,11 +252,11 @@ module Minitest
|
|
254
252
|
#
|
255
253
|
# Takes x and y values and returns [a, b, r^2].
|
256
254
|
#
|
257
|
-
# See:
|
255
|
+
# See: https://mathworld.wolfram.com/LeastSquaresFittingLogarithmic.html
|
258
256
|
|
259
257
|
def fit_logarithmic xs, ys
|
260
258
|
n = xs.size
|
261
|
-
xys = xs.zip
|
259
|
+
xys = xs.zip ys
|
262
260
|
slnx2 = sigma(xys) { |x, _| Math.log(x) ** 2 }
|
263
261
|
slnx = sigma(xys) { |x, _| Math.log(x) }
|
264
262
|
sylnx = sigma(xys) { |x, y| y * Math.log(x) }
|
@@ -276,11 +274,11 @@ module Minitest
|
|
276
274
|
#
|
277
275
|
# Takes x and y values and returns [a, b, r^2].
|
278
276
|
#
|
279
|
-
# See:
|
277
|
+
# See: https://mathworld.wolfram.com/LeastSquaresFitting.html
|
280
278
|
|
281
279
|
def fit_linear xs, ys
|
282
280
|
n = xs.size
|
283
|
-
xys = xs.zip
|
281
|
+
xys = xs.zip ys
|
284
282
|
sx = sigma xs
|
285
283
|
sy = sigma ys
|
286
284
|
sx2 = sigma(xs) { |x| x ** 2 }
|
@@ -298,11 +296,11 @@ module Minitest
|
|
298
296
|
#
|
299
297
|
# Takes x and y values and returns [a, b, r^2].
|
300
298
|
#
|
301
|
-
# See:
|
299
|
+
# See: https://mathworld.wolfram.com/LeastSquaresFittingPowerLaw.html
|
302
300
|
|
303
301
|
def fit_power xs, ys
|
304
302
|
n = xs.size
|
305
|
-
xys = xs.zip
|
303
|
+
xys = xs.zip ys
|
306
304
|
slnxlny = sigma(xys) { |x, y| Math.log(x) * Math.log(y) }
|
307
305
|
slnx = sigma(xs) { |x | Math.log(x) }
|
308
306
|
slny = sigma(ys) { | y| Math.log(y) }
|
@@ -323,7 +321,7 @@ module Minitest
|
|
323
321
|
|
324
322
|
def sigma enum, &block
|
325
323
|
enum = enum.map(&block) if block
|
326
|
-
enum.
|
324
|
+
enum.sum
|
327
325
|
end
|
328
326
|
|
329
327
|
##
|
@@ -419,7 +417,6 @@ module Minitest
|
|
419
417
|
end
|
420
418
|
end
|
421
419
|
|
422
|
-
|
423
420
|
##
|
424
421
|
# Create a benchmark that verifies that the performance is logarithmic.
|
425
422
|
#
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module Minitest
|
2
|
+
##
|
3
|
+
# Compresses backtraces.
|
4
|
+
|
5
|
+
module Compress
|
6
|
+
|
7
|
+
##
|
8
|
+
# Takes a backtrace (array of strings) and compresses repeating
|
9
|
+
# cycles in it to make it more readable.
|
10
|
+
|
11
|
+
def compress orig
|
12
|
+
ary = orig
|
13
|
+
|
14
|
+
eswo = ->(a, n, off) { # each_slice_with_offset
|
15
|
+
if off.zero? then
|
16
|
+
a.each_slice n
|
17
|
+
else
|
18
|
+
# [ ...off... [...n...] [...n...] ... ]
|
19
|
+
front, back = a.take(off), a.drop(off)
|
20
|
+
[front].chain back.each_slice n
|
21
|
+
end
|
22
|
+
}
|
23
|
+
|
24
|
+
3.times do # maybe don't use loop do here?
|
25
|
+
index = ary # [ a b c b c b c d ]
|
26
|
+
.size
|
27
|
+
.times # 0...size
|
28
|
+
.group_by { |i| ary[i] } # { a: [0] b: [1 3 5], c: [2 4 6], d: [7] }
|
29
|
+
|
30
|
+
order = index
|
31
|
+
.reject { |k, v| v.size == 1 } # { b: [1 3 5], c: [2 4 6] }
|
32
|
+
.sort_by { |k, a1| ### sort by max dist + min offset
|
33
|
+
d = a1.each_cons(2).sum { |a2, b| b-a2 }
|
34
|
+
[-d, a1.first]
|
35
|
+
} # b: [1 3 5] c: [2 4 6]
|
36
|
+
|
37
|
+
ranges = order
|
38
|
+
.map { |k, a1| # [[1..2 3..4] [2..3 4..5]]
|
39
|
+
a1
|
40
|
+
.each_cons(2)
|
41
|
+
.map { |a2, b| a2..b-1 }
|
42
|
+
}
|
43
|
+
|
44
|
+
big_ranges = ranges
|
45
|
+
.flat_map { |a| # [1..2 3..4 2..3 4..5]
|
46
|
+
a.sort_by { |r| [-r.size, r.first] }.first 5
|
47
|
+
}
|
48
|
+
.first(100)
|
49
|
+
|
50
|
+
culprits = big_ranges
|
51
|
+
.map { |r|
|
52
|
+
eswo[ary, r.size, r.begin] # [o1 s1 s1 s2 s2]
|
53
|
+
.chunk_while { |a, b| a == b } # [[o1] [s1 s1] [s2 s2]]
|
54
|
+
.map { |a| [a.size, a.first] } # [[1 o1] [2 s1] [2 s2]]
|
55
|
+
}
|
56
|
+
.select { |chunks|
|
57
|
+
chunks.any? { |a| a.first > 1 } # compressed anything?
|
58
|
+
}
|
59
|
+
|
60
|
+
min = culprits
|
61
|
+
.min_by { |a| a.flatten.size } # most compressed
|
62
|
+
|
63
|
+
break unless min
|
64
|
+
|
65
|
+
ary = min.flat_map { |(n, lines)|
|
66
|
+
if n > 1 then
|
67
|
+
[[n, compress(lines)]] # [o1 [2 s1] [2 s2]]
|
68
|
+
else
|
69
|
+
lines
|
70
|
+
end
|
71
|
+
}
|
72
|
+
end
|
73
|
+
|
74
|
+
format = ->(lines) {
|
75
|
+
lines.flat_map { |line|
|
76
|
+
case line
|
77
|
+
when Array then
|
78
|
+
n, lines = line
|
79
|
+
lines = format[lines]
|
80
|
+
[
|
81
|
+
" +->> #{n} cycles of #{lines.size} lines:",
|
82
|
+
*lines.map { |s| " | #{s}" },
|
83
|
+
" +-<<",
|
84
|
+
]
|
85
|
+
else
|
86
|
+
line
|
87
|
+
end
|
88
|
+
}
|
89
|
+
}
|
90
|
+
|
91
|
+
format[ary]
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -9,10 +9,11 @@
|
|
9
9
|
#
|
10
10
|
# it "should still work in threads" do
|
11
11
|
# my_threaded_thingy do
|
12
|
-
# (1+1).must_equal 2
|
13
|
-
# assert_equal 2, 1+1
|
14
|
-
# _(1 + 1).must_equal 2
|
15
|
-
# value(1 + 1).must_equal 2
|
12
|
+
# (1+1).must_equal 2 # bad
|
13
|
+
# assert_equal 2, 1+1 # good
|
14
|
+
# _(1 + 1).must_equal 2 # good
|
15
|
+
# value(1 + 1).must_equal 2 # good, also #expect
|
16
|
+
# _ { 1 + "1" }.must_raise TypeError # good
|
16
17
|
# end
|
17
18
|
# end
|
18
19
|
|
@@ -21,7 +22,7 @@ module Minitest::Expectations
|
|
21
22
|
##
|
22
23
|
# See Minitest::Assertions#assert_empty.
|
23
24
|
#
|
24
|
-
# collection.must_be_empty
|
25
|
+
# _(collection).must_be_empty
|
25
26
|
#
|
26
27
|
# :method: must_be_empty
|
27
28
|
|
@@ -30,7 +31,7 @@ module Minitest::Expectations
|
|
30
31
|
##
|
31
32
|
# See Minitest::Assertions#assert_equal
|
32
33
|
#
|
33
|
-
# a.must_equal b
|
34
|
+
# _(a).must_equal b
|
34
35
|
#
|
35
36
|
# :method: must_equal
|
36
37
|
|
@@ -39,18 +40,18 @@ module Minitest::Expectations
|
|
39
40
|
##
|
40
41
|
# See Minitest::Assertions#assert_in_delta
|
41
42
|
#
|
42
|
-
# n.must_be_close_to m [, delta]
|
43
|
+
# _(n).must_be_close_to m [, delta]
|
43
44
|
#
|
44
45
|
# :method: must_be_close_to
|
45
46
|
|
46
47
|
infect_an_assertion :assert_in_delta, :must_be_close_to
|
47
48
|
|
48
|
-
|
49
|
+
infect_an_assertion :assert_in_delta, :must_be_within_delta # :nodoc:
|
49
50
|
|
50
51
|
##
|
51
52
|
# See Minitest::Assertions#assert_in_epsilon
|
52
53
|
#
|
53
|
-
# n.must_be_within_epsilon m [, epsilon]
|
54
|
+
# _(n).must_be_within_epsilon m [, epsilon]
|
54
55
|
#
|
55
56
|
# :method: must_be_within_epsilon
|
56
57
|
|
@@ -59,7 +60,7 @@ module Minitest::Expectations
|
|
59
60
|
##
|
60
61
|
# See Minitest::Assertions#assert_includes
|
61
62
|
#
|
62
|
-
# collection.must_include obj
|
63
|
+
# _(collection).must_include obj
|
63
64
|
#
|
64
65
|
# :method: must_include
|
65
66
|
|
@@ -68,7 +69,7 @@ module Minitest::Expectations
|
|
68
69
|
##
|
69
70
|
# See Minitest::Assertions#assert_instance_of
|
70
71
|
#
|
71
|
-
# obj.must_be_instance_of klass
|
72
|
+
# _(obj).must_be_instance_of klass
|
72
73
|
#
|
73
74
|
# :method: must_be_instance_of
|
74
75
|
|
@@ -77,7 +78,7 @@ module Minitest::Expectations
|
|
77
78
|
##
|
78
79
|
# See Minitest::Assertions#assert_kind_of
|
79
80
|
#
|
80
|
-
# obj.must_be_kind_of mod
|
81
|
+
# _(obj).must_be_kind_of mod
|
81
82
|
#
|
82
83
|
# :method: must_be_kind_of
|
83
84
|
|
@@ -86,7 +87,7 @@ module Minitest::Expectations
|
|
86
87
|
##
|
87
88
|
# See Minitest::Assertions#assert_match
|
88
89
|
#
|
89
|
-
# a.must_match b
|
90
|
+
# _(a).must_match b
|
90
91
|
#
|
91
92
|
# :method: must_match
|
92
93
|
|
@@ -95,7 +96,7 @@ module Minitest::Expectations
|
|
95
96
|
##
|
96
97
|
# See Minitest::Assertions#assert_nil
|
97
98
|
#
|
98
|
-
# obj.must_be_nil
|
99
|
+
# _(obj).must_be_nil
|
99
100
|
#
|
100
101
|
# :method: must_be_nil
|
101
102
|
|
@@ -104,11 +105,11 @@ module Minitest::Expectations
|
|
104
105
|
##
|
105
106
|
# See Minitest::Assertions#assert_operator
|
106
107
|
#
|
107
|
-
# n.must_be :<=, 42
|
108
|
+
# _(n).must_be :<=, 42
|
108
109
|
#
|
109
110
|
# This can also do predicates:
|
110
111
|
#
|
111
|
-
# str.must_be :empty?
|
112
|
+
# _(str).must_be :empty?
|
112
113
|
#
|
113
114
|
# :method: must_be
|
114
115
|
|
@@ -117,16 +118,25 @@ module Minitest::Expectations
|
|
117
118
|
##
|
118
119
|
# See Minitest::Assertions#assert_output
|
119
120
|
#
|
120
|
-
#
|
121
|
+
# _ { ... }.must_output out_or_nil [, err]
|
121
122
|
#
|
122
123
|
# :method: must_output
|
123
124
|
|
124
125
|
infect_an_assertion :assert_output, :must_output, :block
|
125
126
|
|
127
|
+
##
|
128
|
+
# See Minitest::Assertions#assert_pattern_match
|
129
|
+
#
|
130
|
+
# _ { ... }.must_pattern_match [...]
|
131
|
+
#
|
132
|
+
# :method: must_pattern_match
|
133
|
+
|
134
|
+
infect_an_assertion :assert_pattern, :must_pattern_match, :block
|
135
|
+
|
126
136
|
##
|
127
137
|
# See Minitest::Assertions#assert_raises
|
128
138
|
#
|
129
|
-
#
|
139
|
+
# _ { ... }.must_raise exception
|
130
140
|
#
|
131
141
|
# :method: must_raise
|
132
142
|
|
@@ -135,7 +145,7 @@ module Minitest::Expectations
|
|
135
145
|
##
|
136
146
|
# See Minitest::Assertions#assert_respond_to
|
137
147
|
#
|
138
|
-
# obj.must_respond_to msg
|
148
|
+
# _(obj).must_respond_to msg
|
139
149
|
#
|
140
150
|
# :method: must_respond_to
|
141
151
|
|
@@ -144,7 +154,7 @@ module Minitest::Expectations
|
|
144
154
|
##
|
145
155
|
# See Minitest::Assertions#assert_same
|
146
156
|
#
|
147
|
-
# a.must_be_same_as b
|
157
|
+
# _(a).must_be_same_as b
|
148
158
|
#
|
149
159
|
# :method: must_be_same_as
|
150
160
|
|
@@ -153,7 +163,7 @@ module Minitest::Expectations
|
|
153
163
|
##
|
154
164
|
# See Minitest::Assertions#assert_silent
|
155
165
|
#
|
156
|
-
#
|
166
|
+
# _ { ... }.must_be_silent
|
157
167
|
#
|
158
168
|
# :method: must_be_silent
|
159
169
|
|
@@ -162,16 +172,34 @@ module Minitest::Expectations
|
|
162
172
|
##
|
163
173
|
# See Minitest::Assertions#assert_throws
|
164
174
|
#
|
165
|
-
#
|
175
|
+
# _ { ... }.must_throw sym
|
166
176
|
#
|
167
177
|
# :method: must_throw
|
168
178
|
|
169
179
|
infect_an_assertion :assert_throws, :must_throw, :block
|
170
180
|
|
181
|
+
##
|
182
|
+
# See Minitest::Assertions#assert_path_exists
|
183
|
+
#
|
184
|
+
# _(some_path).path_must_exist
|
185
|
+
#
|
186
|
+
# :method: path_must_exist
|
187
|
+
|
188
|
+
infect_an_assertion :assert_path_exists, :path_must_exist, :unary
|
189
|
+
|
190
|
+
##
|
191
|
+
# See Minitest::Assertions#refute_path_exists
|
192
|
+
#
|
193
|
+
# _(some_path).path_wont_exist
|
194
|
+
#
|
195
|
+
# :method: path_wont_exist
|
196
|
+
|
197
|
+
infect_an_assertion :refute_path_exists, :path_wont_exist, :unary
|
198
|
+
|
171
199
|
##
|
172
200
|
# See Minitest::Assertions#refute_empty
|
173
201
|
#
|
174
|
-
# collection.wont_be_empty
|
202
|
+
# _(collection).wont_be_empty
|
175
203
|
#
|
176
204
|
# :method: wont_be_empty
|
177
205
|
|
@@ -180,7 +208,7 @@ module Minitest::Expectations
|
|
180
208
|
##
|
181
209
|
# See Minitest::Assertions#refute_equal
|
182
210
|
#
|
183
|
-
# a.wont_equal b
|
211
|
+
# _(a).wont_equal b
|
184
212
|
#
|
185
213
|
# :method: wont_equal
|
186
214
|
|
@@ -189,18 +217,18 @@ module Minitest::Expectations
|
|
189
217
|
##
|
190
218
|
# See Minitest::Assertions#refute_in_delta
|
191
219
|
#
|
192
|
-
# n.wont_be_close_to m [, delta]
|
220
|
+
# _(n).wont_be_close_to m [, delta]
|
193
221
|
#
|
194
222
|
# :method: wont_be_close_to
|
195
223
|
|
196
224
|
infect_an_assertion :refute_in_delta, :wont_be_close_to
|
197
225
|
|
198
|
-
|
226
|
+
infect_an_assertion :refute_in_delta, :wont_be_within_delta # :nodoc:
|
199
227
|
|
200
228
|
##
|
201
229
|
# See Minitest::Assertions#refute_in_epsilon
|
202
230
|
#
|
203
|
-
# n.wont_be_within_epsilon m [, epsilon]
|
231
|
+
# _(n).wont_be_within_epsilon m [, epsilon]
|
204
232
|
#
|
205
233
|
# :method: wont_be_within_epsilon
|
206
234
|
|
@@ -209,7 +237,7 @@ module Minitest::Expectations
|
|
209
237
|
##
|
210
238
|
# See Minitest::Assertions#refute_includes
|
211
239
|
#
|
212
|
-
# collection.wont_include obj
|
240
|
+
# _(collection).wont_include obj
|
213
241
|
#
|
214
242
|
# :method: wont_include
|
215
243
|
|
@@ -218,7 +246,7 @@ module Minitest::Expectations
|
|
218
246
|
##
|
219
247
|
# See Minitest::Assertions#refute_instance_of
|
220
248
|
#
|
221
|
-
# obj.wont_be_instance_of klass
|
249
|
+
# _(obj).wont_be_instance_of klass
|
222
250
|
#
|
223
251
|
# :method: wont_be_instance_of
|
224
252
|
|
@@ -227,7 +255,7 @@ module Minitest::Expectations
|
|
227
255
|
##
|
228
256
|
# See Minitest::Assertions#refute_kind_of
|
229
257
|
#
|
230
|
-
# obj.wont_be_kind_of mod
|
258
|
+
# _(obj).wont_be_kind_of mod
|
231
259
|
#
|
232
260
|
# :method: wont_be_kind_of
|
233
261
|
|
@@ -236,7 +264,7 @@ module Minitest::Expectations
|
|
236
264
|
##
|
237
265
|
# See Minitest::Assertions#refute_match
|
238
266
|
#
|
239
|
-
# a.wont_match b
|
267
|
+
# _(a).wont_match b
|
240
268
|
#
|
241
269
|
# :method: wont_match
|
242
270
|
|
@@ -245,7 +273,7 @@ module Minitest::Expectations
|
|
245
273
|
##
|
246
274
|
# See Minitest::Assertions#refute_nil
|
247
275
|
#
|
248
|
-
# obj.wont_be_nil
|
276
|
+
# _(obj).wont_be_nil
|
249
277
|
#
|
250
278
|
# :method: wont_be_nil
|
251
279
|
|
@@ -254,7 +282,7 @@ module Minitest::Expectations
|
|
254
282
|
##
|
255
283
|
# See Minitest::Assertions#refute_operator
|
256
284
|
#
|
257
|
-
# n.wont_be :<=, 42
|
285
|
+
# _(n).wont_be :<=, 42
|
258
286
|
#
|
259
287
|
# This can also do predicates:
|
260
288
|
#
|
@@ -264,10 +292,19 @@ module Minitest::Expectations
|
|
264
292
|
|
265
293
|
infect_an_assertion :refute_operator, :wont_be, :reverse
|
266
294
|
|
295
|
+
##
|
296
|
+
# See Minitest::Assertions#refute_pattern_match
|
297
|
+
#
|
298
|
+
# _ { ... }.wont_pattern_match [...]
|
299
|
+
#
|
300
|
+
# :method: wont_pattern_match
|
301
|
+
|
302
|
+
infect_an_assertion :refute_pattern, :wont_pattern_match, :block
|
303
|
+
|
267
304
|
##
|
268
305
|
# See Minitest::Assertions#refute_respond_to
|
269
306
|
#
|
270
|
-
# obj.wont_respond_to msg
|
307
|
+
# _(obj).wont_respond_to msg
|
271
308
|
#
|
272
309
|
# :method: wont_respond_to
|
273
310
|
|
@@ -276,7 +313,7 @@ module Minitest::Expectations
|
|
276
313
|
##
|
277
314
|
# See Minitest::Assertions#refute_same
|
278
315
|
#
|
279
|
-
# a.wont_be_same_as b
|
316
|
+
# _(a).wont_be_same_as b
|
280
317
|
#
|
281
318
|
# :method: wont_be_same_as
|
282
319
|
|