judges 0.35.0 → 0.36.1
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.lock +9 -7
- data/bin/judges +17 -1
- data/features/test.feature +5 -0
- data/features/update.feature +1 -1
- data/judges.gemspec +3 -2
- data/lib/judges/commands/eval.rb +5 -3
- data/lib/judges/commands/import.rb +5 -3
- data/lib/judges/commands/test.rb +4 -2
- data/lib/judges/commands/update.rb +6 -4
- data/lib/judges/judge.rb +5 -0
- data/lib/judges.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1fde75565aa4889287865d272f2ce95ae788b12bb7fdbf5ea8737d1c8124570d
|
4
|
+
data.tar.gz: ff4f2cc790568ab9c627be92224eb606f9ff91bea1e87a96e88a4fb1acfef4e0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3aafb547e3d7e1709cb0be1e0bc05c88d7148d9179ad847e7837e116a7419aa04a8d7595b5af85f8b09b3dc29508918f48df74411f0f007e553f8be7bc9857ab
|
7
|
+
data.tar.gz: 3d7b9bb6c2919cadb493102bb95eb5233103d9d66e75df536feb678bf76bf9bd49f01b1cbf4361fbb9c2809c2760c8809749594b71ea1aca75f5f52a3b95636e
|
data/Gemfile.lock
CHANGED
@@ -6,7 +6,7 @@ PATH
|
|
6
6
|
baza.rb (~> 0)
|
7
7
|
concurrent-ruby (~> 1.2)
|
8
8
|
elapsed (~> 0)
|
9
|
-
factbase (>= 0.7.
|
9
|
+
factbase (>= 0.7.5)
|
10
10
|
gli (~> 2.21)
|
11
11
|
iri (~> 0)
|
12
12
|
loog (~> 0)
|
@@ -16,6 +16,7 @@ PATH
|
|
16
16
|
retries (~> 0)
|
17
17
|
tago (~> 0)
|
18
18
|
timeout (~> 0)
|
19
|
+
total (~> 0)
|
19
20
|
typhoeus (~> 1.3)
|
20
21
|
|
21
22
|
GEM
|
@@ -113,14 +114,14 @@ GEM
|
|
113
114
|
erubi (1.13.1)
|
114
115
|
ethon (0.16.0)
|
115
116
|
ffi (>= 1.15.0)
|
116
|
-
factbase (0.7.
|
117
|
-
backtrace (
|
118
|
-
decoor (
|
117
|
+
factbase (0.7.5)
|
118
|
+
backtrace (>= 0.4.0)
|
119
|
+
decoor (>= 0.0.1)
|
119
120
|
json (~> 2.7)
|
120
|
-
loog (
|
121
|
+
loog (>= 0.6.0)
|
121
122
|
nokogiri (~> 1.10)
|
122
|
-
others (
|
123
|
-
tago (
|
123
|
+
others (>= 0.0.3)
|
124
|
+
tago (>= 0.0.2)
|
124
125
|
yaml (~> 0.3)
|
125
126
|
faraday (2.12.2)
|
126
127
|
faraday-net_http (>= 2.0, < 3.5)
|
@@ -297,6 +298,7 @@ GEM
|
|
297
298
|
tago (0.0.2)
|
298
299
|
thor (1.3.2)
|
299
300
|
timeout (0.4.3)
|
301
|
+
total (0.4.1)
|
300
302
|
typhoeus (1.4.1)
|
301
303
|
ethon (>= 0.9.0)
|
302
304
|
tzinfo (2.0.6)
|
data/bin/judges
CHANGED
@@ -7,8 +7,9 @@ $stdout.sync = true
|
|
7
7
|
|
8
8
|
require 'gli'
|
9
9
|
require 'loog'
|
10
|
+
require 'tago'
|
10
11
|
require 'time'
|
11
|
-
require '
|
12
|
+
require 'total'
|
12
13
|
require_relative '../lib/judges'
|
13
14
|
|
14
15
|
Encoding.default_external = Encoding::UTF_8
|
@@ -19,8 +20,10 @@ class JudgesGLI extend GLI::App
|
|
19
20
|
def self.run_it(cmd, ruby)
|
20
21
|
cmd.action do |global, options, args|
|
21
22
|
require_relative "../lib/judges/commands/#{ruby}"
|
23
|
+
start = Time.now
|
22
24
|
@@loog.debug("Running '#{ruby}' command...")
|
23
25
|
Object.const_get("Judges::#{ruby.capitalize}").new(@@loog).run(options, args)
|
26
|
+
@@loog.debug("Command '#{ruby}' finished in #{start.ago}")
|
24
27
|
end
|
25
28
|
end
|
26
29
|
|
@@ -36,16 +39,25 @@ class JudgesGLI extend GLI::App
|
|
36
39
|
|
37
40
|
desc 'Make it more verbose, logging as much as possible'
|
38
41
|
switch([:v, :verbose])
|
42
|
+
desc 'Version of Factbase to use'
|
43
|
+
flag([:factbase], type: String)
|
39
44
|
|
40
45
|
pre do |global, command, options, args|
|
41
46
|
if global[:verbose]
|
42
47
|
@@loog = Loog::VERBOSE
|
43
48
|
end
|
44
49
|
@@loog.debug("Judges #{Judges::VERSION}")
|
50
|
+
if global[:factbase]
|
51
|
+
ver = global[:factbase]
|
52
|
+
@@loog.debug("Factbase version to be used: '#{ver}' (set via --factbase)")
|
53
|
+
gem 'factbase', ver
|
54
|
+
end
|
55
|
+
require 'factbase'
|
45
56
|
@@loog.debug("Factbase #{Factbase::VERSION}")
|
46
57
|
@@loog.debug("Ruby: #{RUBY_VERSION}-p#{RUBY_PATCHLEVEL}")
|
47
58
|
@@loog.debug("Current directory: #{Dir.getwd}")
|
48
59
|
@@loog.debug("Time: #{Time.now.utc.iso8601}")
|
60
|
+
@@loog.debug("Total memory: #{Total::Mem.new.bytes / (1024 * 1024)}Mb")
|
49
61
|
true
|
50
62
|
end
|
51
63
|
|
@@ -74,6 +86,8 @@ class JudgesGLI extend GLI::App
|
|
74
86
|
|
75
87
|
desc 'Evaluate a single Ruby expression on the factbase'
|
76
88
|
command :eval do |c|
|
89
|
+
c.desc 'Use default logging facility'
|
90
|
+
c.switch([:log], default_value: true)
|
77
91
|
run_it(c, 'eval')
|
78
92
|
end
|
79
93
|
|
@@ -84,6 +98,8 @@ class JudgesGLI extend GLI::App
|
|
84
98
|
|
85
99
|
desc 'Import YAML into a factbase'
|
86
100
|
command :import do |c|
|
101
|
+
c.desc 'Use default logging facility'
|
102
|
+
c.switch([:log], default_value: true)
|
87
103
|
run_it(c, 'import')
|
88
104
|
end
|
89
105
|
|
data/features/test.feature
CHANGED
@@ -15,6 +15,11 @@ Feature: Test
|
|
15
15
|
Then Stdout contains "All 1 judge(s) and 1 tests passed"
|
16
16
|
And Exit code is zero
|
17
17
|
|
18
|
+
Scenario: Factbase version can be set
|
19
|
+
When I run bin/judges with "--factbase 0.7.5 --verbose test --judge guess ./fixtures"
|
20
|
+
Then Exit code is zero
|
21
|
+
And Stdout contains "Factbase version to be used: '0.7.5'"
|
22
|
+
|
18
23
|
Scenario: Simple test of no judges
|
19
24
|
Given I run bin/judges with "test --judge absent_for_sure ./fixtures"
|
20
25
|
Then Exit code is zero
|
data/features/update.feature
CHANGED
@@ -44,7 +44,7 @@ Feature: Update
|
|
44
44
|
$fb.insert.foo = 1
|
45
45
|
"""
|
46
46
|
Then I run bin/judges with "--verbose update --timeout 1 --quiet . foo.fb"
|
47
|
-
Then Stdout contains "
|
47
|
+
Then Stdout contains "execution expired"
|
48
48
|
Then Stdout contains "1 judge(s) processed"
|
49
49
|
Then Stdout contains "Update finished in 1 cycle(s), did 0i/0d/0a"
|
50
50
|
And Exit code is zero
|
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.
|
12
|
+
s.version = '0.36.1'
|
13
13
|
s.license = 'MIT'
|
14
14
|
s.summary = 'Command-Line Tool for a Factbase'
|
15
15
|
s.description =
|
@@ -29,7 +29,7 @@ Gem::Specification.new do |s|
|
|
29
29
|
s.add_dependency 'baza.rb', '~>0'
|
30
30
|
s.add_dependency 'concurrent-ruby', '~>1.2'
|
31
31
|
s.add_dependency 'elapsed', '~>0'
|
32
|
-
s.add_dependency 'factbase', '>=0.7.
|
32
|
+
s.add_dependency 'factbase', '>=0.7.5'
|
33
33
|
s.add_dependency 'gli', '~>2.21'
|
34
34
|
s.add_dependency 'iri', '~>0'
|
35
35
|
s.add_dependency 'loog', '~>0'
|
@@ -39,6 +39,7 @@ Gem::Specification.new do |s|
|
|
39
39
|
s.add_dependency 'retries', '~>0'
|
40
40
|
s.add_dependency 'tago', '~>0'
|
41
41
|
s.add_dependency 'timeout', '~>0'
|
42
|
+
s.add_dependency 'total', '~>0'
|
42
43
|
s.add_dependency 'typhoeus', '~>1.3'
|
43
44
|
s.metadata['rubygems_mfa_required'] = 'true'
|
44
45
|
end
|
data/lib/judges/commands/eval.rb
CHANGED
@@ -4,7 +4,6 @@
|
|
4
4
|
# SPDX-License-Identifier: MIT
|
5
5
|
|
6
6
|
require 'elapsed'
|
7
|
-
require 'factbase/looged'
|
8
7
|
require_relative '../../judges'
|
9
8
|
require_relative '../../judges/impex'
|
10
9
|
|
@@ -21,12 +20,15 @@ class Judges::Eval
|
|
21
20
|
@loog = loog
|
22
21
|
end
|
23
22
|
|
24
|
-
def run(
|
23
|
+
def run(opts, args)
|
25
24
|
raise 'Exactly two arguments required' unless args.size == 2
|
26
25
|
impex = Judges::Impex.new(@loog, args[0])
|
27
26
|
elapsed(@loog, level: Logger::INFO) do
|
28
27
|
$fb = impex.import(strict: false)
|
29
|
-
|
28
|
+
if opts['log']
|
29
|
+
require 'factbase/logged'
|
30
|
+
$fb = Factbase::Logged.new($fb, @loog)
|
31
|
+
end
|
30
32
|
expr = args[1]
|
31
33
|
# rubocop:disable Security/Eval
|
32
34
|
eval(expr)
|
@@ -5,7 +5,6 @@
|
|
5
5
|
|
6
6
|
require 'elapsed'
|
7
7
|
require 'time'
|
8
|
-
require 'factbase/looged'
|
9
8
|
require_relative '../../judges'
|
10
9
|
require_relative '../../judges/impex'
|
11
10
|
require_relative '../../judges/to_rel'
|
@@ -23,7 +22,7 @@ class Judges::Import
|
|
23
22
|
@loog = loog
|
24
23
|
end
|
25
24
|
|
26
|
-
def run(
|
25
|
+
def run(opts, args)
|
27
26
|
raise 'Exactly two arguments required' unless args.size == 2
|
28
27
|
raise "File not found #{args[0].to_rel}" unless File.exist?(args[0])
|
29
28
|
elapsed(@loog, level: Logger::INFO) do
|
@@ -31,7 +30,10 @@ class Judges::Import
|
|
31
30
|
@loog.info("YAML loaded from #{args[0].to_rel} (#{yaml.size} facts)")
|
32
31
|
impex = Judges::Impex.new(@loog, args[1])
|
33
32
|
fb = impex.import(strict: false)
|
34
|
-
|
33
|
+
if opts['log']
|
34
|
+
require 'factbase/logged'
|
35
|
+
fb = Factbase::Logged.new(fb, @loog)
|
36
|
+
end
|
35
37
|
yaml.each do |i|
|
36
38
|
f = fb.insert
|
37
39
|
i.each do |p, v|
|
data/lib/judges/commands/test.rb
CHANGED
@@ -6,7 +6,6 @@
|
|
6
6
|
require 'nokogiri'
|
7
7
|
require 'factbase'
|
8
8
|
require 'backtrace'
|
9
|
-
require 'factbase/looged'
|
10
9
|
require 'factbase/to_xml'
|
11
10
|
require 'elapsed'
|
12
11
|
require_relative '../../judges'
|
@@ -149,7 +148,10 @@ class Judges::Test
|
|
149
148
|
runs = opts['runs'] || yaml['runs'] || 1
|
150
149
|
(1..runs).each do |r|
|
151
150
|
fbx = fb
|
152
|
-
|
151
|
+
if opts['log']
|
152
|
+
require 'factbase/logged'
|
153
|
+
fbx = Factbase::Logged.new(fb, @loog)
|
154
|
+
end
|
153
155
|
expected_failure = yaml['expected_failure']
|
154
156
|
begin
|
155
157
|
judge.run(fbx, {}, {}, options)
|
@@ -5,15 +5,14 @@
|
|
5
5
|
|
6
6
|
require 'backtrace'
|
7
7
|
require 'elapsed'
|
8
|
-
require 'factbase/looged'
|
9
8
|
require 'factbase/churn'
|
10
9
|
require 'tago'
|
11
10
|
require 'timeout'
|
12
11
|
require_relative '../../judges'
|
13
|
-
require_relative '../../judges/
|
12
|
+
require_relative '../../judges/impex'
|
14
13
|
require_relative '../../judges/judges'
|
15
14
|
require_relative '../../judges/options'
|
16
|
-
require_relative '../../judges/
|
15
|
+
require_relative '../../judges/to_rel'
|
17
16
|
|
18
17
|
# The +update+ command.
|
19
18
|
#
|
@@ -39,7 +38,10 @@ class Judges::Update
|
|
39
38
|
start = Time.now
|
40
39
|
impex = Judges::Impex.new(@loog, args[1])
|
41
40
|
fb = impex.import(strict: false)
|
42
|
-
|
41
|
+
if opts['log']
|
42
|
+
require 'factbase/logged'
|
43
|
+
fb = Factbase::Logged.new(fb, @loog)
|
44
|
+
end
|
43
45
|
options = Judges::Options.new(opts['option'])
|
44
46
|
if opts['options-file']
|
45
47
|
options += Judges::Options.new(
|
data/lib/judges/judge.rb
CHANGED
@@ -55,6 +55,11 @@ class Judges::Judge
|
|
55
55
|
elapsed(@loog, intro: "#{$judge} finished", level: Logger::INFO) do
|
56
56
|
load(s, true)
|
57
57
|
$fb.churn
|
58
|
+
# rubocop:disable Lint/RescueException
|
59
|
+
rescue Exception => e
|
60
|
+
# rubocop:enable Lint/RescueException
|
61
|
+
@loog.error(Backtrace.new(e))
|
62
|
+
raise e.message
|
58
63
|
ensure
|
59
64
|
$fb = $judge = $options = $loog = nil
|
60
65
|
end
|
data/lib/judges.rb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: judges
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.36.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-03-
|
10
|
+
date: 2025-03-04 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: backtrace
|
@@ -71,14 +71,14 @@ dependencies:
|
|
71
71
|
requirements:
|
72
72
|
- - ">="
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 0.7.
|
74
|
+
version: 0.7.5
|
75
75
|
type: :runtime
|
76
76
|
prerelease: false
|
77
77
|
version_requirements: !ruby/object:Gem::Requirement
|
78
78
|
requirements:
|
79
79
|
- - ">="
|
80
80
|
- !ruby/object:Gem::Version
|
81
|
-
version: 0.7.
|
81
|
+
version: 0.7.5
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: gli
|
84
84
|
requirement: !ruby/object:Gem::Requirement
|
@@ -205,6 +205,20 @@ dependencies:
|
|
205
205
|
- - "~>"
|
206
206
|
- !ruby/object:Gem::Version
|
207
207
|
version: '0'
|
208
|
+
- !ruby/object:Gem::Dependency
|
209
|
+
name: total
|
210
|
+
requirement: !ruby/object:Gem::Requirement
|
211
|
+
requirements:
|
212
|
+
- - "~>"
|
213
|
+
- !ruby/object:Gem::Version
|
214
|
+
version: '0'
|
215
|
+
type: :runtime
|
216
|
+
prerelease: false
|
217
|
+
version_requirements: !ruby/object:Gem::Requirement
|
218
|
+
requirements:
|
219
|
+
- - "~>"
|
220
|
+
- !ruby/object:Gem::Version
|
221
|
+
version: '0'
|
208
222
|
- !ruby/object:Gem::Dependency
|
209
223
|
name: typhoeus
|
210
224
|
requirement: !ruby/object:Gem::Requirement
|