@@ -54,7 +54,7 @@ def test_assert_no_difference_fail
54
54
@object . increment
55
55
end
56
56
end
57
- assert_equal "\" @object.num\" didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
57
+ assert_equal "` @object.num` didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
58
58
end
59
59
60
60
def test_assert_no_difference_with_message_fail
@@ -63,7 +63,7 @@ def test_assert_no_difference_with_message_fail
63
63
@object . increment
64
64
end
65
65
end
66
- assert_equal "Object Changed.\n \" @object.num\" didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
66
+ assert_equal "Object Changed.\n ` @object.num` didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
67
67
end
68
68
69
69
def test_assert_no_difference_with_multiple_expressions_pass
@@ -157,7 +157,7 @@ def test_hash_of_expressions_with_message
157
157
@object . increment
158
158
end
159
159
end
160
- assert_equal "Object Changed.\n \" @object.num\" didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
160
+ assert_equal "Object Changed.\n ` @object.num` didn't change by 0, but by 1.\n Expected: 0\n Actual: 1" , error . message
161
161
end
162
162
163
163
def test_assert_difference_message_includes_change
@@ -167,7 +167,17 @@ def test_assert_difference_message_includes_change
167
167
@object . increment
168
168
end
169
169
end
170
- assert_equal "\" @object.num\" didn't change by 5, but by 2.\n Expected: 5\n Actual: 2" , error . message
170
+ assert_equal "`@object.num` didn't change by 5, but by 2.\n Expected: 5\n Actual: 2" , error . message
171
+ end
172
+
173
+ def test_assert_difference_message_with_lambda
174
+ skip if !defined? ( RubyVM ::AbstractSyntaxTree )
175
+
176
+ error = assert_raises Minitest ::Assertion do
177
+ assert_difference ( -> { @object . num } , 1 , "Object Changed" ) do
178
+ end
179
+ end
180
+ assert_equal "Object Changed.\n `@object.num` didn't change by 1, but by 0.\n Expected: 1\n Actual: 0" , error . message
171
181
end
172
182
173
183
def test_hash_of_lambda_expressions
@@ -233,7 +243,19 @@ def test_assert_changes_with_to_option_but_no_change_has_special_message
233
243
end
234
244
end
235
245
236
- assert_equal "\" @object.num\" didn't change. It was already 0.\n Expected 0 to not be equal to 0." , error . message
246
+ assert_equal "`@object.num` didn't change. It was already 0.\n Expected 0 to not be equal to 0." , error . message
247
+ end
248
+
249
+ def test_assert_changes_message_with_lambda
250
+ skip if !defined? ( RubyVM ::AbstractSyntaxTree )
251
+
252
+ error = assert_raises Minitest ::Assertion do
253
+ assert_changes -> { @object . num } , to : 0 do
254
+ # no changes
255
+ end
256
+ end
257
+
258
+ assert_equal "`@object.num` didn't change. It was already 0.\n Expected 0 to not be equal to 0." , error . message
237
259
end
238
260
239
261
def test_assert_changes_with_wrong_to_option
@@ -349,7 +371,91 @@ def test_assert_no_changes_with_message
349
371
end
350
372
end
351
373
352
- assert_equal "@object.num should not change.\n \" @object.num\" changed.\n Expected: 0\n Actual: 1" , error . message
374
+ assert_equal "@object.num should not change.\n `@object.num` changed.\n Expected: 0\n Actual: 1" , error . message
375
+ end
376
+
377
+ def test_assert_no_changes_message_with_lambda
378
+ skip if !defined? ( RubyVM ::AbstractSyntaxTree )
379
+
380
+ error = assert_raises Minitest ::Assertion do
381
+ assert_no_changes -> { @object . num } do
382
+ @object . increment
383
+ end
384
+ end
385
+ assert_equal "`@object.num` changed.\n Expected: 0\n Actual: 1" , error . message
386
+
387
+ check = Proc . new {
388
+ @object . num
389
+ }
390
+ error = assert_raises Minitest ::Assertion do
391
+ assert_no_changes check do
392
+ @object . increment
393
+ end
394
+ end
395
+ assert_equal "`@object.num` changed.\n Expected: 1\n Actual: 2" , error . message
396
+
397
+ check = lambda {
398
+ @object . num
399
+ }
400
+ error = assert_raises Minitest ::Assertion do
401
+ assert_no_changes check do
402
+ @object . increment
403
+ end
404
+ end
405
+ assert_equal "`@object.num` changed.\n Expected: 2\n Actual: 3" , error . message
406
+
407
+ error = assert_raises Minitest ::Assertion do
408
+ assert_no_changes -> { @object . num } do
409
+ @object . increment
410
+ end
411
+ end
412
+ assert_equal "`@object.num` changed.\n Expected: 3\n Actual: 4" , error . message
413
+
414
+ error = assert_raises Minitest ::Assertion do
415
+ assert_no_changes -> ( a = nil ) { @object . num } do
416
+ @object . increment
417
+ end
418
+ end
419
+ assert_match ( /#<Proc:0x.*changed/ , error . message )
420
+ end
421
+
422
+ def test_assert_no_changes_message_with_multi_line_lambda
423
+ check = lambda {
424
+ "title" . upcase
425
+ @object . num
426
+ }
427
+ error = assert_raises Minitest ::Assertion do
428
+ assert_no_changes check do
429
+ @object . increment
430
+ end
431
+ end
432
+ assert_match ( /#<Proc:0x.*changed/ , error . message )
433
+
434
+ check = lambda {
435
+ "title" . upcase
436
+ @object . num
437
+ }
438
+ error = assert_raises Minitest ::Assertion do
439
+ assert_no_changes check do
440
+ @object . increment
441
+ end
442
+ end
443
+ assert_match ( /#<Proc:0x.*changed/ , error . message )
444
+ end
445
+
446
+ def test_assert_no_changes_message_with_not_real_callable
447
+ check = Object . new
448
+ def check . call
449
+ @object . num
450
+ end
451
+ check . instance_variable_set ( :@object , @object )
452
+
453
+ error = assert_raises Minitest ::Assertion do
454
+ assert_no_changes check do
455
+ @object . increment
456
+ end
457
+ end
458
+ assert_match ( /#<Object:0x.*changed/ , error . message )
353
459
end
354
460
355
461
def test_assert_no_changes_with_long_string_wont_output_everything
@@ -362,7 +468,7 @@ def test_assert_no_changes_with_long_string_wont_output_everything
362
468
end
363
469
364
470
assert_match <<~output , error . message
365
- " lines" changed.
471
+ ` lines` changed.
366
472
--- expected
367
473
+++ actual
368
474
@@ -10,4 +10,5 @@
@@ -403,7 +509,7 @@ def test_warning_is_not_logged_if_assertions_are_nested_correctly
403
509
run_test_that_should_fail_but_not_log_a_warning
404
510
end
405
511
assert_not @out . string . include? ( "assert_nothing_raised" )
406
- assert error . message . include? ( "(lambda)> changed" )
512
+ assert error . message . include? ( "`rand` changed" )
407
513
end
408
514
409
515
def test_fails_and_warning_is_logged_if_wrong_error_caught
0 commit comments