oktest 1.4.0 → 1.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +42 -5
- data/Rakefile.rb +1 -1
- data/lib/oktest.rb +32 -9
- data/oktest.gemspec +3 -3
- data/test/assertion_test.rb +229 -227
- data/test/filter_test.rb +122 -120
- data/test/fixture_test.rb +33 -32
- data/test/generator_test.rb +20 -19
- data/test/helper_test.rb +280 -274
- data/test/init.rb +44 -0
- data/test/mainapp_test.rb +194 -190
- data/test/matcher_test.rb +156 -126
- data/test/misc_test.rb +31 -30
- data/test/nanot.rb +307 -0
- data/test/node_test.rb +296 -252
- data/test/reporter_test.rb +249 -208
- data/test/runner_test.rb +101 -100
- data/test/util_test.rb +196 -193
- data/test/utilhelper_test.rb +35 -38
- data/test/visitor_test.rb +54 -50
- metadata +10 -10
- data/test/initialize.rb +0 -22
- data/test/tc.rb +0 -128
- /data/test/{run_all.rb → all.rb} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 71a8ad713c8536b57d4ed59541ea7a734da36187f502566aefee6479b3858e5f
|
4
|
+
data.tar.gz: e55ae061182626cab3b75559a0353d13fdbe5042f119a035474e6c28be311798
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 579a24fb8c2847bbd53805367d36176cd09fbeacc2b5690212589108517ba19f809fea79a6bfb2b07e87ff83925ef8ea9aa18a0eb420a775683f1876bf60f3e8
|
7
|
+
data.tar.gz: 0a3f94d919a328d8d8bfdc19da5e512e2896252df6dba80d2775fc5fedaed245b1465553c56541c110eb79cd2b68dd3cb5aea0685fe89e7b555b02efa7a2fcde
|
data/README.md
CHANGED
@@ -96,6 +96,8 @@ Oktest.rb requires Ruby 2.4 or later.
|
|
96
96
|
* <a href="#complex-example">Complex Example</a>
|
97
97
|
* <a href="#helper-methods-for-json-matcher">Helper Methods for JSON Matcher</a>
|
98
98
|
* <a href="#tips">Tips</a>
|
99
|
+
* <a href="#oktesttopic"><code>Oktest.topic()</code></a>
|
100
|
+
* <a href="#topic-target">Topic target</a>
|
99
101
|
* <a href="#ok--in-minitest"><code>ok {}</code> in MiniTest</a>
|
100
102
|
* <a href="#testing-rack-application">Testing Rack Application</a>
|
101
103
|
* <a href="#environment-variale-oktest_rb">Environment Variale <code>$OKTEST_RB</code></a>
|
@@ -1904,8 +1906,8 @@ Oktest.scope do
|
|
1904
1906
|
"id": 1000..9999, # range object
|
1905
1907
|
"age": Integer, # class object
|
1906
1908
|
"email": /^\w+@example\.com$/, # regexp
|
1907
|
-
"gender": Set
|
1908
|
-
"deleted": Set
|
1909
|
+
"gender": Set["M", "F"], # Set object ("M" or "F")
|
1910
|
+
"deleted": Set[true, false], # boolean (true or false)
|
1909
1911
|
"tags": [/^\w+$/].each, # Enumerator object (!= Array obj)
|
1910
1912
|
"twitter?": /^@\w+$/, # key 'xxx?' means optional value
|
1911
1913
|
}
|
@@ -1980,7 +1982,7 @@ Oktest.scope do
|
|
1980
1982
|
{
|
1981
1983
|
"team": String,
|
1982
1984
|
"members": [
|
1983
|
-
{"id": 1000..9999, "name": String, "gender": Set
|
1985
|
+
{"id": 1000..9999, "name": String, "gender": Set["M", "F"]}
|
1984
1986
|
].each, # Enumerator object (!= Array obj)
|
1985
1987
|
"leader?": String, # key 'xxx?' means optional value
|
1986
1988
|
}
|
@@ -2061,7 +2063,7 @@ ok {JSON({"val": 99 })} === {"val": 1..100} # implies Integer value
|
|
2061
2063
|
|
2062
2064
|
Oktest.rb provides some helper methods and objects:
|
2063
2065
|
|
2064
|
-
* `Enum(x, y, z)` is almost same as `Set
|
2066
|
+
* `Enum(x, y, z)` is almost same as `Set[x, y, z]`.
|
2065
2067
|
* `Bool()` is same as `Enum(true, false)`.
|
2066
2068
|
* `Length(3)` matches to length 3, and `Length(1..3)` matches to length 1..3.
|
2067
2069
|
|
@@ -2071,7 +2073,7 @@ test/example44_test.rb:
|
|
2071
2073
|
```ruby
|
2072
2074
|
actual = {"gender": "M", "deleted": false, "code": "ABCD1234"}
|
2073
2075
|
ok {JSON(actual)} == {
|
2074
|
-
"gender": Enum("M", "F"), # same as Set
|
2076
|
+
"gender": Enum("M", "F"), # same as Set["M", "F"]
|
2075
2077
|
"deleted": Bool(), # same as Enum(true, false)
|
2076
2078
|
"code": Length(6..10), # code length should be 6..10
|
2077
2079
|
}
|
@@ -2082,6 +2084,41 @@ test/example44_test.rb:
|
|
2082
2084
|
## Tips
|
2083
2085
|
|
2084
2086
|
|
2087
|
+
### `Oktest.topic()`
|
2088
|
+
|
2089
|
+
If you want to reduce nested block depth, `Oktest.topic()` will help you.
|
2090
|
+
|
2091
|
+
```ruby
|
2092
|
+
## This...
|
2093
|
+
Oktest.topic HelloClass do
|
2094
|
+
...
|
2095
|
+
end
|
2096
|
+
|
2097
|
+
## ...is equivarent to...
|
2098
|
+
Oktest.scope do
|
2099
|
+
Oktest.toic HelloClass do
|
2100
|
+
...
|
2101
|
+
end
|
2102
|
+
end
|
2103
|
+
```
|
2104
|
+
|
2105
|
+
(Since Oktest >= 1.5)
|
2106
|
+
|
2107
|
+
|
2108
|
+
### Topic target
|
2109
|
+
|
2110
|
+
`topic()` passes an target argument to the block.
|
2111
|
+
|
2112
|
+
```ruby
|
2113
|
+
topic '/api/orders/{id}' do |urlpath|
|
2114
|
+
p urlpath #=> "/api/orders/{id}"
|
2115
|
+
...
|
2116
|
+
end
|
2117
|
+
```
|
2118
|
+
|
2119
|
+
(Since Oktest >= 1.5)
|
2120
|
+
|
2121
|
+
|
2085
2122
|
### `ok {}` in MiniTest
|
2086
2123
|
|
2087
2124
|
If you want to use `ok {actual} == expected` style assertion in MiniTest,
|
data/Rakefile.rb
CHANGED
data/lib/oktest.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
4
|
###
|
5
|
-
### $Release: 1.
|
5
|
+
### $Release: 1.5.0 $
|
6
6
|
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
7
7
|
### $License: MIT License $
|
8
8
|
###
|
@@ -13,7 +13,7 @@ require 'set'
|
|
13
13
|
module Oktest
|
14
14
|
|
15
15
|
|
16
|
-
VERSION = '$Release: 1.
|
16
|
+
VERSION = '$Release: 1.5.0 $'.split()[1]
|
17
17
|
|
18
18
|
|
19
19
|
class OktestError < StandardError
|
@@ -1125,6 +1125,13 @@ END
|
|
1125
1125
|
attr_reader :target
|
1126
1126
|
attr_writer :_prefix
|
1127
1127
|
|
1128
|
+
def run_block_in_context_class(&block)
|
1129
|
+
#; [!i2kvj] run block in context class.
|
1130
|
+
#; [!pr3vj] run block with topic target as an argument.
|
1131
|
+
target = @target
|
1132
|
+
@context_class.class_exec(target, &block)
|
1133
|
+
end
|
1134
|
+
|
1128
1135
|
def _prefix
|
1129
1136
|
@_prefix || '*'
|
1130
1137
|
end
|
@@ -1234,6 +1241,13 @@ END
|
|
1234
1241
|
@_in_scope = false
|
1235
1242
|
end
|
1236
1243
|
|
1244
|
+
def self.topic(target, &block)
|
1245
|
+
#; [!c5j3f] same as `Oktest.scope do topic target do ... end end`.
|
1246
|
+
self.scope do
|
1247
|
+
topic(target, &block)
|
1248
|
+
end
|
1249
|
+
end
|
1250
|
+
|
1237
1251
|
|
1238
1252
|
module SpecHelper
|
1239
1253
|
|
@@ -2168,9 +2182,6 @@ END
|
|
2168
2182
|
end
|
2169
2183
|
|
2170
2184
|
|
2171
|
-
REPORTER_CLASS = VerboseReporter
|
2172
|
-
|
2173
|
-
|
2174
2185
|
REPORTER_CLASSES = {
|
2175
2186
|
'verbose' => VerboseReporter, 'v' => VerboseReporter,
|
2176
2187
|
'simple' => SimpleReporter, 's' => SimpleReporter,
|
@@ -2179,10 +2190,22 @@ END
|
|
2179
2190
|
'quiet' => QuietReporter, 'q' => QuietReporter,
|
2180
2191
|
}
|
2181
2192
|
|
2193
|
+
DEFAULT_REPORTING_STYLE = 'verbose'
|
2194
|
+
|
2195
|
+
def self.DEFAULT_REPORTING_STYLE=(style)
|
2196
|
+
#; [!lbufd] raises error if unknown style specified.
|
2197
|
+
REPORTER_CLASSES.key?(style) or
|
2198
|
+
raise ArgumentError, "#{style}: Unknown reporting style."
|
2199
|
+
#; [!dsbmo] changes value of default reporting style.
|
2200
|
+
remove_const :DEFAULT_REPORTING_STYLE
|
2201
|
+
const_set :DEFAULT_REPORTING_STYLE, style
|
2202
|
+
end
|
2203
|
+
|
2182
2204
|
|
2183
2205
|
def self.run(reporter: nil, style: nil)
|
2184
2206
|
#; [!6xn3t] creates reporter object according to 'style:' keyword arg.
|
2185
|
-
|
2207
|
+
style ||= DEFAULT_REPORTING_STYLE
|
2208
|
+
klass = REPORTER_CLASSES[style] or
|
2186
2209
|
raise ArgumentError, "#{style.inspect}: unknown style."
|
2187
2210
|
reporter ||= klass.new
|
2188
2211
|
#; [!mn451] run test cases.
|
@@ -2490,12 +2513,12 @@ END
|
|
2490
2513
|
public
|
2491
2514
|
|
2492
2515
|
def filter_children!(node)
|
2493
|
-
_filter_children!(node)
|
2516
|
+
_filter_children!(node, 0)
|
2494
2517
|
end
|
2495
2518
|
|
2496
2519
|
private
|
2497
2520
|
|
2498
|
-
def _filter_children!(node) #:nodoc:
|
2521
|
+
def _filter_children!(node, _depth) #:nodoc:
|
2499
2522
|
#; [!r6g6a] supports negative filter by topic.
|
2500
2523
|
#; [!doozg] supports negative filter by spec.
|
2501
2524
|
#; [!ntv44] supports negative filter by tag name.
|
@@ -2516,7 +2539,7 @@ END
|
|
2516
2539
|
removes << i unless positive
|
2517
2540
|
#; [!mz6id] can filter nested topics.
|
2518
2541
|
elsif item.is_a?(Node)
|
2519
|
-
removes << i unless _filter_children!(item)
|
2542
|
+
removes << i unless _filter_children!(item, _depth+1)
|
2520
2543
|
#; [!1jphf] can filter specs from nested topics.
|
2521
2544
|
elsif item.is_a?(SpecLeaf)
|
2522
2545
|
removes << i if positive
|
data/oktest.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- coding: utf-8 -*-
|
2
2
|
|
3
3
|
###
|
4
|
-
### $Release: 1.
|
4
|
+
### $Release: 1.5.0 $
|
5
5
|
### $License: MIT License $
|
6
6
|
### $Copyright: copyright(c) 2011-2024 kuwata-lab.com all rights reserved $
|
7
7
|
###
|
@@ -13,7 +13,7 @@ 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.5.0 $".split()[1]
|
17
17
|
s.license = "MIT"
|
18
18
|
s.platform = Gem::Platform::RUBY
|
19
19
|
s.homepage = "https://github.com/kwatch/oktest/tree/ruby/ruby"
|
@@ -41,5 +41,5 @@ END
|
|
41
41
|
s.files = files
|
42
42
|
s.executables = ['oktest']
|
43
43
|
s.bindir = 'bin'
|
44
|
-
s.test_file = 'test/
|
44
|
+
s.test_file = 'test/all.rb'
|
45
45
|
end
|