judges 0.1.0 → 0.2.0
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 +2 -2
- data/Gemfile.lock +12 -7
- data/features/test.feature +17 -1
- data/features/update.feature +2 -2
- data/judges.gemspec +2 -2
- data/lib/judges/commands/test.rb +16 -5
- data/lib/judges/commands/update.rb +3 -2
- data/lib/judges.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f36d80279b095db31b037136ab951bbc395bd5b5d74922149706ab8fe404381b
|
4
|
+
data.tar.gz: c0e1c403f0857e5c1764c8a0cf620761c36bf9e92dbcf9f4c4f2dbc420755651
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d729a939b8a4b5894122d3e899487b8838dc92db04176f7ab3cb843d401b05edfd081744c5979c9169d98f78070ab0637f54b1f6d3623c60086e70b8666398f7
|
7
|
+
data.tar.gz: 15246686f5279034d4a57d0050931d93ebe6546c807e30e2d1bc0dd8611b7b8edfe6cd552272db3103f1001947078aa2b49b8a58935b1831fde503e509eef3ec
|
data/Gemfile
CHANGED
@@ -28,9 +28,9 @@ gem 'minitest', '5.23.1', require: false
|
|
28
28
|
gem 'net-ping', '2.0.8', require: false
|
29
29
|
gem 'rake', '13.2.1', require: false
|
30
30
|
gem 'rspec-rails', '6.1.2', require: false
|
31
|
-
gem 'rubocop', '1.64.
|
31
|
+
gem 'rubocop', '1.64.1', require: false
|
32
32
|
gem 'rubocop-performance', '1.21.0', require: false
|
33
|
-
gem 'rubocop-rspec', '2.
|
33
|
+
gem 'rubocop-rspec', '2.30.0', require: false
|
34
34
|
gem 'simplecov', '0.22.0', require: false
|
35
35
|
gem 'simplecov-cobertura', '2.1.0', require: false
|
36
36
|
gem 'webmock', '3.23.1', require: false
|
data/Gemfile.lock
CHANGED
@@ -4,7 +4,7 @@ PATH
|
|
4
4
|
judges (0.0.0)
|
5
5
|
backtrace (~> 0.3)
|
6
6
|
concurrent-ruby (= 1.2.3)
|
7
|
-
factbase (~> 0.0
|
7
|
+
factbase (~> 0.0)
|
8
8
|
gli (~> 2.21)
|
9
9
|
iri (~> 0.8)
|
10
10
|
loog (~> 0.2)
|
@@ -84,12 +84,17 @@ GEM
|
|
84
84
|
erubi (1.12.0)
|
85
85
|
ethon (0.16.0)
|
86
86
|
ffi (>= 1.15.0)
|
87
|
-
factbase (0.0.
|
87
|
+
factbase (0.0.41)
|
88
88
|
json (~> 2.7)
|
89
89
|
loog (~> 0.2)
|
90
90
|
nokogiri (~> 1.10)
|
91
91
|
yaml (~> 0.3)
|
92
|
-
ffi (1.
|
92
|
+
ffi (1.17.0-aarch64-linux-gnu)
|
93
|
+
ffi (1.17.0-arm-linux-gnu)
|
94
|
+
ffi (1.17.0-arm64-darwin)
|
95
|
+
ffi (1.17.0-x86-linux-gnu)
|
96
|
+
ffi (1.17.0-x86_64-darwin)
|
97
|
+
ffi (1.17.0-x86_64-linux-gnu)
|
93
98
|
gli (2.21.1)
|
94
99
|
hashdiff (1.1.0)
|
95
100
|
i18n (1.14.5)
|
@@ -179,7 +184,7 @@ GEM
|
|
179
184
|
rspec-mocks (~> 3.13)
|
180
185
|
rspec-support (~> 3.13)
|
181
186
|
rspec-support (3.13.1)
|
182
|
-
rubocop (1.64.
|
187
|
+
rubocop (1.64.1)
|
183
188
|
json (~> 2.3)
|
184
189
|
language_server-protocol (>= 3.17.0)
|
185
190
|
parallel (~> 1.10)
|
@@ -199,7 +204,7 @@ GEM
|
|
199
204
|
rubocop-performance (1.21.0)
|
200
205
|
rubocop (>= 1.48.1, < 2.0)
|
201
206
|
rubocop-ast (>= 1.31.1, < 2.0)
|
202
|
-
rubocop-rspec (2.
|
207
|
+
rubocop-rspec (2.30.0)
|
203
208
|
rubocop (~> 1.40)
|
204
209
|
rubocop-capybara (~> 2.17)
|
205
210
|
rubocop-factory_bot (~> 2.22)
|
@@ -250,9 +255,9 @@ DEPENDENCIES
|
|
250
255
|
net-ping (= 2.0.8)
|
251
256
|
rake (= 13.2.1)
|
252
257
|
rspec-rails (= 6.1.2)
|
253
|
-
rubocop (= 1.64.
|
258
|
+
rubocop (= 1.64.1)
|
254
259
|
rubocop-performance (= 1.21.0)
|
255
|
-
rubocop-rspec (= 2.
|
260
|
+
rubocop-rspec (= 2.30.0)
|
256
261
|
simplecov (= 0.22.0)
|
257
262
|
simplecov-cobertura (= 2.1.0)
|
258
263
|
webmock (= 3.23.1)
|
data/features/test.feature
CHANGED
@@ -14,6 +14,16 @@ Feature: Test
|
|
14
14
|
|
15
15
|
Scenario: Simple test of no judges
|
16
16
|
Given I run bin/judges with "test --judge absent_for_sure ./fixtures"
|
17
|
+
Then Exit code is zero
|
18
|
+
|
19
|
+
Scenario: Simple test of no judges at all
|
20
|
+
Given I make a temp directory
|
21
|
+
Given I run bin/judges with "test ."
|
22
|
+
Then Exit code is not zero
|
23
|
+
|
24
|
+
Scenario: Simple test of no judges at all
|
25
|
+
Given I make a temp directory
|
26
|
+
Given I run bin/judges with "test --judge some ."
|
17
27
|
Then Exit code is not zero
|
18
28
|
|
19
29
|
Scenario: Simple test of a few judges, with a lib
|
@@ -23,12 +33,18 @@ Feature: Test
|
|
23
33
|
n = $fb.insert
|
24
34
|
n.foo = $foo
|
25
35
|
"""
|
36
|
+
Then I have a "myjudges/myjudge/good.yml" file with content:
|
37
|
+
"""
|
38
|
+
---
|
39
|
+
category: good
|
40
|
+
input: []
|
41
|
+
"""
|
26
42
|
Then I have a "mylib/foo.rb" file with content:
|
27
43
|
"""
|
28
44
|
$foo = 42
|
29
45
|
"""
|
30
46
|
Then I run bin/judges with "test --lib mylib myjudges"
|
31
|
-
Then Stdout contains "All 1 judge(s)
|
47
|
+
Then Stdout contains "All 1 judge(s) and 1 tests passed"
|
32
48
|
And Exit code is zero
|
33
49
|
|
34
50
|
Scenario: Enable only one category
|
data/features/update.feature
CHANGED
@@ -12,7 +12,7 @@ Feature: Update
|
|
12
12
|
Then Stdout contains "foo → "
|
13
13
|
Then Stdout contains "bar → "
|
14
14
|
Then Stdout contains "1 judge(s) processed"
|
15
|
-
Then Stdout contains "Update finished
|
15
|
+
Then Stdout contains "Update finished in 3 cycle(s), +3 fact(s)"
|
16
16
|
And Exit code is zero
|
17
17
|
|
18
18
|
Scenario: Simple run of a few judges, with a lib
|
@@ -28,7 +28,7 @@ Feature: Update
|
|
28
28
|
"""
|
29
29
|
Then I run bin/judges with "update --lib mylib --max-cycles 1 mine simple.fb"
|
30
30
|
Then Stdout contains "1 judge(s) processed"
|
31
|
-
Then Stdout contains "Update finished
|
31
|
+
Then Stdout contains "Update finished in 1 cycle(s)"
|
32
32
|
And Exit code is zero
|
33
33
|
|
34
34
|
Scenario: The update fails when a bug in a judge
|
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.
|
29
|
+
s.version = '0.2.0'
|
30
30
|
s.license = 'MIT'
|
31
31
|
s.summary = 'Command-Line Tool for a Factbase'
|
32
32
|
s.description =
|
@@ -44,7 +44,7 @@ Gem::Specification.new do |s|
|
|
44
44
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
45
45
|
s.add_runtime_dependency 'backtrace', '~> 0.3'
|
46
46
|
s.add_runtime_dependency 'concurrent-ruby', '1.2.3'
|
47
|
-
s.add_runtime_dependency 'factbase', '~>0.0
|
47
|
+
s.add_runtime_dependency 'factbase', '~>0.0'
|
48
48
|
s.add_runtime_dependency 'gli', '~>2.21'
|
49
49
|
s.add_runtime_dependency 'iri', '~>0.8'
|
50
50
|
s.add_runtime_dependency 'loog', '~>0.2'
|
data/lib/judges/commands/test.rb
CHANGED
@@ -48,11 +48,16 @@ class Judges::Test
|
|
48
48
|
errors = []
|
49
49
|
judges = 0
|
50
50
|
tests = 0
|
51
|
+
visible = []
|
51
52
|
elapsed(@loog) do
|
52
53
|
Judges::Judges.new(dir, opts['lib'], @loog).each_with_index do |p, i|
|
54
|
+
visible << p.name
|
53
55
|
next unless include?(opts, p.name)
|
54
56
|
@loog.info("\n👉 Testing #{p.script} (##{i}) in #{p.dir.to_rel}...")
|
55
57
|
p.tests.each do |f|
|
58
|
+
tname = File.basename(f).gsub(/\.yml$/, '')
|
59
|
+
visible << " #{p.name}/#{tname}"
|
60
|
+
next unless include?(opts, p.name, tname)
|
56
61
|
yaml = YAML.load_file(f, permitted_classes: [Time])
|
57
62
|
if yaml['skip']
|
58
63
|
@loog.info("Skippped #{f.to_rel}")
|
@@ -82,17 +87,23 @@ class Judges::Test
|
|
82
87
|
raise "#{errors.size} tests failed" unless opts['quiet']
|
83
88
|
@loog.debug('Not failing the build with tests failures, due to the --quiet option')
|
84
89
|
end
|
85
|
-
return unless judges.zero?
|
86
|
-
|
87
|
-
|
90
|
+
return unless judges.zero? || tests.zero?
|
91
|
+
if opts['judge'].nil?
|
92
|
+
raise 'There are seems to be no judges' unless opts['quiet']
|
93
|
+
@loog.debug('Not failing the build with no judges tested, due to the --quiet option')
|
94
|
+
else
|
95
|
+
raise 'There are seems to be no judges' if visible.empty?
|
96
|
+
@loog.info("The following judges are available to use with the --judge option:\n #{visible.join("\n ")}")
|
97
|
+
end
|
88
98
|
end
|
89
99
|
|
90
100
|
private
|
91
101
|
|
92
|
-
def include?(opts, name)
|
102
|
+
def include?(opts, name, tname = nil)
|
93
103
|
judges = opts['judge'] || []
|
94
104
|
return true if judges.empty?
|
95
|
-
|
105
|
+
tre = tname.nil? ? '.+' : tname
|
106
|
+
judges.any? { |n| n.match?(%r{^#{name}(/#{tre})?$}) }
|
96
107
|
end
|
97
108
|
|
98
109
|
def test_one(opts, judge, yaml)
|
@@ -45,6 +45,7 @@ class Judges::Update
|
|
45
45
|
impex = Judges::Impex.new(@loog, args[1])
|
46
46
|
fb = impex.import(strict: false)
|
47
47
|
fb = Factbase::Looged.new(fb, @loog)
|
48
|
+
before = fb.size
|
48
49
|
options = Judges::Options.new(opts['option'])
|
49
50
|
@loog.debug("The following options provided:\n\t#{options.to_s.gsub("\n", "\n\t")}")
|
50
51
|
judges = Judges::Judges.new(dir, opts['lib'], @loog)
|
@@ -66,12 +67,12 @@ class Judges::Update
|
|
66
67
|
break
|
67
68
|
end
|
68
69
|
@loog.info(
|
69
|
-
"By #{diff}
|
70
|
+
"By #{diff.abs} fact(s) the factbase " \
|
70
71
|
"#{diff.positive? ? 'increased' : 'decreased'} " \
|
71
72
|
"its size at the cycle ##{c}"
|
72
73
|
)
|
73
74
|
end
|
74
|
-
throw :"Update finished
|
75
|
+
throw :"Update finished in #{c} cycle(s), #{format('+%d', fb.size - before)} fact(s)"
|
75
76
|
end
|
76
77
|
end
|
77
78
|
|
data/lib/judges.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: judges
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.0
|
47
|
+
version: '0.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.0
|
54
|
+
version: '0.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: gli
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|