minitest-ok 0.3.3 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 24fede07b5dfd3ba6329ea3f9eec222be7bbd7448cec333211193f249d182acf
4
- data.tar.gz: d6fce3aa578e6ca8abbb828216c52c2316f9b2259693930ccd1af93bbe93e701
3
+ metadata.gz: 8da6c203333bd5267e00d76d25285c2e9c54e960d8cc4445230c5524bbb6c1c1
4
+ data.tar.gz: ded479a36c207e4c298e722a83e709234ff3b4a10c82513bbfc320ef771923ce
5
5
  SHA512:
6
- metadata.gz: 1654cdcdc41ab3a0e8c5947e7566ca2906ef23604c823791d053c669071ff62a03b5c9c6016d88908a0d41035bc783f53b62a2c83f6a8ae57b247c1f50e3936b
7
- data.tar.gz: 36b1f25a7fad593a38978931d3dd76e96c1e5279f1262dc508a0f087496ab09ecca848a45769d7585a22731262b55bb98b39224daa269e9c763f5812fe71496a
6
+ metadata.gz: 31680ed69498d8d4eeaf1878af6bd3c8a20dab0e55cdb582837466c6b47efe3bc879479a53ac26b00bef3aca9dfc3960c204a7b0b97b4c4c1e78c3208ac93a84
7
+ data.tar.gz: 5f03eda1e5aa4a4846ad36d799f6bd77d1868668c8c9777b18f1851e9d92fba590f74091ddd3da168f6b6668b5bb1ea3ba86bb407f6ed752d742ffa30b26efe7
data/README.md CHANGED
@@ -69,13 +69,21 @@ describe 'Minitest::Ok' do
69
69
  ok {3.14159}.NOT.in_epsilon?(3.14, 0.0001) # same as refute_in_epsilon 3.14, 3.14159, 0.0001
70
70
 
71
71
  ## exception
72
- ex = ok {proc { 1/0 }}.raise?(ZeroDivisionError) # same as assert_raise(...)
73
- ex = ok {proc { 1/0 }}.raise?(ZeroDivisionError, "divided by zero")
74
- ex = ok {proc { 1/0 }}.raise?(ZeroDivisionError, /^divided by zero$/)
75
- p ex #=> #<ZeroDivisionError: divided by 0>
76
- ok {proc { 1/1 }}.NOT.raise?(Exception)
77
-
78
- ok {proc {throw :exit}}.throw?(:exit) # same as assert_throws(:exit) {...}
72
+ pr = proc { 1 / 0 }
73
+ ex = ok {pr}.raise?(ZeroDivisionError) # same as assert_raise(...)
74
+ ex = ok {pr}.raise?(ZeroDivisionError, "divided by 0")
75
+ ex = ok {pr}.raise?(ZeroDivisionError, /^divided by 0$/)
76
+ p ex #=> #<ZeroDivisionError>
77
+ ok {pr}.raise?(ZeroDivisionError, /^divided by 0$/) do |ex|
78
+ p ex # optional block will be yielded when exception raised
79
+ end
80
+
81
+ pr2 = proc { 1.0 / 0.0 }
82
+ ok {pr2}.raise_nothing?(Exception) # oktest >= 0.4
83
+ ok {pr2}.NOT.raise?(Exception)
84
+
85
+ pr3 = proc { throw :exit }
86
+ ok {pr3}.throw?(:exit) # same as assert_throws(:exit) {...}
79
87
 
80
88
  ## stdout and stderr
81
89
  ok {proc {puts 'X'}}.output?("X\n") # same as assert_output {...}
@@ -104,7 +112,7 @@ describe 'Minitest::Ok' do
104
112
  obj.instance_variable_set('@x', 10)
105
113
  ok {obj}.instance_variable_defined?('@x')
106
114
 
107
- ok {'logo.png'}.end_with?('.png') # same as assert 'logon.png'.start_with?('.png')
115
+ ok {'logo.png'}.end_with?('.png') # same as assert 'logon.png'.end_with?('.png')
108
116
  ok {[1,2,3]}.any? {|x| x % 2 == 0} # same as assert [1,2,3].any? {...}
