judges 0.0.24 ā 0.0.25
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/codecov.yml +3 -2
- data/.github/workflows/rake.yml +3 -2
- data/.gitignore +0 -1
- data/.rubocop.yml +3 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +235 -0
- data/README.md +35 -0
- data/bin/judges +1 -1
- data/features/step_definitions/steps.rb +3 -1
- data/judges.gemspec +1 -1
- data/lib/judges/commands/test.rb +5 -3
- data/lib/judges/commands/update.rb +3 -1
- data/lib/judges/pack.rb +3 -1
- data/test/test_pack.rb +24 -6
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2326cabc04af248b0125f37645bd07fce0d9f19633f6ebaa10fdcf134da35b73
|
4
|
+
data.tar.gz: ede2d649e85f3d5f637daaa963bf56887b2150345ede96bb7fd4c53f7e5f1400
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5ed7d4a0d763cd9f1a5a565033cd42e69e8d52b113f8b117832861ad8d9c22194667ef6759aa8c4c8806cc754435a3cb9583c9951183eba01c7cb3f4aa83f03e
|
7
|
+
data.tar.gz: f3bfaee1fe32ff3315a533dc67019edc9e6c7fbb22db758917a17c0a643dc0a60a69e2e3641d9a954c426e39c928bef098ff1309dad18ce14bd69cf77aa061b0
|
@@ -19,7 +19,7 @@
|
|
19
19
|
# SOFTWARE.
|
20
20
|
---
|
21
21
|
name: codecov
|
22
|
-
on:
|
22
|
+
'on':
|
23
23
|
push:
|
24
24
|
branches:
|
25
25
|
- master
|
@@ -31,7 +31,8 @@ jobs:
|
|
31
31
|
- uses: ruby/setup-ruby@v1
|
32
32
|
with:
|
33
33
|
ruby-version: 3.2
|
34
|
-
|
34
|
+
bundler-cache: true
|
35
|
+
- run: bundle install
|
35
36
|
- run: bundle exec rake
|
36
37
|
- uses: codecov/codecov-action@v4.0.0-beta.3
|
37
38
|
with:
|
data/.github/workflows/rake.yml
CHANGED
@@ -31,7 +31,7 @@ jobs:
|
|
31
31
|
name: test
|
32
32
|
strategy:
|
33
33
|
matrix:
|
34
|
-
os: [ubuntu-20.04, macos-12]
|
34
|
+
os: [ubuntu-20.04, macos-12, windows-2022]
|
35
35
|
ruby: [3.2]
|
36
36
|
runs-on: ${{ matrix.os }}
|
37
37
|
steps:
|
@@ -39,5 +39,6 @@ jobs:
|
|
39
39
|
- uses: ruby/setup-ruby@v1
|
40
40
|
with:
|
41
41
|
ruby-version: ${{ matrix.ruby }}
|
42
|
-
|
42
|
+
bundler-cache: true
|
43
|
+
- run: bundle install
|
43
44
|
- run: bundle exec rake
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -22,6 +22,7 @@ AllCops:
|
|
22
22
|
Exclude:
|
23
23
|
- 'bin/**/*'
|
24
24
|
- 'assets/**/*'
|
25
|
+
- 'vendor/**/*'
|
25
26
|
DisplayCopNames: true
|
26
27
|
TargetRubyVersion: 3.2
|
27
28
|
SuggestExtensions: false
|
@@ -51,3 +52,5 @@ Layout/CaseIndentation:
|
|
51
52
|
Enabled: false
|
52
53
|
Naming/MethodParameterName:
|
53
54
|
MinNameLength: 2
|
55
|
+
Layout/EndOfLine:
|
56
|
+
EnforcedStyle: lf
|
data/Gemfile
CHANGED
@@ -28,6 +28,7 @@ gem 'minitest', '5.23.0', require: false
|
|
28
28
|
gem 'rake', '13.2.1', require: false
|
29
29
|
gem 'rspec-rails', '6.1.2', require: false
|
30
30
|
gem 'rubocop', '1.63.5', require: false
|
31
|
+
gem 'rubocop-performance', '1.21.0', require: false
|
31
32
|
gem 'rubocop-rspec', '2.29.2', require: false
|
32
33
|
gem 'simplecov', '0.22.0', require: false
|
33
34
|
gem 'simplecov-cobertura', '2.1.0', require: false
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,235 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
judges (0.0.0)
|
5
|
+
backtrace (~> 0.3)
|
6
|
+
factbase (~> 0.0.22)
|
7
|
+
gli (~> 2.21)
|
8
|
+
loog (~> 0.2)
|
9
|
+
nokogiri (~> 1.10)
|
10
|
+
|
11
|
+
GEM
|
12
|
+
remote: https://rubygems.org/
|
13
|
+
specs:
|
14
|
+
actionpack (7.1.3.3)
|
15
|
+
actionview (= 7.1.3.3)
|
16
|
+
activesupport (= 7.1.3.3)
|
17
|
+
nokogiri (>= 1.8.5)
|
18
|
+
racc
|
19
|
+
rack (>= 2.2.4)
|
20
|
+
rack-session (>= 1.0.1)
|
21
|
+
rack-test (>= 0.6.3)
|
22
|
+
rails-dom-testing (~> 2.2)
|
23
|
+
rails-html-sanitizer (~> 1.6)
|
24
|
+
actionview (7.1.3.3)
|
25
|
+
activesupport (= 7.1.3.3)
|
26
|
+
builder (~> 3.1)
|
27
|
+
erubi (~> 1.11)
|
28
|
+
rails-dom-testing (~> 2.2)
|
29
|
+
rails-html-sanitizer (~> 1.6)
|
30
|
+
activesupport (7.1.3.3)
|
31
|
+
base64
|
32
|
+
bigdecimal
|
33
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
34
|
+
connection_pool (>= 2.2.5)
|
35
|
+
drb
|
36
|
+
i18n (>= 1.6, < 2)
|
37
|
+
minitest (>= 5.1)
|
38
|
+
mutex_m
|
39
|
+
tzinfo (~> 2.0)
|
40
|
+
ast (2.4.2)
|
41
|
+
backtrace (0.4.0)
|
42
|
+
base64 (0.2.0)
|
43
|
+
bigdecimal (3.1.8)
|
44
|
+
builder (3.2.4)
|
45
|
+
concurrent-ruby (1.2.3)
|
46
|
+
connection_pool (2.4.1)
|
47
|
+
crass (1.0.6)
|
48
|
+
cucumber (9.2.0)
|
49
|
+
builder (~> 3.2)
|
50
|
+
cucumber-ci-environment (> 9, < 11)
|
51
|
+
cucumber-core (> 13, < 14)
|
52
|
+
cucumber-cucumber-expressions (~> 17.0)
|
53
|
+
cucumber-gherkin (> 24, < 28)
|
54
|
+
cucumber-html-formatter (> 20.3, < 22)
|
55
|
+
cucumber-messages (> 19, < 25)
|
56
|
+
diff-lcs (~> 1.5)
|
57
|
+
mini_mime (~> 1.1)
|
58
|
+
multi_test (~> 1.1)
|
59
|
+
sys-uname (~> 1.2)
|
60
|
+
cucumber-ci-environment (10.0.1)
|
61
|
+
cucumber-core (13.0.2)
|
62
|
+
cucumber-gherkin (>= 27, < 28)
|
63
|
+
cucumber-messages (>= 20, < 23)
|
64
|
+
cucumber-tag-expressions (> 5, < 7)
|
65
|
+
cucumber-cucumber-expressions (17.1.0)
|
66
|
+
bigdecimal
|
67
|
+
cucumber-gherkin (27.0.0)
|
68
|
+
cucumber-messages (>= 19.1.4, < 23)
|
69
|
+
cucumber-html-formatter (21.3.1)
|
70
|
+
cucumber-messages (> 19, < 25)
|
71
|
+
cucumber-messages (22.0.0)
|
72
|
+
cucumber-tag-expressions (6.1.0)
|
73
|
+
diff-lcs (1.5.1)
|
74
|
+
docile (1.4.0)
|
75
|
+
drb (2.2.1)
|
76
|
+
erubi (1.12.0)
|
77
|
+
factbase (0.0.22)
|
78
|
+
json (~> 2.7)
|
79
|
+
loog (~> 0.2)
|
80
|
+
nokogiri (~> 1.10)
|
81
|
+
yaml (~> 0.3)
|
82
|
+
ffi (1.16.3)
|
83
|
+
ffi (1.16.3-x64-mingw-ucrt)
|
84
|
+
gli (2.21.1)
|
85
|
+
i18n (1.14.5)
|
86
|
+
concurrent-ruby (~> 1.0)
|
87
|
+
io-console (0.7.2)
|
88
|
+
irb (1.13.1)
|
89
|
+
rdoc (>= 4.0.0)
|
90
|
+
reline (>= 0.4.2)
|
91
|
+
json (2.7.2)
|
92
|
+
language_server-protocol (3.17.0.3)
|
93
|
+
loofah (2.22.0)
|
94
|
+
crass (~> 1.0.2)
|
95
|
+
nokogiri (>= 1.12.0)
|
96
|
+
loog (0.5.1)
|
97
|
+
mini_mime (1.1.5)
|
98
|
+
minitest (5.23.0)
|
99
|
+
multi_test (1.1.0)
|
100
|
+
mutex_m (0.2.0)
|
101
|
+
nokogiri (1.16.5-arm64-darwin)
|
102
|
+
racc (~> 1.4)
|
103
|
+
nokogiri (1.16.5-x64-mingw-ucrt)
|
104
|
+
racc (~> 1.4)
|
105
|
+
nokogiri (1.16.5-x86_64-darwin)
|
106
|
+
racc (~> 1.4)
|
107
|
+
nokogiri (1.16.5-x86_64-linux)
|
108
|
+
racc (~> 1.4)
|
109
|
+
parallel (1.24.0)
|
110
|
+
parser (3.3.1.0)
|
111
|
+
ast (~> 2.4.1)
|
112
|
+
racc
|
113
|
+
psych (5.1.2)
|
114
|
+
stringio
|
115
|
+
racc (1.7.3)
|
116
|
+
rack (3.0.11)
|
117
|
+
rack-session (2.0.0)
|
118
|
+
rack (>= 3.0.0)
|
119
|
+
rack-test (2.1.0)
|
120
|
+
rack (>= 1.3)
|
121
|
+
rackup (2.1.0)
|
122
|
+
rack (>= 3)
|
123
|
+
webrick (~> 1.8)
|
124
|
+
rails-dom-testing (2.2.0)
|
125
|
+
activesupport (>= 5.0.0)
|
126
|
+
minitest
|
127
|
+
nokogiri (>= 1.6)
|
128
|
+
rails-html-sanitizer (1.6.0)
|
129
|
+
loofah (~> 2.21)
|
130
|
+
nokogiri (~> 1.14)
|
131
|
+
railties (7.1.3.3)
|
132
|
+
actionpack (= 7.1.3.3)
|
133
|
+
activesupport (= 7.1.3.3)
|
134
|
+
irb
|
135
|
+
rackup (>= 1.0.0)
|
136
|
+
rake (>= 12.2)
|
137
|
+
thor (~> 1.0, >= 1.2.2)
|
138
|
+
zeitwerk (~> 2.6)
|
139
|
+
rainbow (3.1.1)
|
140
|
+
rake (13.2.1)
|
141
|
+
rdoc (6.6.3.1)
|
142
|
+
psych (>= 4.0.0)
|
143
|
+
regexp_parser (2.9.2)
|
144
|
+
reline (0.5.7)
|
145
|
+
io-console (~> 0.5)
|
146
|
+
rexml (3.2.8)
|
147
|
+
strscan (>= 3.0.9)
|
148
|
+
rspec-core (3.13.0)
|
149
|
+
rspec-support (~> 3.13.0)
|
150
|
+
rspec-expectations (3.13.0)
|
151
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
152
|
+
rspec-support (~> 3.13.0)
|
153
|
+
rspec-mocks (3.13.1)
|
154
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
155
|
+
rspec-support (~> 3.13.0)
|
156
|
+
rspec-rails (6.1.2)
|
157
|
+
actionpack (>= 6.1)
|
158
|
+
activesupport (>= 6.1)
|
159
|
+
railties (>= 6.1)
|
160
|
+
rspec-core (~> 3.13)
|
161
|
+
rspec-expectations (~> 3.13)
|
162
|
+
rspec-mocks (~> 3.13)
|
163
|
+
rspec-support (~> 3.13)
|
164
|
+
rspec-support (3.13.1)
|
165
|
+
rubocop (1.63.5)
|
166
|
+
json (~> 2.3)
|
167
|
+
language_server-protocol (>= 3.17.0)
|
168
|
+
parallel (~> 1.10)
|
169
|
+
parser (>= 3.3.0.2)
|
170
|
+
rainbow (>= 2.2.2, < 4.0)
|
171
|
+
regexp_parser (>= 1.8, < 3.0)
|
172
|
+
rexml (>= 3.2.5, < 4.0)
|
173
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
174
|
+
ruby-progressbar (~> 1.7)
|
175
|
+
unicode-display_width (>= 2.4.0, < 3.0)
|
176
|
+
rubocop-ast (1.31.3)
|
177
|
+
parser (>= 3.3.1.0)
|
178
|
+
rubocop-capybara (2.20.0)
|
179
|
+
rubocop (~> 1.41)
|
180
|
+
rubocop-factory_bot (2.25.1)
|
181
|
+
rubocop (~> 1.41)
|
182
|
+
rubocop-performance (1.21.0)
|
183
|
+
rubocop (>= 1.48.1, < 2.0)
|
184
|
+
rubocop-ast (>= 1.31.1, < 2.0)
|
185
|
+
rubocop-rspec (2.29.2)
|
186
|
+
rubocop (~> 1.40)
|
187
|
+
rubocop-capybara (~> 2.17)
|
188
|
+
rubocop-factory_bot (~> 2.22)
|
189
|
+
rubocop-rspec_rails (~> 2.28)
|
190
|
+
rubocop-rspec_rails (2.28.3)
|
191
|
+
rubocop (~> 1.40)
|
192
|
+
ruby-progressbar (1.13.0)
|
193
|
+
simplecov (0.22.0)
|
194
|
+
docile (~> 1.1)
|
195
|
+
simplecov-html (~> 0.11)
|
196
|
+
simplecov_json_formatter (~> 0.1)
|
197
|
+
simplecov-cobertura (2.1.0)
|
198
|
+
rexml
|
199
|
+
simplecov (~> 0.19)
|
200
|
+
simplecov-html (0.12.3)
|
201
|
+
simplecov_json_formatter (0.1.4)
|
202
|
+
stringio (3.1.0)
|
203
|
+
strscan (3.1.0)
|
204
|
+
sys-uname (1.2.3)
|
205
|
+
ffi (~> 1.1)
|
206
|
+
thor (1.3.1)
|
207
|
+
tzinfo (2.0.6)
|
208
|
+
concurrent-ruby (~> 1.0)
|
209
|
+
unicode-display_width (2.5.0)
|
210
|
+
webrick (1.8.1)
|
211
|
+
yaml (0.3.0)
|
212
|
+
yard (0.9.36)
|
213
|
+
zeitwerk (2.6.14)
|
214
|
+
|
215
|
+
PLATFORMS
|
216
|
+
arm64-darwin-22
|
217
|
+
x64-mingw-ucrt
|
218
|
+
x86_64-darwin-20
|
219
|
+
x86_64-linux
|
220
|
+
|
221
|
+
DEPENDENCIES
|
222
|
+
cucumber (= 9.2.0)
|
223
|
+
judges!
|
224
|
+
minitest (= 5.23.0)
|
225
|
+
rake (= 13.2.1)
|
226
|
+
rspec-rails (= 6.1.2)
|
227
|
+
rubocop (= 1.63.5)
|
228
|
+
rubocop-performance (= 1.21.0)
|
229
|
+
rubocop-rspec (= 2.29.2)
|
230
|
+
simplecov (= 0.22.0)
|
231
|
+
simplecov-cobertura (= 2.1.0)
|
232
|
+
yard (= 0.9.36)
|
233
|
+
|
234
|
+
BUNDLED WITH
|
235
|
+
2.4.22
|
data/README.md
CHANGED
@@ -14,6 +14,41 @@
|
|
14
14
|
A command line tool and a Ruby gem for running judges agains a
|
15
15
|
[factbase](https://github.com/yegor256/factbase).
|
16
16
|
|
17
|
+
Every "judge" is a directory with a single `.rb` file and a number
|
18
|
+
of `.yml` files. A script in the Ruby file is executed with the following
|
19
|
+
global variables available to it:
|
20
|
+
|
21
|
+
* `$fb` ā an instance
|
22
|
+
of [`Factbase`](https://www.rubydoc.info/gems/factbase/0.0.22/Factbase),
|
23
|
+
where facts may be added/updated;
|
24
|
+
* `$loog` ā an instance
|
25
|
+
of [`Loog`](https://www.rubydoc.info/gems/loog/0.5.1/Loog),
|
26
|
+
where `.info` and `.debug` logs are welcome;
|
27
|
+
* `$options` ā a holder of options coming from `.yml` files;
|
28
|
+
* `$local` ā a hash map that is cleaned up when all tests
|
29
|
+
in the pack are finished;
|
30
|
+
* `$global` ā a hash map that is never cleaned up;
|
31
|
+
* `$judge` ā the name of the directory, where the `.rb` script is located.
|
32
|
+
|
33
|
+
Every `.yml` file must be formatted as such:
|
34
|
+
|
35
|
+
```yaml
|
36
|
+
input:
|
37
|
+
-
|
38
|
+
foo: 42
|
39
|
+
bar: Hello, world!
|
40
|
+
options:
|
41
|
+
max: 100
|
42
|
+
expected:
|
43
|
+
- /fb[count(f)=1]
|
44
|
+
```
|
45
|
+
|
46
|
+
Here, the `input` is an array of facts to be placed into the Factbase before
|
47
|
+
the test starts; the `options` is a hash map of options to be passed
|
48
|
+
via command line `--option` of the `update` command; and `expected` is
|
49
|
+
an array of XPath expressions that must be present in the XML of the Factbase
|
50
|
+
when the test is finished.
|
51
|
+
|
17
52
|
## How to contribute
|
18
53
|
|
19
54
|
Read
|
data/bin/judges
CHANGED
@@ -47,7 +47,9 @@ end
|
|
47
47
|
|
48
48
|
When(%r{^I run bin/judges with "([^"]*)"$}) do |arg|
|
49
49
|
home = File.join(File.dirname(__FILE__), '../..')
|
50
|
-
|
50
|
+
cmd = "ruby -I#{home}/lib #{home}/bin/judges #{arg}"
|
51
|
+
cmd = "GLI_DEBUG=true #{cmd}" unless Gem.win_platform?
|
52
|
+
@stdout = `#{cmd}`
|
51
53
|
@exitstatus = $CHILD_STATUS.exitstatus
|
52
54
|
end
|
53
55
|
|
data/judges.gemspec
CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
|
|
26
26
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
27
27
|
s.required_ruby_version = '>=3.2'
|
28
28
|
s.name = 'judges'
|
29
|
-
s.version = '0.0.
|
29
|
+
s.version = '0.0.25'
|
30
30
|
s.license = 'MIT'
|
31
31
|
s.summary = 'Command-Line Tool for a Factbase'
|
32
32
|
s.description = '
|
data/lib/judges/commands/test.rb
CHANGED
@@ -44,14 +44,16 @@ class Judges::Test
|
|
44
44
|
@loog.info("Testing judges in #{dir.to_rel}...")
|
45
45
|
errors = []
|
46
46
|
done = 0
|
47
|
+
global = {}
|
47
48
|
Judges::Packs.new(dir, opts['lib'], @loog).each_with_index do |p, i|
|
49
|
+
local = {}
|
48
50
|
next unless include?(opts, p.name)
|
49
51
|
@loog.info("\nš Testing #{p.script} (##{i}) in #{p.dir.to_rel}...")
|
50
52
|
p.tests.each do |f|
|
51
53
|
yaml = YAML.load_file(f, permitted_classes: [Time])
|
52
54
|
@loog.info("Testing #{f.to_rel}:")
|
53
55
|
begin
|
54
|
-
test_one(p, yaml)
|
56
|
+
test_one(p, global, local, yaml)
|
55
57
|
rescue StandardError => e
|
56
58
|
@loog.warn(Backtrace.new(e))
|
57
59
|
errors << f
|
@@ -78,7 +80,7 @@ class Judges::Test
|
|
78
80
|
packs.include?(name)
|
79
81
|
end
|
80
82
|
|
81
|
-
def test_one(pack, yaml)
|
83
|
+
def test_one(pack, global, local, yaml)
|
82
84
|
fb = Factbase.new
|
83
85
|
yaml['input'].each do |i|
|
84
86
|
f = fb.insert
|
@@ -92,7 +94,7 @@ class Judges::Test
|
|
92
94
|
end
|
93
95
|
end
|
94
96
|
end
|
95
|
-
pack.run(Factbase::Looged.new(fb, @loog), Judges::Options.new(yaml['options']))
|
97
|
+
pack.run(Factbase::Looged.new(fb, @loog), global, local, Judges::Options.new(yaml['options']))
|
96
98
|
xml = Nokogiri::XML.parse(fb.to_xml)
|
97
99
|
yaml['expected'].each do |xp|
|
98
100
|
raise "#{pack.script} doesn't match '#{xp}':\n#{xml}" if xml.xpath(xp).empty?
|
@@ -66,11 +66,13 @@ class Judges::Update
|
|
66
66
|
def cycle(packs, fb, impex, options)
|
67
67
|
errors = []
|
68
68
|
diff = 0
|
69
|
+
global = {}
|
69
70
|
done = packs.each_with_index do |p, i|
|
71
|
+
local = {}
|
70
72
|
@loog.info("š Running #{p.name} (##{i}) at #{p.dir.to_rel}...")
|
71
73
|
before = fb.size
|
72
74
|
begin
|
73
|
-
p.run(fb, options)
|
75
|
+
p.run(fb, global, local, options)
|
74
76
|
rescue StandardError => e
|
75
77
|
@loog.warn(Backtrace.new(e))
|
76
78
|
errors << p.script
|
data/lib/judges/pack.rb
CHANGED
@@ -39,11 +39,13 @@ class Judges::Pack
|
|
39
39
|
end
|
40
40
|
|
41
41
|
# Run it with the given Factbase and environment variables.
|
42
|
-
def run(fbase, options)
|
42
|
+
def run(fbase, global, local, options)
|
43
43
|
$fb = fbase
|
44
44
|
$judge = File.basename(@dir)
|
45
45
|
$options = options
|
46
46
|
$loog = @loog
|
47
|
+
$global = global
|
48
|
+
$local = local
|
47
49
|
unless @lib.nil?
|
48
50
|
raise "Lib dir #{@lib.to_rel} is absent" unless File.exist?(@lib)
|
49
51
|
raise "Lib #{@lib.to_rel} is not a directory" unless File.directory?(@lib)
|
data/test/test_pack.rb
CHANGED
@@ -37,7 +37,7 @@ class TestPack < Minitest::Test
|
|
37
37
|
File.write(File.join(d, 'foo.rb'), '$fb.insert')
|
38
38
|
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
39
39
|
fb = Factbase.new
|
40
|
-
pack.run(fb, {})
|
40
|
+
pack.run(fb, {}, {}, {})
|
41
41
|
assert_equal(1, fb.size)
|
42
42
|
end
|
43
43
|
end
|
@@ -47,10 +47,10 @@ class TestPack < Minitest::Test
|
|
47
47
|
File.write(File.join(d, 'bar.rb'), '$fb.insert')
|
48
48
|
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
49
49
|
fb1 = Factbase.new
|
50
|
-
pack.run(fb1, {})
|
50
|
+
pack.run(fb1, {}, {}, {})
|
51
51
|
assert_equal(1, fb1.size)
|
52
52
|
fb2 = Factbase.new
|
53
|
-
pack.run(fb2, {})
|
53
|
+
pack.run(fb2, {}, {}, {})
|
54
54
|
assert_equal(1, fb2.size)
|
55
55
|
end
|
56
56
|
end
|
@@ -59,7 +59,25 @@ class TestPack < Minitest::Test
|
|
59
59
|
Dir.mktmpdir do |d|
|
60
60
|
File.write(File.join(d, 'x.rb'), 'once($fb).insert')
|
61
61
|
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
62
|
-
pack.run(Factbase.new, {})
|
62
|
+
pack.run(Factbase.new, {}, {}, {})
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_passes_local_vars_between_tests
|
67
|
+
Dir.mktmpdir do |d|
|
68
|
+
File.write(
|
69
|
+
File.join(d, 'x.rb'),
|
70
|
+
'
|
71
|
+
$local[:foo] = 42 if $local[:foo].nil?
|
72
|
+
$local[:foo] = $local[:foo] + 1
|
73
|
+
'
|
74
|
+
)
|
75
|
+
pack = Judges::Pack.new(d, nil, Loog::NULL)
|
76
|
+
local = {}
|
77
|
+
pack.run(Factbase.new, {}, local, {})
|
78
|
+
pack.run(Factbase.new, {}, local, {})
|
79
|
+
pack.run(Factbase.new, {}, local, {})
|
80
|
+
assert_equal(45, local[:foo])
|
63
81
|
end
|
64
82
|
end
|
65
83
|
|
@@ -70,7 +88,7 @@ class TestPack < Minitest::Test
|
|
70
88
|
FileUtils.mkdir(dir)
|
71
89
|
File.write(File.join(dir, 'foo.rb'), '$loog.info("judge=" + $judge)')
|
72
90
|
log = Loog::Buffer.new
|
73
|
-
Judges::Pack.new(dir, nil, log).run(Factbase.new, {})
|
91
|
+
Judges::Pack.new(dir, nil, log).run(Factbase.new, {}, {}, {})
|
74
92
|
assert(log.to_s.include?("judge=#{j}"))
|
75
93
|
end
|
76
94
|
end
|
@@ -85,7 +103,7 @@ class TestPack < Minitest::Test
|
|
85
103
|
File.write(File.join(lib, 'y.rb'), '$foo = 42')
|
86
104
|
pack = Judges::Pack.new(dir, lib, Loog::VERBOSE)
|
87
105
|
fb = Factbase.new
|
88
|
-
pack.run(fb, {})
|
106
|
+
pack.run(fb, {}, {}, {})
|
89
107
|
assert_equal(42, fb.query('()').each.to_a.first.bar)
|
90
108
|
end
|
91
109
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: judges
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.25
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
@@ -107,6 +107,7 @@ files:
|
|
107
107
|
- ".rultor.yml"
|
108
108
|
- ".simplecov"
|
109
109
|
- Gemfile
|
110
|
+
- Gemfile.lock
|
110
111
|
- LICENSE.txt
|
111
112
|
- README.md
|
112
113
|
- Rakefile
|