judges 0.60.1 → 0.60.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +43 -37
- data/README.md +54 -0
- data/judges.gemspec +2 -1
- data/lib/judges/commands/pull.rb +1 -2
- data/lib/judges/judge.rb +3 -0
- data/lib/judges/judges.rb +1 -1
- data/lib/judges/pretty_exception.rb +19 -0
- data/lib/judges.rb +1 -1
- data/package-lock.json +33 -35
- metadata +16 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26d69625988cf52b0a58b477b38399fa6131ce5ef2fca9e41fad8b3f0d9409e9
|
|
4
|
+
data.tar.gz: 49a6f1decdb471de65037f19d249cd4a5f3208e53a7ca3b9e23a8b7a225dbbe4
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3222d9734c7ed4e2afe39f61ba91fc9c69ba8ef17ea7639de5112e886a3a5f42cd7a84af6fb024dc96e817750f0cb567f04cd8bf08d93b894500c081323ce5a5
|
|
7
|
+
data.tar.gz: 74bc0d47b424a70b03221212a3626e83999234370003aa97f33d7500c1c2fff7fa175186664c170371ac45a3fa54302ea84920679306079a033f0e0883a8d526
|
data/Gemfile
CHANGED
|
@@ -7,7 +7,7 @@ source 'https://rubygems.org'
|
|
|
7
7
|
gemspec
|
|
8
8
|
|
|
9
9
|
gem 'base64', '~>0.3'
|
|
10
|
-
gem 'cucumber', '~>
|
|
10
|
+
gem 'cucumber', '~>11.0', require: false
|
|
11
11
|
gem 'diff-lcs', '1.6.2', require: false # GPL
|
|
12
12
|
gem 'minitest', '~>6.0', require: false
|
|
13
13
|
gem 'minitest-mock', '~>5.27', require: false
|
data/Gemfile.lock
CHANGED
|
@@ -13,6 +13,7 @@ PATH
|
|
|
13
13
|
loog (~> 0.6)
|
|
14
14
|
moments (~> 0.3)
|
|
15
15
|
nokogiri (~> 1.10)
|
|
16
|
+
octokit (~> 10.0)
|
|
16
17
|
others (~> 0.1)
|
|
17
18
|
retries (~> 0.0)
|
|
18
19
|
tago (~> 0.2)
|
|
@@ -25,7 +26,7 @@ GEM
|
|
|
25
26
|
specs:
|
|
26
27
|
addressable (2.8.9)
|
|
27
28
|
public_suffix (>= 2.0.2, < 8.0)
|
|
28
|
-
ansi (1.
|
|
29
|
+
ansi (1.6.0)
|
|
29
30
|
ast (2.4.3)
|
|
30
31
|
backtrace (0.4.1)
|
|
31
32
|
base64 (0.3.0)
|
|
@@ -41,24 +42,24 @@ GEM
|
|
|
41
42
|
retries (~> 0.0)
|
|
42
43
|
tago (~> 0.2)
|
|
43
44
|
typhoeus (~> 1.4)
|
|
44
|
-
bigdecimal (4.
|
|
45
|
+
bigdecimal (4.1.1)
|
|
45
46
|
builder (3.3.0)
|
|
46
47
|
concurrent-ruby (1.3.6)
|
|
47
48
|
crack (1.0.1)
|
|
48
49
|
bigdecimal
|
|
49
50
|
rexml
|
|
50
|
-
cucumber (
|
|
51
|
+
cucumber (11.0.0)
|
|
51
52
|
base64 (~> 0.2)
|
|
52
53
|
builder (~> 3.2)
|
|
53
54
|
cucumber-ci-environment (> 9, < 12)
|
|
54
|
-
cucumber-core (
|
|
55
|
+
cucumber-core (>= 16.2.0, < 17)
|
|
55
56
|
cucumber-cucumber-expressions (> 17, < 20)
|
|
56
|
-
cucumber-html-formatter (> 21, <
|
|
57
|
+
cucumber-html-formatter (> 21, < 24)
|
|
57
58
|
diff-lcs (~> 1.5)
|
|
58
59
|
logger (~> 1.6)
|
|
59
60
|
mini_mime (~> 1.1)
|
|
60
61
|
multi_test (~> 1.1)
|
|
61
|
-
sys-uname (~> 1.
|
|
62
|
+
sys-uname (~> 1.5)
|
|
62
63
|
cucumber-ci-environment (11.0.0)
|
|
63
64
|
cucumber-core (16.2.0)
|
|
64
65
|
cucumber-gherkin (> 36, < 40)
|
|
@@ -68,9 +69,9 @@ GEM
|
|
|
68
69
|
bigdecimal
|
|
69
70
|
cucumber-gherkin (39.0.0)
|
|
70
71
|
cucumber-messages (>= 31, < 33)
|
|
71
|
-
cucumber-html-formatter (
|
|
72
|
+
cucumber-html-formatter (23.1.0)
|
|
72
73
|
cucumber-messages (> 23, < 33)
|
|
73
|
-
cucumber-messages (32.
|
|
74
|
+
cucumber-messages (32.3.1)
|
|
74
75
|
cucumber-tag-expressions (8.1.0)
|
|
75
76
|
date (3.5.1)
|
|
76
77
|
decoor (0.1.0)
|
|
@@ -108,41 +109,36 @@ GEM
|
|
|
108
109
|
net-http (~> 0.5)
|
|
109
110
|
faraday-retry (2.4.0)
|
|
110
111
|
faraday (~> 2.0)
|
|
111
|
-
ffi (1.17.
|
|
112
|
-
ffi (1.17.
|
|
113
|
-
ffi (1.17.
|
|
114
|
-
ffi (1.17.
|
|
115
|
-
ffi (1.17.
|
|
116
|
-
ffi (1.17.
|
|
117
|
-
ffi (1.17.
|
|
118
|
-
ffi (1.17.
|
|
119
|
-
ffi (1.17.
|
|
112
|
+
ffi (1.17.4-aarch64-linux-gnu)
|
|
113
|
+
ffi (1.17.4-aarch64-linux-musl)
|
|
114
|
+
ffi (1.17.4-arm-linux-gnu)
|
|
115
|
+
ffi (1.17.4-arm-linux-musl)
|
|
116
|
+
ffi (1.17.4-arm64-darwin)
|
|
117
|
+
ffi (1.17.4-x64-mingw-ucrt)
|
|
118
|
+
ffi (1.17.4-x86_64-darwin)
|
|
119
|
+
ffi (1.17.4-x86_64-linux-gnu)
|
|
120
|
+
ffi (1.17.4-x86_64-linux-musl)
|
|
120
121
|
gli (2.22.2)
|
|
121
122
|
ostruct
|
|
122
123
|
hashdiff (1.2.1)
|
|
123
124
|
iri (0.11.8)
|
|
124
|
-
json (2.
|
|
125
|
-
json-schema (6.1.0)
|
|
126
|
-
addressable (~> 2.8)
|
|
127
|
-
bigdecimal (>= 3.1, < 5)
|
|
125
|
+
json (2.19.3)
|
|
128
126
|
language_server-protocol (3.17.0.5)
|
|
129
127
|
lint_roller (1.1.0)
|
|
130
128
|
logger (1.7.0)
|
|
131
129
|
loog (0.8.0)
|
|
132
130
|
ellipsized
|
|
133
131
|
logger (~> 1.0)
|
|
134
|
-
mcp (0.7.1)
|
|
135
|
-
json-schema (>= 4.1)
|
|
136
132
|
memoist3 (1.0.0)
|
|
137
133
|
mini_mime (1.1.5)
|
|
138
|
-
minitest (6.0.
|
|
134
|
+
minitest (6.0.5)
|
|
139
135
|
drb (~> 2.0)
|
|
140
136
|
prism (~> 1.5)
|
|
141
137
|
minitest-mock (5.27.0)
|
|
142
|
-
minitest-reporters (1.
|
|
138
|
+
minitest-reporters (1.8.0)
|
|
143
139
|
ansi
|
|
144
140
|
builder
|
|
145
|
-
minitest (>= 5.0)
|
|
141
|
+
minitest (>= 5.0, < 7)
|
|
146
142
|
ruby-progressbar
|
|
147
143
|
minitest-retry (0.3.1)
|
|
148
144
|
minitest (>= 5.0)
|
|
@@ -169,6 +165,9 @@ GEM
|
|
|
169
165
|
racc (~> 1.4)
|
|
170
166
|
nokogiri (1.19.1-x86_64-linux-musl)
|
|
171
167
|
racc (~> 1.4)
|
|
168
|
+
octokit (10.0.0)
|
|
169
|
+
faraday (>= 1, < 3)
|
|
170
|
+
sawyer (~> 0.9)
|
|
172
171
|
online (0.3.0)
|
|
173
172
|
openssl (>= 3)
|
|
174
173
|
timeout (~> 0.4)
|
|
@@ -177,22 +176,22 @@ GEM
|
|
|
177
176
|
ostruct (0.6.3)
|
|
178
177
|
others (0.1.1)
|
|
179
178
|
parallel (1.27.0)
|
|
180
|
-
parser (3.3.
|
|
179
|
+
parser (3.3.11.1)
|
|
181
180
|
ast (~> 2.4.1)
|
|
182
181
|
racc
|
|
183
182
|
prism (1.9.0)
|
|
184
183
|
psych (5.3.1)
|
|
185
184
|
date
|
|
186
185
|
stringio
|
|
187
|
-
public_suffix (7.0.
|
|
188
|
-
qbash (0.8.
|
|
186
|
+
public_suffix (7.0.5)
|
|
187
|
+
qbash (0.8.2)
|
|
189
188
|
backtrace (> 0)
|
|
190
189
|
elapsed (> 0)
|
|
191
190
|
loog (> 0)
|
|
192
191
|
tago (> 0)
|
|
193
192
|
racc (1.8.1)
|
|
194
193
|
rainbow (3.1.1)
|
|
195
|
-
rake (13.
|
|
194
|
+
rake (13.4.2)
|
|
196
195
|
random-port (0.8.2)
|
|
197
196
|
tago (~> 0.0)
|
|
198
197
|
rdoc (7.2.0)
|
|
@@ -202,19 +201,18 @@ GEM
|
|
|
202
201
|
regexp_parser (2.11.3)
|
|
203
202
|
retries (0.0.5)
|
|
204
203
|
rexml (3.4.4)
|
|
205
|
-
rubocop (1.
|
|
204
|
+
rubocop (1.86.1)
|
|
206
205
|
json (~> 2.3)
|
|
207
206
|
language_server-protocol (~> 3.17.0.2)
|
|
208
207
|
lint_roller (~> 1.1.0)
|
|
209
|
-
|
|
210
|
-
parallel (~> 1.10)
|
|
208
|
+
parallel (>= 1.10)
|
|
211
209
|
parser (>= 3.3.0.2)
|
|
212
210
|
rainbow (>= 2.2.2, < 4.0)
|
|
213
211
|
regexp_parser (>= 2.9.3, < 3.0)
|
|
214
212
|
rubocop-ast (>= 1.49.0, < 2.0)
|
|
215
213
|
ruby-progressbar (~> 1.7)
|
|
216
214
|
unicode-display_width (>= 2.4.0, < 4.0)
|
|
217
|
-
rubocop-ast (1.49.
|
|
215
|
+
rubocop-ast (1.49.1)
|
|
218
216
|
parser (>= 3.3.7.2)
|
|
219
217
|
prism (~> 1.7)
|
|
220
218
|
rubocop-minitest (0.39.1)
|
|
@@ -229,6 +227,9 @@ GEM
|
|
|
229
227
|
lint_roller (~> 1.1)
|
|
230
228
|
rubocop (>= 1.72.1)
|
|
231
229
|
ruby-progressbar (1.13.0)
|
|
230
|
+
sawyer (0.9.3)
|
|
231
|
+
addressable (>= 2.3.5)
|
|
232
|
+
faraday (>= 0.17.3, < 3)
|
|
232
233
|
simplecov (0.22.0)
|
|
233
234
|
docile (~> 1.1)
|
|
234
235
|
simplecov-html (~> 0.11)
|
|
@@ -239,9 +240,13 @@ GEM
|
|
|
239
240
|
simplecov-html (0.13.2)
|
|
240
241
|
simplecov_json_formatter (0.1.4)
|
|
241
242
|
stringio (3.2.0)
|
|
242
|
-
sys-uname (1.5.
|
|
243
|
+
sys-uname (1.5.1)
|
|
244
|
+
ffi (~> 1.1)
|
|
245
|
+
memoist3 (~> 1.0.0)
|
|
246
|
+
sys-uname (1.5.1-universal-mingw32)
|
|
243
247
|
ffi (~> 1.1)
|
|
244
248
|
memoist3 (~> 1.0.0)
|
|
249
|
+
win32ole
|
|
245
250
|
tago (0.7.0)
|
|
246
251
|
timeout (0.6.0)
|
|
247
252
|
total (0.4.2)
|
|
@@ -256,10 +261,11 @@ GEM
|
|
|
256
261
|
json (>= 1.8)
|
|
257
262
|
nokogiri (~> 1.6)
|
|
258
263
|
rexml (~> 3.2)
|
|
259
|
-
webmock (3.26.
|
|
264
|
+
webmock (3.26.2)
|
|
260
265
|
addressable (>= 2.8.0)
|
|
261
266
|
crack (>= 0.3.2)
|
|
262
267
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
268
|
+
win32ole (1.9.3)
|
|
263
269
|
yaml (0.4.0)
|
|
264
270
|
yard (0.9.38)
|
|
265
271
|
|
|
@@ -276,7 +282,7 @@ PLATFORMS
|
|
|
276
282
|
|
|
277
283
|
DEPENDENCIES
|
|
278
284
|
base64 (~> 0.3)
|
|
279
|
-
cucumber (~>
|
|
285
|
+
cucumber (~> 11.0)
|
|
280
286
|
diff-lcs (= 1.6.2)
|
|
281
287
|
judges!
|
|
282
288
|
minitest (~> 6.0)
|
data/README.md
CHANGED
|
@@ -84,6 +84,60 @@ of Ruby scripts that are executed after the judge
|
|
|
84
84
|
The `expected_failure` (default: `[]`) is a list of strings that must
|
|
85
85
|
be present in the message of the exception being raised.
|
|
86
86
|
|
|
87
|
+
## Architecture
|
|
88
|
+
|
|
89
|
+
The core data structure is a
|
|
90
|
+
[Factbase](https://github.com/yegor256/factbase) — a flat, schemaless,
|
|
91
|
+
binary-serialized collection of facts (records with named attributes)
|
|
92
|
+
held in memory during a run. Facts are queried via
|
|
93
|
+
[XPath](https://www.w3.org/TR/xpath/) expressions rather than SQL.
|
|
94
|
+
There is no schema to migrate, no ORM layer, and no database process
|
|
95
|
+
to manage. The factbase binary file is read at the start of each
|
|
96
|
+
`update` run and written back on exit, making state portable and
|
|
97
|
+
inspectable via `judges print`. This differs from tools such as
|
|
98
|
+
[Sidekiq](https://sidekiq.org/) or
|
|
99
|
+
[ActiveJob](https://guides.rubyonrails.org/active_job_basics.html),
|
|
100
|
+
which depend on an external database or message broker.
|
|
101
|
+
|
|
102
|
+
Each judge is a single `.rb` Ruby file in its own directory. It is
|
|
103
|
+
not a class, a module, or a Rake task — it is a plain script loaded
|
|
104
|
+
with Ruby's `load(file, true)`, which wraps it in an anonymous module
|
|
105
|
+
and prevents constants in one judge from leaking into another. All
|
|
106
|
+
context is injected as Ruby global variables: `$fb` (the factbase),
|
|
107
|
+
`$loog` (logging), `$options` (configuration), `$global` (shared
|
|
108
|
+
across all judges in a run), and `$local` (reset after each judge).
|
|
109
|
+
A new judge author needs to know only those variables; there is no
|
|
110
|
+
base class to inherit and no interface contract to satisfy.
|
|
111
|
+
|
|
112
|
+
The `update` command runs all judges in repeated cycles until the
|
|
113
|
+
factbase stops changing (zero churn) or until the `--max-cycles` or
|
|
114
|
+
`--lifetime` limit is reached. This fixed-point convergence model is
|
|
115
|
+
analogous to [Datalog](https://en.wikipedia.org/wiki/Datalog): a
|
|
116
|
+
judge that inserts a fact in one cycle may trigger a different judge
|
|
117
|
+
in the next cycle, without any explicit dependency declaration.
|
|
118
|
+
Pipeline tools such as
|
|
119
|
+
[Apache Airflow](https://airflow.apache.org/) or
|
|
120
|
+
[GitHub Actions](https://docs.github.com/en/actions) require a
|
|
121
|
+
directed acyclic graph defined upfront; judges require none.
|
|
122
|
+
|
|
123
|
+
Every judge directory contains `.yml` test files alongside its `.rb`
|
|
124
|
+
script. A YAML file declares the initial facts (`input`), the count
|
|
125
|
+
of judge executions (`runs`), prerequisite judges (`before`),
|
|
126
|
+
post-condition scripts (`after`), and
|
|
127
|
+
[XPath](https://www.w3.org/TR/xpath/) assertions the factbase must
|
|
128
|
+
satisfy when the judge finishes (`expected`). Running `judges test`
|
|
129
|
+
creates a fresh, in-memory factbase per test case. Co-locating tests
|
|
130
|
+
with the script keeps each judge directory self-contained: one
|
|
131
|
+
directory holds both the deliverable and its verification.
|
|
132
|
+
|
|
133
|
+
The `push` and `pull` commands exchange the binary factbase with a
|
|
134
|
+
remote [Baza](https://github.com/yegor256/baza.rb) server via a
|
|
135
|
+
named-lock protocol. `pull` acquires the lock and downloads the
|
|
136
|
+
file; `push` uploads the modified file and releases the lock. This
|
|
137
|
+
lets distributed CI pipelines share a single evolving factbase
|
|
138
|
+
across multiple jobs without running a database: each job pulls,
|
|
139
|
+
runs `update` locally, and pushes back.
|
|
140
|
+
|
|
87
141
|
## How to contribute
|
|
88
142
|
|
|
89
143
|
Read
|
data/judges.gemspec
CHANGED
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
|
9
9
|
s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
|
|
10
10
|
s.required_ruby_version = '>=3.2'
|
|
11
11
|
s.name = 'judges'
|
|
12
|
-
s.version = '0.60.
|
|
12
|
+
s.version = '0.60.3'
|
|
13
13
|
s.license = 'MIT'
|
|
14
14
|
s.summary = 'Command-Line Tool for a Factbase'
|
|
15
15
|
s.description =
|
|
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
|
|
|
36
36
|
s.add_dependency 'loog', '~>0.6'
|
|
37
37
|
s.add_dependency 'moments', '~>0.3'
|
|
38
38
|
s.add_dependency 'nokogiri', '~>1.10'
|
|
39
|
+
s.add_dependency 'octokit', '~>10.0'
|
|
39
40
|
s.add_dependency 'others', '~>0.1'
|
|
40
41
|
s.add_dependency 'retries', '~>0.0'
|
|
41
42
|
s.add_dependency 'tago', '~>0.2'
|
data/lib/judges/commands/pull.rb
CHANGED
|
@@ -51,9 +51,8 @@ class Judges::Pull
|
|
|
51
51
|
end
|
|
52
52
|
fb.import(baza.pull(wait(name, baza, jid, opts['wait'])))
|
|
53
53
|
Judges::Impex.new(@loog, args[1]).export(fb)
|
|
54
|
-
|
|
54
|
+
ensure
|
|
55
55
|
baza.unlock(name, opts['owner'])
|
|
56
|
-
raise e
|
|
57
56
|
end
|
|
58
57
|
throw :"👍 Pulled #{fb.size} facts by name '#{name}'"
|
|
59
58
|
else
|
data/lib/judges/judge.rb
CHANGED
|
@@ -7,8 +7,10 @@ require 'elapsed'
|
|
|
7
7
|
require 'tago'
|
|
8
8
|
require 'timeout'
|
|
9
9
|
require 'factbase/tallied'
|
|
10
|
+
require 'octokit'
|
|
10
11
|
require_relative '../judges'
|
|
11
12
|
require_relative '../judges/to_rel'
|
|
13
|
+
require_relative '../judges/pretty_exception'
|
|
12
14
|
|
|
13
15
|
# A single judge.
|
|
14
16
|
# Author:: Yegor Bugayenko (yegor256@gmail.com)
|
|
@@ -82,6 +84,7 @@ class Judges::Judge
|
|
|
82
84
|
rescue Exception => e
|
|
83
85
|
# rubocop:enable Lint/RescueException
|
|
84
86
|
raise e if e.is_a?(RuntimeError) && e.message == 'skip'
|
|
87
|
+
e = Judges::PrettyException.new(e) if e.is_a?(Octokit::ServerError)
|
|
85
88
|
@loog.error(Backtrace.new(e))
|
|
86
89
|
raise e if e.is_a?(StandardError)
|
|
87
90
|
raise e if e.is_a?(Timeout::ExitException)
|
data/lib/judges/judges.rb
CHANGED
|
@@ -78,7 +78,7 @@ class Judges::Judges
|
|
|
78
78
|
next unless File.directory?(d)
|
|
79
79
|
b = File.basename(d)
|
|
80
80
|
next unless File.exist?(File.join(d, "#{b}.rb"))
|
|
81
|
-
Judges::Judge.new(File.absolute_path(d), @lib, @loog)
|
|
81
|
+
Judges::Judge.new(File.absolute_path(d), @lib, @loog, epoch: @epoch)
|
|
82
82
|
end
|
|
83
83
|
list.compact!
|
|
84
84
|
list.sort_by!(&:name)
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
# SPDX-FileCopyrightText: Copyright (c) 2024-2026 Yegor Bugayenko
|
|
4
|
+
# SPDX-License-Identifier: MIT
|
|
5
|
+
|
|
6
|
+
require 'delegate'
|
|
7
|
+
require 'ellipsized'
|
|
8
|
+
require_relative '../judges'
|
|
9
|
+
|
|
10
|
+
# Decorates the exception for show ellipsed message.
|
|
11
|
+
class Judges::PrettyException < SimpleDelegator
|
|
12
|
+
undef_method :class
|
|
13
|
+
undef_method :instance_of?
|
|
14
|
+
undef_method :kind_of?
|
|
15
|
+
|
|
16
|
+
def message
|
|
17
|
+
__getobj__.message.ellipsized(100, :right)
|
|
18
|
+
end
|
|
19
|
+
end
|
data/lib/judges.rb
CHANGED
data/package-lock.json
CHANGED
|
@@ -52,15 +52,15 @@
|
|
|
52
52
|
}
|
|
53
53
|
},
|
|
54
54
|
"node_modules/@eslint/config-array": {
|
|
55
|
-
"version": "0.21.
|
|
56
|
-
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.
|
|
57
|
-
"integrity": "sha512-
|
|
55
|
+
"version": "0.21.2",
|
|
56
|
+
"resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.2.tgz",
|
|
57
|
+
"integrity": "sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==",
|
|
58
58
|
"dev": true,
|
|
59
59
|
"license": "Apache-2.0",
|
|
60
60
|
"dependencies": {
|
|
61
61
|
"@eslint/object-schema": "^2.1.7",
|
|
62
62
|
"debug": "^4.3.1",
|
|
63
|
-
"minimatch": "^3.1.
|
|
63
|
+
"minimatch": "^3.1.5"
|
|
64
64
|
},
|
|
65
65
|
"engines": {
|
|
66
66
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
|
@@ -93,20 +93,20 @@
|
|
|
93
93
|
}
|
|
94
94
|
},
|
|
95
95
|
"node_modules/@eslint/eslintrc": {
|
|
96
|
-
"version": "3.3.
|
|
97
|
-
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.
|
|
98
|
-
"integrity": "sha512-
|
|
96
|
+
"version": "3.3.5",
|
|
97
|
+
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.5.tgz",
|
|
98
|
+
"integrity": "sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==",
|
|
99
99
|
"dev": true,
|
|
100
100
|
"license": "MIT",
|
|
101
101
|
"dependencies": {
|
|
102
|
-
"ajv": "^6.
|
|
102
|
+
"ajv": "^6.14.0",
|
|
103
103
|
"debug": "^4.3.2",
|
|
104
104
|
"espree": "^10.0.1",
|
|
105
105
|
"globals": "^14.0.0",
|
|
106
106
|
"ignore": "^5.2.0",
|
|
107
107
|
"import-fresh": "^3.2.1",
|
|
108
|
-
"js-yaml": "^4.1.
|
|
109
|
-
"minimatch": "^3.1.
|
|
108
|
+
"js-yaml": "^4.1.1",
|
|
109
|
+
"minimatch": "^3.1.5",
|
|
110
110
|
"strip-json-comments": "^3.1.1"
|
|
111
111
|
},
|
|
112
112
|
"engines": {
|
|
@@ -117,9 +117,9 @@
|
|
|
117
117
|
}
|
|
118
118
|
},
|
|
119
119
|
"node_modules/@eslint/js": {
|
|
120
|
-
"version": "9.39.
|
|
121
|
-
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.
|
|
122
|
-
"integrity": "sha512-
|
|
120
|
+
"version": "9.39.4",
|
|
121
|
+
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.4.tgz",
|
|
122
|
+
"integrity": "sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==",
|
|
123
123
|
"dev": true,
|
|
124
124
|
"license": "MIT",
|
|
125
125
|
"engines": {
|
|
@@ -239,7 +239,6 @@
|
|
|
239
239
|
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
|
240
240
|
"dev": true,
|
|
241
241
|
"license": "MIT",
|
|
242
|
-
"peer": true,
|
|
243
242
|
"bin": {
|
|
244
243
|
"acorn": "bin/acorn"
|
|
245
244
|
},
|
|
@@ -258,9 +257,9 @@
|
|
|
258
257
|
}
|
|
259
258
|
},
|
|
260
259
|
"node_modules/ajv": {
|
|
261
|
-
"version": "6.
|
|
262
|
-
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.
|
|
263
|
-
"integrity": "sha512-
|
|
260
|
+
"version": "6.14.0",
|
|
261
|
+
"resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
|
|
262
|
+
"integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
|
|
264
263
|
"dev": true,
|
|
265
264
|
"license": "MIT",
|
|
266
265
|
"dependencies": {
|
|
@@ -305,9 +304,9 @@
|
|
|
305
304
|
"license": "MIT"
|
|
306
305
|
},
|
|
307
306
|
"node_modules/brace-expansion": {
|
|
308
|
-
"version": "1.1.
|
|
309
|
-
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.
|
|
310
|
-
"integrity": "sha512-
|
|
307
|
+
"version": "1.1.12",
|
|
308
|
+
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
|
|
309
|
+
"integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
|
|
311
310
|
"dev": true,
|
|
312
311
|
"license": "MIT",
|
|
313
312
|
"dependencies": {
|
|
@@ -423,26 +422,25 @@
|
|
|
423
422
|
}
|
|
424
423
|
},
|
|
425
424
|
"node_modules/eslint": {
|
|
426
|
-
"version": "9.39.
|
|
427
|
-
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.
|
|
428
|
-
"integrity": "sha512-
|
|
425
|
+
"version": "9.39.4",
|
|
426
|
+
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.4.tgz",
|
|
427
|
+
"integrity": "sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==",
|
|
429
428
|
"dev": true,
|
|
430
429
|
"license": "MIT",
|
|
431
|
-
"peer": true,
|
|
432
430
|
"dependencies": {
|
|
433
431
|
"@eslint-community/eslint-utils": "^4.8.0",
|
|
434
432
|
"@eslint-community/regexpp": "^4.12.1",
|
|
435
|
-
"@eslint/config-array": "^0.21.
|
|
433
|
+
"@eslint/config-array": "^0.21.2",
|
|
436
434
|
"@eslint/config-helpers": "^0.4.2",
|
|
437
435
|
"@eslint/core": "^0.17.0",
|
|
438
|
-
"@eslint/eslintrc": "^3.3.
|
|
439
|
-
"@eslint/js": "9.39.
|
|
436
|
+
"@eslint/eslintrc": "^3.3.5",
|
|
437
|
+
"@eslint/js": "9.39.4",
|
|
440
438
|
"@eslint/plugin-kit": "^0.4.1",
|
|
441
439
|
"@humanfs/node": "^0.16.6",
|
|
442
440
|
"@humanwhocodes/module-importer": "^1.0.1",
|
|
443
441
|
"@humanwhocodes/retry": "^0.4.2",
|
|
444
442
|
"@types/estree": "^1.0.6",
|
|
445
|
-
"ajv": "^6.
|
|
443
|
+
"ajv": "^6.14.0",
|
|
446
444
|
"chalk": "^4.0.0",
|
|
447
445
|
"cross-spawn": "^7.0.6",
|
|
448
446
|
"debug": "^4.3.2",
|
|
@@ -461,7 +459,7 @@
|
|
|
461
459
|
"is-glob": "^4.0.0",
|
|
462
460
|
"json-stable-stringify-without-jsonify": "^1.0.1",
|
|
463
461
|
"lodash.merge": "^4.6.2",
|
|
464
|
-
"minimatch": "^3.1.
|
|
462
|
+
"minimatch": "^3.1.5",
|
|
465
463
|
"natural-compare": "^1.4.0",
|
|
466
464
|
"optionator": "^0.9.3"
|
|
467
465
|
},
|
|
@@ -753,9 +751,9 @@
|
|
|
753
751
|
"license": "ISC"
|
|
754
752
|
},
|
|
755
753
|
"node_modules/js-yaml": {
|
|
756
|
-
"version": "4.1.
|
|
757
|
-
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.
|
|
758
|
-
"integrity": "sha512-
|
|
754
|
+
"version": "4.1.1",
|
|
755
|
+
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz",
|
|
756
|
+
"integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==",
|
|
759
757
|
"dev": true,
|
|
760
758
|
"license": "MIT",
|
|
761
759
|
"dependencies": {
|
|
@@ -834,9 +832,9 @@
|
|
|
834
832
|
"license": "MIT"
|
|
835
833
|
},
|
|
836
834
|
"node_modules/minimatch": {
|
|
837
|
-
"version": "3.1.
|
|
838
|
-
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.
|
|
839
|
-
"integrity": "sha512-
|
|
835
|
+
"version": "3.1.5",
|
|
836
|
+
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
|
|
837
|
+
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
|
|
840
838
|
"dev": true,
|
|
841
839
|
"license": "ISC",
|
|
842
840
|
"dependencies": {
|
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.60.
|
|
4
|
+
version: 0.60.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Yegor Bugayenko
|
|
@@ -163,6 +163,20 @@ dependencies:
|
|
|
163
163
|
- - "~>"
|
|
164
164
|
- !ruby/object:Gem::Version
|
|
165
165
|
version: '1.10'
|
|
166
|
+
- !ruby/object:Gem::Dependency
|
|
167
|
+
name: octokit
|
|
168
|
+
requirement: !ruby/object:Gem::Requirement
|
|
169
|
+
requirements:
|
|
170
|
+
- - "~>"
|
|
171
|
+
- !ruby/object:Gem::Version
|
|
172
|
+
version: '10.0'
|
|
173
|
+
type: :runtime
|
|
174
|
+
prerelease: false
|
|
175
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
176
|
+
requirements:
|
|
177
|
+
- - "~>"
|
|
178
|
+
- !ruby/object:Gem::Version
|
|
179
|
+
version: '10.0'
|
|
166
180
|
- !ruby/object:Gem::Dependency
|
|
167
181
|
name: others
|
|
168
182
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -312,6 +326,7 @@ files:
|
|
|
312
326
|
- lib/judges/judge.rb
|
|
313
327
|
- lib/judges/judges.rb
|
|
314
328
|
- lib/judges/options.rb
|
|
329
|
+
- lib/judges/pretty_exception.rb
|
|
315
330
|
- lib/judges/statistics.rb
|
|
316
331
|
- lib/judges/to_rel.rb
|
|
317
332
|
- package-lock.json
|