109
117
  ok {[1,2,3]}.NOT.all? {|x| x < 0 } # same as refute [1,2,3].all? {...}
110
118
 
@@ -138,9 +146,18 @@ $License: MIT License $
138
146
 
139
147
  ## History
140
148
 
149
+
150
+ ### 2024-09-16: Release 0.4.0
151
+
152
+ * [enhance] `ok {x}.nil?` now calls `assert_nil?(x)`.
153
+ * [enhance] `ok {}.raise?()` now accepts optional block parameter yielded when exception raised.
154
+ * [enhance] `ok {}.raise_nothing?` defined which represens nothing raised.
155
+ * [bugfix] `ok {a}.eql?(e)` now calls `assert_true a.eql?(e)` instead of just calling `a.eql?(e)`.
156
+
157
+
141
158
  ### 2021-08-02: Release 0.3.3
142
159
 
143
- * [bugfix] rename 'ok {}.falthy?' to 'ok {}.falsy?'.
160
+ * [bugfix] rename `ok {}.falthy?` to `ok {}.falsy?`.
144
161
 
145
162
 
146
163
  ### 2021-01-17: Release 0.3.2
data/Rakefile CHANGED
@@ -1,4 +1,8 @@
1
- require "bundler/gem_tasks"
1
+ begin
2
+ require "bundler/gem_tasks"
3
+ rescue LoadError => exc
4
+ warn "[warning] failed to load '#{exc.path}'"
5
+ end
2
6
  require "rake/testtask"
3
7
 
4
8
  Rake::TestTask.new(:test) do |t|
@@ -7,11 +11,44 @@ Rake::TestTask.new(:test) do |t|
7
11
  t.test_files = FileList['test/**/*_test.rb']
8
12
  end
9
13
 
10
- task :default => :test
11
14
 
15
+ desc "run test for multiple version of Ruby"
16
+ task :'test:all' do
17
+ vs_home = ENV['VS_HOME'] or
18
+ fail "$VS_HOME required."
19
+ failed = false
20
+ ruby_vers = %w[3.3 3.2 3.1 3.0 2.7 2.6 2.5 2.4 2.3]
21
+ ruby_vers.each do |ver|
22
+ puts "\e[33m========== Ruby #{ver} ==========\e[0m"
23
+ ruby_bin = Dir.glob("#{vs_home}/ruby/#{ver}.*/bin").last
24
+ if ! ruby_bin
25
+ $stderr.puts "\e[31m[ERROR] Ruby #{ver} not installed.\e[0m\n\n"
26
+ failed = true
27
+ next
28
+ end
29
+ sh "#{ruby_bin}/ruby test/minitest/ok_test.rb" do |status_ok|
30
+ failed = true unless status_ok
31
+ end
32
+ sleep 0.2
33
+ end
34
+ exit 1 if failed
35
+ end
12
36
 
13
- desc "show how to release"
37
+
38
+ task :default => :help
39
+
40
+
41
+ desc "list tasks"
14
42
  task :help do
43
+ system "rake -T"
44
+ end
45
+
46
+
47
+ desc "show how to release"
48
+ task :guide do
49
+ rel = ENV['rel'] or abort "rake help: required 'rel=X.X.X'"
50
+ rel =~ /(\d+\.\d+)/
51
+ branch = "rel-#{$1}"
15
52
  puts <<END
16
53
  How to release:
17
54
 
@@ -19,16 +56,16 @@ How to release:
19
56
  $ git diff
20
57
  $ which ruby
21
58
  $ rake test # for confirmation
22
- $ git checkout -b rel-1.0 # or git checkout rel-1.0
23
- $ rake edit rel=1.0.0
59
+ $ git checkout -b #{branch} # or git checkout #{branch}
60
+ $ rake edit rel=#{rel}
24
61
  $ git diff
25
- $ git commit -a -m "release preparation for 1.0.0"
62
+ $ git commit -a -m "release preparation for #{rel}"
26
63
  $ rake build # for confirmation
