oktest 1.2.1 → 1.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/MIT-LICENSE +1 -1
- data/README.md +13 -8
- data/Rakefile.rb +4 -4
- data/lib/oktest.rb +40 -13
- data/oktest.gemspec +11 -12
- data/test/assertion_test.rb +105 -10
- data/test/filter_test.rb +2 -2
- data/test/fixture_test.rb +2 -2
- data/test/generator_test.rb +2 -2
- data/test/helper_test.rb +2 -2
- data/test/initialize.rb +2 -2
- data/test/mainapp_test.rb +3 -3
- data/test/matcher_test.rb +2 -2
- data/test/misc_test.rb +2 -2
- data/test/node_test.rb +2 -2
- data/test/reporter_test.rb +2 -2
- data/test/runner_test.rb +36 -2
- data/test/tc.rb +2 -2
- data/test/util_test.rb +2 -2
- data/test/utilhelper_test.rb +2 -2
- data/test/visitor_test.rb +2 -2
- metadata +11 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e79b6abcb74066a35308ed22341f6fff30b2c9a5bd485e2850c5428db9843f1
|
4
|
+
data.tar.gz: a2fef95c6c2207b9732a31bd25b61d3b43389e84f55f55399e465511ce55ea4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 60e20c0564717185d9291ea5beca7bf09a55e924c259847660a5519831124213db4ddb8945711bc21f7ea6bae69c8e24f089fc9e15e1aab6047dc50fcfe46bf8
|
7
|
+
data.tar.gz: fef79a96010440ea673342ec1a76bc313d88b0ed1f8d400a7832ddfbb23157b08addd96aa84ae43b523cfd96a6fa9aadc4548435d34705b67dae507d9bd6e97c
|
data/MIT-LICENSE
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Oktest.rb is a new-style testing library for Ruby.
|
6
6
|
|
7
|
-
* `ok {actual} == expected` style [
|
7
|
+
* `ok {actual} == expected` style [assertions](#assertions).
|
8
8
|
* [Fixture injection](#fixture-injection) inspired by dependency injection.
|
9
9
|
* Structured test specifications like RSpec.
|
10
10
|
* [JSON Matcher](#json-matcher) similar to JSON Schema.
|
@@ -43,7 +43,7 @@ Oktest.scope do #
|
|
43
43
|
end #
|
44
44
|
```
|
45
45
|
|
46
|
-
Oktest.rb requires Ruby 2.
|
46
|
+
Oktest.rb requires Ruby 2.4 or later.
|
47
47
|
|
48
48
|
|
49
49
|
|
@@ -817,10 +817,15 @@ ok {pr}.raise?(NoMethodError) {|exc|
|
|
817
817
|
ok {exc.class} == NoMethodError
|
818
818
|
ok {exc.message} == "undefined method `len' for \"abc\":String"
|
819
819
|
}
|
820
|
+
## or (Oktest.rb >= 1.3)
|
821
|
+
exc = ok {pr}.raise?(NoMethodError)
|
822
|
+
ok {exc.class} == NoMethodError
|
823
|
+
ok {exc.message} == "undefined method `len' for \"abc\":String"
|
820
824
|
|
821
825
|
## assert that procedure does NOT raise any exception
|
822
|
-
ok {pr}.
|
823
|
-
|
826
|
+
ok {pr}.raise_nothing? # (>= Oktest 1.3)
|
827
|
+
ok {pr}.NOT.raise? # no exception class nor error message
|
828
|
+
not_ok {pr}.raise? # same as above
|
824
829
|
|
825
830
|
## assert that procedure throws symbol.
|
826
831
|
pr2 = proc do
|
@@ -829,8 +834,8 @@ end
|
|
829
834
|
ok {pr2}.throw?(:quit) # pass if :quit thrown, fail if other or nothing thrown
|
830
835
|
```
|
831
836
|
|
832
|
-
If procedure contains `raise "errmsg"` instead of `raise ErrorClass, "errmsg"`,
|
833
|
-
you can omit exception class
|
837
|
+
If a procedure contains `raise "errmsg"` instead of `raise ErrorClass, "errmsg"`,
|
838
|
+
you can omit exception class like `ok {pr}.raise?("errmsg")`.
|
834
839
|
|
835
840
|
<!--
|
836
841
|
test/example14b_test.rb:
|
@@ -939,7 +944,7 @@ require 'oktest'
|
|
939
944
|
|
940
945
|
Oktest::AssertionObject.class_eval do
|
941
946
|
def readable? # custom assertion: file readable?
|
942
|
-
|
947
|
+
__done()
|
943
948
|
result = File.readable?(@actual)
|
944
949
|
__assert(result == @bool) {
|
945
950
|
"File.readable?($<actual>) == #{@bool}: failed.\n" +
|
@@ -2265,4 +2270,4 @@ See [CHANGES.md](https://github.com/kwatch/oktest/blob/ruby/ruby/CHANGES.md).
|
|
2265
2270
|
## License and Copyright
|
2266
2271
|
|
2267
2272
|
* $License: MIT License $
|
2268
|
-
* $Copyright: copyright(c) 2011-
|
2273
|
+
* $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
data/Rakefile.rb
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
9
9
|
PROJECT = "oktest"
|
10
10
|
RELEASE = ENV['RELEASE'] || "0.0.0"
|
11
|
-
COPYRIGHT = "copyright(c) 2011-
|
11
|
+
COPYRIGHT = "copyright(c) 2011-2024 kuwata-lab.com all rights reserved"
|
12
12
|
LICENSE = "MIT License"
|
13
13
|
|
14
|
-
$ruby_versions ||= %w[2.4 2.5 2.6 2.7 3.0]
|
14
|
+
$ruby_versions ||= %w[2.4 2.5 2.6 2.7 3.0 3.1 3.2 3.3]
|
15
15
|
|
16
16
|
desc "show release guide"
|
17
17
|
task :guide do
|
data/lib/oktest.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
@@ -12,7 +12,7 @@ require 'set'
|
|
12
12
|
module Oktest
|
13
13
|
|
14
14
|
|
15
|
-
VERSION = '$Release: 1.
|
15
|
+
VERSION = '$Release: 1.3.1 $'.split()[1]
|
16
16
|
|
17
17
|
|
18
18
|
class OktestError < StandardError
|
@@ -236,14 +236,29 @@ module Oktest
|
|
236
236
|
self
|
237
237
|
end
|
238
238
|
|
239
|
-
|
239
|
+
if RUBY_VERSION >= "2.7"
|
240
|
+
def method_missing(method_name, *args, **kwargs, &b)
|
241
|
+
#; [!ttow6] raises NoMethodError when not a boolean method.
|
242
|
+
return super unless method_name.to_s =~ /\?\z/
|
243
|
+
#; [!gd3vg] supports keyword arguments on Ruby >= 2.7.
|
244
|
+
__method_missing(method_name, args, kwargs) {
|
245
|
+
@actual.__send__(method_name, *args, **kwargs, &b)
|
246
|
+
}
|
247
|
+
end
|
248
|
+
else
|
249
|
+
def method_missing(method_name, *args, &b)
|
250
|
+
return super unless method_name.to_s =~ /\?\z/
|
251
|
+
__method_missing(method_name, args, nil) {
|
252
|
+
@actual.__send__(method_name, *args, &b)
|
253
|
+
}
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
def __method_missing(method_name, args, kwargs)
|
240
258
|
__done()
|
241
259
|
#; [!yjnxb] enables to handle boolean methods.
|
242
|
-
#; [!ttow6] raises NoMethodError when not a boolean method.
|
243
|
-
method_name.to_s =~ /\?\z/ or
|
244
|
-
super
|
245
260
|
begin
|
246
|
-
ret =
|
261
|
+
ret = yield
|
247
262
|
rescue NoMethodError, TypeError => exc
|
248
263
|
#; [!f0ekh] skip top of backtrace when NoMethodError raised.
|
249
264
|
while !exc.backtrace.empty? && exc.backtrace[0].start_with?(__FILE__)
|
@@ -254,10 +269,11 @@ module Oktest
|
|
254
269
|
#; [!cun59] fails when boolean method failed returned false.
|
255
270
|
#; [!4objh] is available with NOT.
|
256
271
|
if ret == true || ret == false
|
272
|
+
#; [!5y9iu] reports args and kwargs in error message.
|
273
|
+
s = __inspect_args_and_kwargs(args, kwargs)
|
257
274
|
__assert(@bool == ret) {
|
258
|
-
args = args.empty? ? '' : "(#{args.collect {|x| x.inspect }.join(', ')})"
|
259
275
|
eq = @bool ? '' : ' == false'
|
260
|
-
"$<actual>.#{method_name}#{
|
276
|
+
"$<actual>.#{method_name}#{s}#{eq}: failed.\n"\
|
261
277
|
" $<actual>: #{@actual.inspect}"
|
262
278
|
}
|
263
279
|
#; [!sljta] raises TypeError when boolean method returned non-boolean value.
|
@@ -267,6 +283,17 @@ module Oktest
|
|
267
283
|
#; [!7bbrv] returns self when passed.
|
268
284
|
self
|
269
285
|
end
|
286
|
+
private :__method_missing
|
287
|
+
|
288
|
+
def __inspect_args_and_kwargs(args, kwargs)
|
289
|
+
kwargs ||= {}
|
290
|
+
arr = [
|
291
|
+
(args.empty? ? nil : args.collect {|x| x.inspect}),
|
292
|
+
(kwargs.empty? ? nil : kwargs.collect {|k, v| "#{k}: #{v.inspect}" }),
|
293
|
+
].compact.flatten
|
294
|
+
return arr.empty? ? "" : "(#{arr.join(', ')})"
|
295
|
+
end
|
296
|
+
private :__inspect_args_and_kwargs
|
270
297
|
|
271
298
|
def raise!(errcls=nil, errmsg=nil, &b)
|
272
299
|
#; [!8k6ee] compares error class by '.is_a?' instead of '=='.
|
@@ -349,8 +376,8 @@ module Oktest
|
|
349
376
|
#; [!vnc6b] sets exception object into '#exc' attribute.
|
350
377
|
(class << proc_obj; self; end).class_eval { attr_accessor :exc }
|
351
378
|
proc_obj.exc = exc
|
352
|
-
#; [!y1b28] returns
|
353
|
-
|
379
|
+
#; [!y1b28] returns exception object.
|
380
|
+
return exc
|
354
381
|
end
|
355
382
|
|
356
383
|
def throw?(expected)
|
@@ -2310,7 +2337,7 @@ END
|
|
2310
2337
|
@os_windows = RUBY_PLATFORM =~ /mswin|mingw/i
|
2311
2338
|
@auto_run = true
|
2312
2339
|
@ok_location = true # false will make 'ok()' faster
|
2313
|
-
@color_available = ! @os_windows || ENV['COLORTERM'] =~ /color|24bit/i
|
2340
|
+
@color_available = ! @os_windows || ENV['WT_SESSION'] || ENV['COLORTERM'] =~ /color|24bit/i
|
2314
2341
|
@color_enabled = @color_available && $stdout.tty?
|
2315
2342
|
@diff_command = @os_windows ? "diff.exe -u" : "diff -u"
|
2316
2343
|
|
data/oktest.gemspec
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
4
|
+
### $Release: 1.3.1 $
|
5
5
|
### $License: MIT License $
|
6
|
-
### $Copyright: copyright(c) 2011-
|
6
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
7
7
|
###
|
8
8
|
|
9
9
|
require 'rubygems'
|
@@ -13,24 +13,23 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.name = "oktest"
|
14
14
|
s.author = "kwatch"
|
15
15
|
s.email = "kwatch@gmail.com"
|
16
|
-
s.version = "$Release: 1.
|
16
|
+
s.version = "$Release: 1.3.1 $".split()[1]
|
17
17
|
s.license = "MIT"
|
18
18
|
s.platform = Gem::Platform::RUBY
|
19
|
-
s.homepage = "https://github.com/kwatch/oktest/tree/ruby"
|
20
|
-
s.summary = "new style testing library"
|
19
|
+
s.homepage = "https://github.com/kwatch/oktest/tree/ruby/ruby"
|
20
|
+
s.summary = "a new style testing library"
|
21
21
|
s.description = <<'END'
|
22
22
|
Oktest.rb is a new-style testing library for Ruby.
|
23
|
+
You can write `ok {1+1} == 2` instead of `assert_equal 2, 1+1` or
|
24
|
+
`expect(1+1).to eq 2`.
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
* Filtering testcases by pattern or tags.
|
28
|
-
* Blue/red color instead of green/red for accesability.
|
29
|
-
* Small code size (about 2300 lines) and good performance.
|
26
|
+
In addition, Oktest.rb supports **Fixture injection** feature
|
27
|
+
inspired by dependency injection and **JSON Matcher** feature
|
28
|
+
similar to JSON schema.
|
30
29
|
|
31
30
|
See https://github.com/kwatch/oktest/tree/ruby/ruby for details.
|
32
31
|
END
|
33
|
-
s.required_ruby_version = ">= 2.
|
32
|
+
s.required_ruby_version = ">= 2.4"
|
34
33
|
s.add_dependency "diff-lcs", "~> 1.0"
|
35
34
|
s.add_dependency "benry-recorder", "~> 1.0"
|
36
35
|
|
data/test/assertion_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
@@ -351,7 +351,7 @@ END
|
|
351
351
|
end
|
352
352
|
end
|
353
353
|
|
354
|
-
describe '#method_missing()' do
|
354
|
+
describe '#method_missing()' do
|
355
355
|
it "[!7bbrv] returns self when passed." do
|
356
356
|
should_return_self { ok {"file.png"}.end_with?(".png") }
|
357
357
|
end
|
@@ -365,6 +365,27 @@ describe '#method_missing()' do
|
|
365
365
|
ok {"a"}.start_with
|
366
366
|
end
|
367
367
|
end
|
368
|
+
it "[!gd3vg] supports keyword arguments on Ruby >= 2.7." do
|
369
|
+
#if RUBY_VERSION >= "2.7"
|
370
|
+
if true
|
371
|
+
eval <<-END
|
372
|
+
class Dummy392
|
373
|
+
def foo?(a, b, c: nil, d: nil)
|
374
|
+
return true
|
375
|
+
end
|
376
|
+
end
|
377
|
+
END
|
378
|
+
PASS! { ok {Dummy392.new}.foo?(123, 'abc', c: 45, d: true) }
|
379
|
+
if RUBY_VERSION >= "2.7"
|
380
|
+
errmsg = "unknown keywords: :x, :y"
|
381
|
+
else
|
382
|
+
errmsg = "unknown keywords: x, y"
|
383
|
+
end
|
384
|
+
ERROR!(ArgumentError, errmsg) do
|
385
|
+
ok {Dummy392.new}.foo?(123, 'abc', x: 45, y: true)
|
386
|
+
end
|
387
|
+
end
|
388
|
+
end
|
368
389
|
it "[!f0ekh] skip top of backtrace when NoMethodError raised." do
|
369
390
|
exc = ERROR!(NoMethodError) do
|
370
391
|
ok {[1]}.start_with?(1)
|
@@ -399,12 +420,45 @@ describe '#method_missing()' do
|
|
399
420
|
ok {s}.sos?
|
400
421
|
end
|
401
422
|
end
|
423
|
+
it "[!5y9iu] reports args and kwargs in error message." do
|
424
|
+
if RUBY_VERSION >= "2.7"
|
425
|
+
str = '123, "abc", x: "45", y: true'
|
426
|
+
else
|
427
|
+
str = '123, "abc", {:x=>"45", :y=>true}'
|
428
|
+
end
|
429
|
+
errmsg = "$<actual>.bla?(#{str}): failed.\n"\
|
430
|
+
" $<actual>: \"Blabla\""
|
431
|
+
FAIL!(errmsg) do
|
432
|
+
s = "Blabla"
|
433
|
+
def s.bla?(*a, **k); return false; end
|
434
|
+
ok {s}.bla?(123, "abc", x: "45", y: true)
|
435
|
+
end
|
436
|
+
#
|
437
|
+
obj = Oktest::AssertionObject.new(nil, true, nil)
|
438
|
+
expected = '(123, "abc", c: "45", d: true)'
|
439
|
+
actual = obj.instance_eval {
|
440
|
+
__inspect_args_and_kwargs([123, "abc"], c: "45", d: true)
|
441
|
+
}
|
442
|
+
assert_eq actual, expected
|
443
|
+
end
|
402
444
|
end
|
403
445
|
|
404
446
|
describe '#raise?' do
|
405
|
-
it "[!y1b28] returns
|
447
|
+
it "[!y1b28] returns exception object." do
|
406
448
|
pr = proc { "SOS".sos }
|
407
|
-
|
449
|
+
if RUBY_VERSION >= "3.3"
|
450
|
+
expected = "undefined method `sos' for an instance of String"
|
451
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
452
|
+
expected = "undefined method `sos' for \"SOS\":String\n"\
|
453
|
+
"\n"\
|
454
|
+
" pr = proc { \"SOS\".sos }\n"\
|
455
|
+
" ^^^^"
|
456
|
+
else
|
457
|
+
expected = "undefined method `sos' for \"SOS\":String"
|
458
|
+
end
|
459
|
+
ret = ok {pr}.raise?(NoMethodError, expected)
|
460
|
+
assert_eq ret.class, NoMethodError
|
461
|
+
assert_eq ret.message, expected
|
408
462
|
end
|
409
463
|
it "[!2rnni] 1st argument can be error message string or rexp." do
|
410
464
|
pr = proc { raise "something wrong" }
|
@@ -440,14 +494,36 @@ describe '#method_missing()' do
|
|
440
494
|
end
|
441
495
|
it "[!4n3ed] reraises if exception is not matched to specified error class." do
|
442
496
|
pr = proc { "SOS".sos }
|
443
|
-
|
497
|
+
if RUBY_VERSION >= "3.3"
|
498
|
+
errmsg = "undefined method `sos' for an instance of String"
|
499
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
500
|
+
errmsg = "undefined method `sos' for \"SOS\":String\n"\
|
501
|
+
"\n"\
|
502
|
+
" pr = proc { \"SOS\".sos }\n"\
|
503
|
+
" ^^^^"
|
504
|
+
else
|
505
|
+
errmsg = "undefined method `sos' for \"SOS\":String"
|
506
|
+
end
|
444
507
|
ERROR!(NoMethodError, errmsg) { ok {pr}.raise?(ArgumentError) }
|
445
508
|
end
|
446
509
|
it "[!tpxlv] accepts string or regexp as error message." do
|
510
|
+
if RUBY_VERSION >= "3.1"
|
511
|
+
expected = "undefined method `sos' for \"SOS\":String\n"\
|
512
|
+
"\n"\
|
513
|
+
" pr = proc { \"SOS\".sos }\n"\
|
514
|
+
" ^^^^"
|
515
|
+
else
|
516
|
+
expected = "undefined method `sos' for \"SOS\":String"
|
517
|
+
end
|
447
518
|
pr = proc { "SOS".sos }
|
448
|
-
PASS! { ok {pr}.raise?(NoMethodError,
|
519
|
+
PASS! { ok {pr}.raise?(NoMethodError, ) }
|
449
520
|
pr = proc { "SOS".sos }
|
450
|
-
|
521
|
+
if RUBY_VERSION >= "3.3"
|
522
|
+
expected = /^undefined method `sos' for an instance of String$/
|
523
|
+
else
|
524
|
+
expected = /^undefined method `sos' for "SOS":String$/
|
525
|
+
end
|
526
|
+
PASS! { ok {pr}.raise?(NoMethodError, expected) }
|
451
527
|
end
|
452
528
|
it "[!4c6x3] not check exception class when nil specified as errcls." do
|
453
529
|
pr = proc { foobar() }
|
@@ -483,7 +559,16 @@ describe '#method_missing()' do
|
|
483
559
|
end
|
484
560
|
it "[!61vtv] assertion fails when specified exception raised." do
|
485
561
|
pr = proc { "SOS".foobar }
|
486
|
-
|
562
|
+
if RUBY_VERSION >= "3.3"
|
563
|
+
errmsg = "NoMethodError should not be raised but got #<NoMethodError: undefined method `foobar' for an instance of String>."
|
564
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
565
|
+
errmsg = "NoMethodError should not be raised but got #<NoMethodError: undefined method `foobar' for \"SOS\":String\n"\
|
566
|
+
"\n"\
|
567
|
+
" pr = proc { \"SOS\".foobar }\n"\
|
568
|
+
" ^^^^^^^>."
|
569
|
+
else
|
570
|
+
errmsg = "NoMethodError should not be raised but got #<NoMethodError: undefined method `foobar' for \"SOS\":String>."
|
571
|
+
end
|
487
572
|
FAIL!(errmsg) { ok {pr}.NOT.raise?(NoMethodError) }
|
488
573
|
end
|
489
574
|
it "[!smprc] compares error class with '==' operator, not '.is_a?'." do
|
@@ -516,7 +601,17 @@ describe '#method_missing()' do
|
|
516
601
|
PASS! { ok {pr}.raise?(NoMethodError) }
|
517
602
|
assert pr.respond_to?(:exc)
|
518
603
|
assert pr.exc.is_a?(NoMethodError)
|
519
|
-
|
604
|
+
if RUBY_VERSION >= "3.3"
|
605
|
+
errmsg = "undefined method `foobar' for an instance of String"
|
606
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
607
|
+
errmsg = "undefined method `foobar' for \"SOS\":String\n"\
|
608
|
+
"\n"\
|
609
|
+
" pr = proc { \"SOS\".foobar }\n"\
|
610
|
+
" ^^^^^^^"
|
611
|
+
else
|
612
|
+
errmsg = "undefined method `foobar' for \"SOS\":String"
|
613
|
+
end
|
614
|
+
assert_eq pr.exc.message, errmsg
|
520
615
|
#
|
521
616
|
pr = proc { nil }
|
522
617
|
assert !pr.respond_to?(:exc)
|
data/test/filter_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/fixture_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/generator_test.rb
CHANGED
data/test/helper_test.rb
CHANGED
data/test/initialize.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/mainapp_test.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
###
|
2
|
-
### $Release: 1.
|
3
|
-
### $Copyright: copyright(c) 2011-
|
2
|
+
### $Release: 1.3.1 $
|
3
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
4
4
|
### $License: MIT License $
|
5
5
|
###
|
6
6
|
|
@@ -257,7 +257,7 @@ END
|
|
257
257
|
end
|
258
258
|
|
259
259
|
it "[!qqizl] '--version' option prints version number." do
|
260
|
-
expected = '$Release: 1.
|
260
|
+
expected = '$Release: 1.3.1 $'.split()[1] + "\n"
|
261
261
|
#
|
262
262
|
ret, sout, serr = run("--version")
|
263
263
|
assert_eq ret, 0
|
data/test/matcher_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/misc_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/node_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/reporter_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/runner_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
@@ -118,7 +118,24 @@ topic: "Parent"
|
|
118
118
|
$<actual>: 2
|
119
119
|
$<expected>: 1>
|
120
120
|
spec: "spec#3"
|
121
|
+
END
|
122
|
+
if RUBY_VERSION >= "3.3"
|
123
|
+
expected += <<'END'
|
124
|
+
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for an instance of String>
|
125
|
+
END
|
126
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
127
|
+
expected += <<'END'
|
128
|
+
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for "":String
|
129
|
+
|
130
|
+
spec("spec#3") { "".null? } # error
|
131
|
+
^^^^^^>
|
132
|
+
END
|
133
|
+
else
|
134
|
+
expected += <<'END'
|
121
135
|
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for "":String>
|
136
|
+
END
|
137
|
+
end
|
138
|
+
expected += <<'END'
|
122
139
|
spec: "spec#4"
|
123
140
|
/spec: status=:SKIP, error=#<Oktest::SkipException: REASON>
|
124
141
|
spec: "spec#5"
|
@@ -285,7 +302,24 @@ topic: "topic#A"
|
|
285
302
|
/spec: status=:PASS
|
286
303
|
spec: "spec#2"
|
287
304
|
- at_end A2
|
305
|
+
END
|
306
|
+
if RUBY_VERSION >= "3.3"
|
307
|
+
expected += <<'END'
|
308
|
+
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for an instance of String>
|
309
|
+
END
|
310
|
+
elsif RUBY_VERSION =~ /^3\.1\./
|
311
|
+
expected += <<'END'
|
312
|
+
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for "":String
|
313
|
+
|
314
|
+
spec("spec#2") { at_end { puts " - at_end A2" }; "".null? } # raises NoMethodError
|
315
|
+
^^^^^^>
|
316
|
+
END
|
317
|
+
else
|
318
|
+
expected += <<'END'
|
288
319
|
/spec: status=:ERROR, error=#<NoMethodError: undefined method `null?' for "":String>
|
320
|
+
END
|
321
|
+
end
|
322
|
+
expected += <<'END'
|
289
323
|
/topic
|
290
324
|
/file
|
291
325
|
END
|
data/test/tc.rb
CHANGED
@@ -34,9 +34,9 @@ class TC
|
|
34
34
|
obj.instance_eval(&b)
|
35
35
|
rescue => exc
|
36
36
|
if exc.is_a?(AssertionFailed)
|
37
|
-
COUNTS[:fail] += 1; puts "
|
37
|
+
COUNTS[:fail] += 1; puts "\e[31mFAILED!\e[0m" unless ENV['TC_QUIET']
|
38
38
|
else
|
39
|
-
COUNTS[:error] += 1; puts "
|
39
|
+
COUNTS[:error] += 1; puts "\e[31mERROR!\e[0m" unless ENV['TC_QUIET']
|
40
40
|
end
|
41
41
|
puts " #{exc.class.name}: #{exc.message}"
|
42
42
|
exc.backtrace.each do |bt|
|
data/test/util_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/utilhelper_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
data/test/visitor_test.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
5
|
-
### $Copyright: copyright(c) 2011-
|
4
|
+
### $Release: 1.3.1 $
|
5
|
+
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
6
6
|
### $License: MIT License $
|
7
7
|
###
|
8
8
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: oktest
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- kwatch
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-09-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: diff-lcs
|
@@ -40,13 +40,12 @@ dependencies:
|
|
40
40
|
version: '1.0'
|
41
41
|
description: |
|
42
42
|
Oktest.rb is a new-style testing library for Ruby.
|
43
|
+
You can write `ok {1+1} == 2` instead of `assert_equal 2, 1+1` or
|
44
|
+
`expect(1+1).to eq 2`.
|
43
45
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
* Filtering testcases by pattern or tags.
|
48
|
-
* Blue/red color instead of green/red for accesability.
|
49
|
-
* Small code size (about 2300 lines) and good performance.
|
46
|
+
In addition, Oktest.rb supports **Fixture injection** feature
|
47
|
+
inspired by dependency injection and **JSON Matcher** feature
|
48
|
+
similar to JSON schema.
|
50
49
|
|
51
50
|
See https://github.com/kwatch/oktest/tree/ruby/ruby for details.
|
52
51
|
email: kwatch@gmail.com
|
@@ -80,7 +79,7 @@ files:
|
|
80
79
|
- test/util_test.rb
|
81
80
|
- test/utilhelper_test.rb
|
82
81
|
- test/visitor_test.rb
|
83
|
-
homepage: https://github.com/kwatch/oktest/tree/ruby
|
82
|
+
homepage: https://github.com/kwatch/oktest/tree/ruby/ruby
|
84
83
|
licenses:
|
85
84
|
- MIT
|
86
85
|
metadata: {}
|
@@ -92,16 +91,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
92
91
|
requirements:
|
93
92
|
- - ">="
|
94
93
|
- !ruby/object:Gem::Version
|
95
|
-
version: '2.
|
94
|
+
version: '2.4'
|
96
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
96
|
requirements:
|
98
97
|
- - ">="
|
99
98
|
- !ruby/object:Gem::Version
|
100
99
|
version: '0'
|
101
100
|
requirements: []
|
102
|
-
rubygems_version: 3.
|
101
|
+
rubygems_version: 3.5.11
|
103
102
|
signing_key:
|
104
103
|
specification_version: 4
|
105
|
-
summary: new style testing library
|
104
|
+
summary: a new style testing library
|
106
105
|
test_files:
|
107
106
|
- test/run_all.rb
|