27
64
  $ rake install # for confirmation
28
65
  $ #rake release
29
- $ gem push pkg/minitest-ok-1.0.0.gem
30
- $ git tag v1.0.0
31
- $ git push -u origin rel-1.0
66
+ $ gem push pkg/minitest-ok-#{rel}.gem
67
+ $ git tag v#{rel}
68
+ $ git push -u origin #{branch}
32
69
  $ git push --tags
33
70
  END
34
71
 
data/lib/minitest/ok.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  ###
4
- ### $Release: 0.3.3 $
4
+ ### $Release: 0.4.0 $
5
5
  ### $Copyright: copyright(c) 2015-2018 kuwata-lab.com all rights reserved $
6
6
  ### $License: MIT License $
7
7
  ###
@@ -59,7 +59,7 @@ module Minitest
59
59
 
60
60
  module Ok
61
61
 
62
- VERSION = '$Release: 0.3.3 $'.split()[1]
62
+ VERSION = '$Release: 0.4.0 $'.split()[1]
63
63
 
64
64
 
65
65
  class Msg < Proc # :nodoc:
@@ -260,6 +260,81 @@ module Minitest
260
260
  raise
261
261
  end
262
262
 
263
+ ##--
264
+ ##
265
+ ## Same as <tt>assert_predicate(<actual>, :equal?)</tt>.
266
+ ##
267
+ #def eql?(expected)
268
+ # _mark_as_tested()
269
+ # __assert_predicate(:eql?, expected)
270
+ #rescue Minitest::Assertion => ex
271
+ # ex.backtrace.delete_if {|bt| bt.start_with?(__FILE__) }
272
+ # raise
273
+ #end
274
+ ##++
275
+
276
+ ##
277
+ ## Same as <tt>assert_predicate()</tt>.
278
+ ##
279
+ self.instance_methods().grep(/\?/).each do |x|
280
+ next if x == :equal?
281
+ next if x == :nil? || x == :frozen? || x == :respond_to?
282
+ next if x == :is_a? || x == :kind_of? || x == :instance_of?
283
+ next if x == :instance_variable_defined? || x == :tainted?
284
+ eval <<-END, binding(), __FILE__, __LINE__ + 1
285
+ def #{x}(*args, **kwargs, &block)
286
+ _mark_as_tested()
287
+ __assert_predicate(:#{x}, *args, **kwargs, &block)
288
+ rescue Minitest::Assertion => ex
289
+ #ex.backtrace.delete_if {|bt| bt.start_with?(__FILE__) }
290
+ raise
291
+ end
292
+ END
293
+ end
294
+
295
+ def __assert_predicate(symbol, *args, **kwargs, &block)
296
+ no_params = args.empty? && kwargs.empty? && ! block_given?()
297
+ if no_params
298
+ if ! @not
299
+ @context.assert_predicate(@actual, symbol)
300
+ else
301
+ @context.refute_predicate(@actual, symbol)
302
+ end
303
+ else
304
+ if RUBY_VERSION >= "2.7"
305
+ result = @actual.__send__(symbol, *args, **kwargs, &block)
306
+ elsif ! kwargs.empty?
307
+ s = "ok{}.#{symbol}(#{kwargs.inspect[1..-2]})"
308
+ raise ArgumentError, "#{s}: Keyword argument is not supported."
309
+ else
310
+ result = @actual.__send__(symbol, *args, &block)
311
+ end
312
+ if ! @not
313
+ @context.assert result, Msg.new { "Expected #{@actual.inspect}.#{symbol}(#{args.inspect[1..-2]}) but failed." }
314
+ else
315
+ @context.refute result, Msg.new { "Expected #{@actual.inspect}.#{symbol}(#{args.inspect[1..-2]}) to fail but succeeded." }
316
+ end
317
+ end
318
+ end
319
+ private :__assert_predicate
320
+
321
+ ##
322
+ ## Same as <tt>assert_il()</tt>.
323
+ ##
324
+ ## ok {nil}.nil? # Pass
325
+ ## ok {" "}.nil? # Fail
326
+ ## ok {" "}.NOT.nil? # Pass
327
+ ##
328
+ def nil?()
329
+ _mark_as_tested()
330
+ @context.assert_nil @actual unless @not
331
+ @context.refute_nil @actual if @not
332
+ self
333
+ rescue Minitest::Assertion => ex
334
+ ex.backtrace.delete_if {|bt| bt.start_with?(__FILE__) }
335
+ raise
336
+ end
337
+
263
338
  ##
264
339
  ## Same as <tt>assert_kind_of()</tt>.
265
340
  ##
@@ -372,15 +447,19 @@ module Minitest
372
447
 
373
448
  ##
374
449
  ## Same as <tt>assert_raises()</tt>.
450
+ ## Optional block will be yielded only when exception raised with exception raised.
375
451
  ##
376
452
  ## ex = ok { proc { 1/0 } }.raise?(ZeroDivisionError) # Pass
377
453
  ## p ex.class #=> ZeroDivisionError
378
- ## ex = ok { proc { 1/0 } }.raise?(ZeroDivisionError, "divided by zero")
379
- ## ex = ok { proc { 1/0 } }.raise?(ZeroDivisionError, /^divided by zero$/)
454
+ ## ex = ok { proc { 1/0 } }.raise?(ZeroDivisionError, "divided by 0")
455
+ ## ex = ok { proc { 1/0 } }.raise?(ZeroDivisionError, /^divided by 0$/)
456
+ ## ok { proc { 1/0 } }.raise?(ZeroDivisionError) do |exc|
457
+ ## ok {exc.message} =~ /^divided by 0$/
458
+ ## end
380
459
  ##
381
460
  ## ok { proc { 1 / 1 } }.NOT.raise?(Exception) # Pass
382
461
  ##
383
- def raise?(exception_class, message=nil)
462
+ def raise?(exception_class, message=nil, &b)
384
463
  _mark_as_tested()
385
464
  ex = nil
386
465
  unless @not
@@ -392,6 +471,7 @@ module Minitest
392
471
  @context.assert_equal message, ex.message
393
472
  end
394
473
  end
474
+ yield ex if block_given?()
395
475
  else
396
476
  begin
397
477
  @actual.call
@@ -407,6 +487,29 @@ module Minitest
407
487
  raise
408
488
  end
409
489
 
490
+ ##
491
+ ## Asserts that a Proc object raises nothing.
492
+ ## Not available with <tt>.NOT()</tt>.
493
+ ## Optional block will be yielded when unexpected exception raised.
494
+ ##
495
+ ## pr = proc { 1.0 / 0.0 }
496
+ ## ok {pr}.raise_nothing?
497
+ ##
498
+ def raise_nothing?(&b)
499
+ _mark_as_tested()
500
+ ! @not or
501
+ raise "`NOT.raise_nothing?` is not supported because double negation is difficult to understand."
502
+ @context.assert true # count up number of assertions
503
+ begin
504
+ @actual.call
505
+ rescue Exception => ex
506
+ yield ex if block_given?()
507
+ #@context.assert false, "Exception #{ex.class} raised unexpectedly."
508
+ ex.backtrace.delete_if {|bt| bt.start_with?(__FILE__) }
509
+ raise
510
+ end
511
+ end
512
+
410
513
  ##
411
514
  ## Same as <tt>assert_throws()</tt>.
412
515
  ##
@@ -571,7 +674,7 @@ module Minitest
571
674
  ## ok {'logo.jpg'}.end_with?('.jpg') # Pass
572
675
  ## ok {[1, 2, 3]}.all? {|x| x <= 3 } # Pass
573
676
  ##
574
- def method_missing(symbol, *args, &block)
677
+ def method_missing(symbol, *args, **kwargs, &block)
575
678
  unless symbol.to_s =~ /\?\z/
576
679
  return super
577
680
  end
@@ -582,8 +685,7 @@ module Minitest
582
685
  begin
583
686
  @context.__send__("assert_#{symbol.to_s[0..-2]}", @actual, *args, &block)
584
687
  rescue NoMethodError
585
- result = @actual.__send__(symbol, *args, &block)
586
- @context.assert result, Msg.new { "Expected #{@actual.inspect}.#{symbol}(#{args.inspect[1..-2]}) but failed." }
688
+ __assert_predicate(symbol, *args, **kwargs, &block)
587
689
  end
588
690
  else
589
691
  ## Try refute_xxxx() at first.
@@ -591,8 +693,7 @@ module Minitest
591
693
  begin
592
694
  @context.__send__("refute_#{symbol.to_s[0..-2]}", @actual, *args, &block)
593
695
  rescue NoMethodError
594
- result = @actual.__send__(symbol, *args, &block)
595
- @context.refute result, Msg.new { "Expected #{@actual.inspect}.#{symbol}(#{args.inspect[1..-2]}) to fail but succeeded." }
696
+ __assert_predicate(symbol, *args, **kwargs, &block)
596
697
  end
597
698
  end
598
699
  self
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  ###
4
- ### $Release: 0.3.3 $
4
+ ### $Release: 0.4.0 $
5
5
  ### $Copyright: copyright(c) 2015-2018 kuwata-lab.com all rights reserved $
6
6
  ### $License: MIT License $
7
7
  ###
@@ -21,10 +21,10 @@ describe Minitest::Ok::AssertionObject do
21
21
  end
22
22
  end
23
23
 
24
- def should_raise
24
+ def should_raise(exception_class=Minitest::Assertion)
25
25
  begin
26
26
  yield
27
- rescue Minitest::Assertion => ex
27
+ rescue exception_class => ex
28
28
  return ex
29
29
  else
30
30
  _called = caller(1).grep(/ok_test\.rb/).map {|x| " - #{x}" }.join("\n")
@@ -249,6 +249,25 @@ describe Minitest::Ok::AssertionObject do
249
249
  end
250
250
 
251
251
 
252
+ describe '#nil?' do
253
+
254
+ it "calls assert_nil()." do
255
+ should_not_raise { ok {nil}.nil? }
256
+ ex = should_raise { ok {" "}.nil? }
257
+ msg = "Expected \" \" to be nil."
258
+ assert_equal msg, ex.message
259
+ end
260
+
261
+ it "calls refute_nil() after NOT() called." do
262
+ should_not_raise { ok {" "}.NOT.nil? }
263
+ ex = should_raise { ok {nil}.NOT.nil? }
264
+ msg = "Expected nil to not be nil."
265
+ assert_equal msg, ex.message
266
+ end
267
+
268
+ end
269
+
270
+
252
271
  describe '#kind_of?' do
253
272
 
254
273
  it "calls assert_kind_of()." do
@@ -392,18 +411,33 @@ describe Minitest::Ok::AssertionObject do
392
411
  should_not_raise { ok {proc{1/0}}.raise?(ZeroDivisionError, "divided by 0") }
393
412
  ex = should_raise { ok {proc{1/0}}.raise?(ZeroDivisionError, "foobar") }
394
413
  #expected = "Expected: \"foobar\"\n Actual: \"divided by 0\""
395
- expected = [
396
- '--- expected',
397
- '+++ actual',
398
- #'@@ -1,2 +1,2 @@',
399
- #'-# encoding: UTF-8',
400
- '@@ -1 +1,3 @@',
401
- '-"foobar"',
402
- '+# encoding: ASCII-8BIT',
403
- '+# valid: true',
404
- '+"divided by 0"',
405
- '',
406
- ].join("\n")
414
+ if RUBY_VERSION >= "2.7"
415
+ expected = [
416
+ '--- expected',
417
+ '+++ actual',
418
+ '@@ -1 +1,3 @@',
419
+ '-"foobar"',
420
+ '+# encoding: ASCII-8BIT',
421
+ '+# valid: true',
422
+ '+"divided by 0"',
423
+ '',
424
+ ].join("\n")
425
+ elsif RUBY_VERSION >= "2.4"
426
+ expected = [
427
+ '--- expected',
428
+ '+++ actual',
429
+ #'@@ -1 +1,3 @@',
430
+ '@@ -1 +1,2 @@',
431
+ '-"foobar"',
432
+ '+# encoding: ASCII-8BIT',
433
+ #'+# valid: true',
434
+ '+"divided by 0"',
435
+ '',
436
+ ].join("\n")
437
+ else
438
+ expected = ("Expected: \"foobar\"\n"\
439
+ " Actual: \"divided by 0\"")
440
+ end
407
441
  assert_equal expected, ex.message
408
442
  end
409
443
 
@@ -411,12 +445,93 @@ describe Minitest::Ok::AssertionObject do
411
445
  should_not_raise { ok {proc{1/0}}.raise?(ZeroDivisionError, /by [0]/) }
412
446
  ex = should_raise { ok {proc{1/0}}.raise?(ZeroDivisionError, /by 99/) }
413
447
  #expected = "Expected /by 99/ to match \"divided by 0\"."
414
- expected = ('Expected /by 99/ to match # encoding: ASCII-8BIT'+"\n"+
415
- '# valid: true'+"\n"+
416
- '"divided by 0".')
448
+ if RUBY_VERSION >= "2.7"
449
+ expected = ("Expected /by 99/ to match # encoding: ASCII-8BIT\n"\
450
+ "# valid: true\n"\
451
+ "\"divided by 0\".")
452
+ elsif RUBY_VERSION >= "2.4"
453
+ expected = ("Expected /by 99/ to match # encoding: ASCII-8BIT\n"\
454
+ "\"divided by 0\".")
455
+ else
456
+ expected = "Expected /by 99/ to match \"divided by 0\"."
457
+ end
417
458
  assert_equal expected, ex.message
418
459
  end
419
460
 
461
+ it "can take optional block which is yielded only when exception raised." do
462
+ msg = /divided by (0|zero)/
463
+ called = false
464
+ ok { proc { 1 / 0 } }.raise?(ZeroDivisionError, msg) do |ex|
465
+ called = true
466
+ end
467
+ assert_equal true, called
468
+ #
469
+ begin
470
+ called = false
471
+ ok { proc {1.0 / 0.0} }.raise?(ZeroDivisionError, msg) do |ex|
472
+ called = true
473
+ end
474
+ assert false
475
+ rescue Minitest::Assertion => _ignore
476
+ end
477
+ assert_equal false, called
478
+ end
479
+
480
+ end
481
+
482
+
483
+ describe '#raise_nothing?' do
484
+
485
+ it "simply calls proc object, does nothing even if exception raised." do
486
+ should_not_raise { ok {proc{1.0/0.0}}.raise_nothing? }
487
+ ex = should_raise(ZeroDivisionError) { ok {proc{1/0}}.raise_nothing? }
488
+ assert_same ZeroDivisionError, ex.class
489
+ assert_equal "divided by 0", ex.message
490
+ end
491
+
492
+ it "counts number of assertion if nothing raised." do
493
+ n1 = self.assertions
494
+ ok { proc { 1.0 / 0.0 } }.raise_nothing?
495
+ n2 = self.assertions
496
+ assert_equal n1+1, n2
497
+ #
498
+ n3 = self.assertions
499
+ begin
500
+ ok { proc { 1 / 0 } }.raise_nothing?
501
+ raise "-- should not reach --"
502
+ rescue Exception
503
+ end
504
+ n4 = self.assertions
505
+ assert_equal n3+1, n4
506
+ end
507
+
508
+ it "yields optional block if any exception raised." do
509
+ called = false
510
+ ok { proc { 1.0 / 0.0 } }.raise_nothing? do
511
+ called = true
512
+ end
513
+ assert_equal false, called
514
+ #
515
+ begin
516
+ ok { proc { 1 / 0 } }.raise_nothing? do
517
+ called = true
518
+ end
519
+ assert false
520
+ rescue Exception
521
+ end
522
+ assert_equal true, called
523
+ end
524
+
525
+ it "deletes lines containing 'minitest/ok.rb' from backtrace of exception." do
526
+ begin
527
+ ok { proc { 1 / 0 } }.raise_nothing?
528
+ assert false
529
+ rescue ZeroDivisionError => ex
530
+ found = ex.backtrace.any? {|bt| bt.include?("minitest/ok.rb") }
531
+ assert !found
532
+ end
533
+ end
534
+
420
535
  end
421
536
 
422
537
 
@@ -427,7 +542,7 @@ describe Minitest::Ok::AssertionObject do
427
542
  ex = should_raise { ok {proc { throw :exit }}.throw?(:finish) }
428
543
  msg = "Expected :finish to have been thrown, not :exit."
429
544
  assert_equal msg, ex.message
430
- ex = should_raise { ok {proc { var = 1 + 1 }}.throw?(:exit) }
545
+ ex = should_raise { ok {proc { _var = 1 + 1 }}.throw?(:exit) }
431
546
  msg = "Expected :exit to have been thrown."
432
547
  assert_equal msg, ex.message
433
548
  end
@@ -659,13 +774,26 @@ describe Minitest::Ok::AssertionObject do
659
774
  (x = ok {nil}).append('bar')
660
775
  end
661
776
  x._mark_as_tested()
662
- msg = /^undefined method `append' for \#<Mini[tT]est::Ok::AssertionObject:\w+/
777
+ if RUBY_VERSION >= "3.3"
778
+ msg = /^undefined method `append' for an instance of Mini[tT]est::Ok::AssertionObject/
779
+ else
780
+ msg = /^undefined method `append' for \#<Mini[tT]est::Ok::AssertionObject:\w+/
781
+ end
663
782
  assert_match msg, ex.message
664
783
  #
665
784
  ex = assert_raises(NoMethodError) do
666
785
  ok {nil}.start_with?('bar')
667
786
  end
668
- msg = "undefined method `start_with?' for nil:NilClass"
787
+ if RUBY_VERSION >= "3.3"
788
+ msg = "undefined method `start_with?' for nil"
789
+ elsif RUBY_VERSION =~ /^3\.1\./
790
+ msg = ("undefined method `start_with?' for nil:NilClass\n"\
791
+ "\n"\
792
+ " result = @actual.__send__(symbol, *args, **kwargs, &block)\n"\
793
+ " ^^^^^^^^^")
794
+ else
795
+ msg = "undefined method `start_with?' for nil:NilClass"
796
+ end
669
797
  assert_equal msg, ex.message
670
798
  end
671
799
 
@@ -947,4 +1075,12 @@ describe Minitest::Ok::AssertionObject do
947
1075
  end
948
1076
 
949
1077
 
1078
+ it "predicate methods are handled by `assert_predicate()`." do
1079
+ should_not_raise { ok {1+1}.eql?(2) }
1080
+ ex = should_raise { ok {1+1}.eql?(0) }
1081
+ msg = "Expected 2.eql?(0) but failed."
1082
+ assert_equal msg, ex.message
1083
+ end
1084
+
1085
+
950
1086
  end
data/test/test_helper.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  # -*- coding: utf-8 -*-
2
2
 
3
3
  ###
4
- ### $Release: 0.3.3 $
4
+ ### $Release: 0.4.0 $
5
5
  ### $Copyright: copyright(c) 2015-2018 kuwata-lab.com all rights reserved $
6
6
  ### $License: MIT License $
7
7
  ###
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: minitest-ok
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - makoto kuwata
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-01 00:00:00.000000000 Z
11
+ date: 2024-09-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: minitest
@@ -48,7 +48,7 @@ homepage: https://github.com/kwatch/minitest-ok
48
48
  licenses:
49
49
  - MIT-License
50
50
  metadata: {}
51
- post_install_message:
51
+ post_install_message:
52
52
  rdoc_options: []
53
53
  require_paths:
54
54
  - lib
@@ -63,8 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  requirements: []
66
- rubygems_version: 3.1.2
67
- signing_key:
66
+ rubygems_version: 3.5.11
67
+ signing_key:
68
68
  specification_version: 4
69
69
  summary: "'ok {1+1} == 2' instead of 'assert_equal 2, 1+1'"
70
70
  test_files: []