judges 0.0.23 → 0.0.24
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/bin/judges +5 -1
- data/features/inspect.feature +16 -0
- data/features/misc.feature +11 -0
- data/features/print.feature +41 -0
- data/features/test.feature +32 -0
- data/features/trim.feature +14 -0
- data/features/update.feature +32 -0
- data/judges.gemspec +2 -2
- data/lib/judges/commands/test.rb +1 -1
- data/lib/judges/commands/trim.rb +8 -4
- data/lib/judges/commands/update.rb +1 -1
- data/lib/judges/impex.rb +3 -3
- data/lib/judges/pack.rb +13 -4
- data/lib/judges/packs.rb +3 -2
- data/test/commands/test_trim.rb +1 -1
- data/test/test_pack.rb +19 -4
- data/test/test_packs.rb +1 -1
- metadata +10 -5
- data/features/cli.feature +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed5fca9c346d6f092bde73a242e8b347f2abba9f7330767db25edca3d1df1dd3
|
4
|
+
data.tar.gz: cbb70db60a4dc7c953cfa6feea4d5955a27f76cf34b3c5403423e8e3b804db84
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c6d4dffa49971e1dc77788263b005d843223bf96faba1cb67333b773f411fdd9b6920577f1edaab9ae9e6fcb7191c37febc2b1ae0ee55d6fa272f45f36242aa2
|
7
|
+
data.tar.gz: a0cde0d189d3ae6bf15da5252fb03dc530103de68adeb2379dc048a2354987bb5371863352640a64cc04663db5b4c099ff7ae474f793ce4ff7f6589f5f0b4da5
|
data/Gemfile
CHANGED
@@ -24,7 +24,7 @@ source 'https://rubygems.org'
|
|
24
24
|
gemspec
|
25
25
|
|
26
26
|
gem 'cucumber', '9.2.0', require: false
|
27
|
-
gem 'minitest', '5.
|
27
|
+
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
|
data/bin/judges
CHANGED
@@ -32,7 +32,7 @@ Encoding.default_internal = Encoding::UTF_8
|
|
32
32
|
class App
|
33
33
|
extend GLI::App
|
34
34
|
|
35
|
-
ver = '0.0.
|
35
|
+
ver = '0.0.24'
|
36
36
|
|
37
37
|
loog = Loog::REGULAR
|
38
38
|
|
@@ -59,6 +59,8 @@ class App
|
|
59
59
|
command :update do |c|
|
60
60
|
c.desc 'Options to pass to every judge'
|
61
61
|
c.flag([:o, :option], multiple: true, arg_name: '<key=value>')
|
62
|
+
c.desc 'The location of a Ruby library (directory with .rb files to include)'
|
63
|
+
c.flag([:lib])
|
62
64
|
c.desc 'Maximum number of update cycles to run'
|
63
65
|
c.flag([:'max-cycles'], default_value: 8, type: Integer)
|
64
66
|
c.desc 'Stay quiet even if some judges fail'
|
@@ -111,6 +113,8 @@ class App
|
|
111
113
|
command :test do |c|
|
112
114
|
c.desc 'Name of the test pack to run'
|
113
115
|
c.flag([:pack], multiple: true)
|
116
|
+
c.desc 'The location of a Ruby library (directory with .rb files to include)'
|
117
|
+
c.flag([:lib])
|
114
118
|
c.desc 'Stay quiet even if some tests fail or simply no tests executed?'
|
115
119
|
c.switch([:quiet], default_value: false)
|
116
120
|
c.action do |global, options, args|
|
@@ -0,0 +1,16 @@
|
|
1
|
+
Feature: Inspect
|
2
|
+
I want to inspect a factbase
|
3
|
+
|
4
|
+
Scenario: Simple inspect of a small factbase
|
5
|
+
Given I make a temp directory
|
6
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
7
|
+
"""
|
8
|
+
return if $fb.size > 2
|
9
|
+
n = $fb.insert
|
10
|
+
n.kind = 'yes!'
|
11
|
+
"""
|
12
|
+
Then I run bin/judges with "update . simple.fb"
|
13
|
+
Then I run bin/judges with "inspect simple.fb"
|
14
|
+
Then Stdout contains "Facts: 3"
|
15
|
+
And Exit code is zero
|
16
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
Feature: Misc
|
2
|
+
I want to get some meta info
|
3
|
+
|
4
|
+
Scenario: Help can be printed
|
5
|
+
When I run bin/judges with "-h"
|
6
|
+
Then Exit code is zero
|
7
|
+
And Stdout contains "--help"
|
8
|
+
|
9
|
+
Scenario: Version can be printed
|
10
|
+
When I run bin/judges with "--version"
|
11
|
+
Then Exit code is zero
|
@@ -0,0 +1,41 @@
|
|
1
|
+
Feature: Print
|
2
|
+
I want to print a factbase
|
3
|
+
|
4
|
+
Scenario: Simple print of a small factbase, to YAML
|
5
|
+
Given I make a temp directory
|
6
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
7
|
+
"""
|
8
|
+
return if $fb.size > 2
|
9
|
+
n = $fb.insert
|
10
|
+
n.kind = 'yes!'
|
11
|
+
"""
|
12
|
+
Then I run bin/judges with "update . simple.fb"
|
13
|
+
Then I run bin/judges with "print --format=yaml simple.fb simple.yml"
|
14
|
+
Then Stdout contains "printed"
|
15
|
+
And Exit code is zero
|
16
|
+
|
17
|
+
Scenario: Simple print of a small factbase, to JSON
|
18
|
+
Given I make a temp directory
|
19
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
20
|
+
"""
|
21
|
+
return if $fb.size > 2
|
22
|
+
n = $fb.insert
|
23
|
+
n.kind = 'yes!'
|
24
|
+
"""
|
25
|
+
Then I run bin/judges with "update . simple.fb"
|
26
|
+
Then I run bin/judges with "print --format=json simple.fb simple.json"
|
27
|
+
Then Stdout contains "printed"
|
28
|
+
And Exit code is zero
|
29
|
+
|
30
|
+
Scenario: Simple print of a small factbase, to XML
|
31
|
+
Given I make a temp directory
|
32
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
33
|
+
"""
|
34
|
+
return if $fb.size > 2
|
35
|
+
n = $fb.insert
|
36
|
+
n.kind = 'yes!'
|
37
|
+
"""
|
38
|
+
Then I run bin/judges with "update . simple.fb"
|
39
|
+
Then I run bin/judges with "print --format=xml --auto simple.fb"
|
40
|
+
Then Stdout contains "printed"
|
41
|
+
And Exit code is zero
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Feature: Test
|
2
|
+
I want to test a few judges
|
3
|
+
|
4
|
+
Scenario: Simple test of a few judges
|
5
|
+
Given I run bin/judges with "test ./fixtures"
|
6
|
+
Then Stdout contains "👉 Testing"
|
7
|
+
Then Stdout contains "judge(s) tested successfully"
|
8
|
+
And Exit code is zero
|
9
|
+
|
10
|
+
Scenario: Simple test of just one pack
|
11
|
+
Given I run bin/judges with "test --pack reward_for_good_bug ./fixtures"
|
12
|
+
Then Stdout contains "judge(s) tested successfully"
|
13
|
+
And Exit code is zero
|
14
|
+
|
15
|
+
Scenario: Simple test of no packs
|
16
|
+
Given I run bin/judges with "test --pack absent_for_sure ./fixtures"
|
17
|
+
Then Exit code is not zero
|
18
|
+
|
19
|
+
Scenario: Simple test of a few judges, with a lib
|
20
|
+
Given I make a temp directory
|
21
|
+
Then I have a "mypacks/mypack/simple_judge.rb" file with content:
|
22
|
+
"""
|
23
|
+
n = $fb.insert
|
24
|
+
n.foo = $foo
|
25
|
+
"""
|
26
|
+
Then I have a "mylib/foo.rb" file with content:
|
27
|
+
"""
|
28
|
+
$foo = 42
|
29
|
+
"""
|
30
|
+
Then I run bin/judges with "test --lib mylib mypacks"
|
31
|
+
Then Stdout contains "All 1 judge(s) tested successfully"
|
32
|
+
And Exit code is zero
|
@@ -0,0 +1,14 @@
|
|
1
|
+
Feature: Trim
|
2
|
+
I want to trim a factbase
|
3
|
+
|
4
|
+
Scenario: Simple trimming of a factbase
|
5
|
+
Given I make a temp directory
|
6
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
7
|
+
"""
|
8
|
+
return if $fb.size > 2
|
9
|
+
$fb.insert.time = Time.now - 100 * 60 * 60 * 24
|
10
|
+
"""
|
11
|
+
Then I run bin/judges with "--verbose update . simple.fb"
|
12
|
+
Given I run bin/judges with "trim --days 5 simple.fb"
|
13
|
+
Then Stdout contains "3 fact(s) deleted"
|
14
|
+
And Exit code is zero
|
@@ -0,0 +1,32 @@
|
|
1
|
+
Feature: Update
|
2
|
+
I want to run a few judges over a factbase
|
3
|
+
|
4
|
+
Scenario: Simple run of a few judges
|
5
|
+
Given I make a temp directory
|
6
|
+
Then I have a "simple/simple_judge.rb" file with content:
|
7
|
+
"""
|
8
|
+
n = $fb.insert
|
9
|
+
n.kind = 'yes!'
|
10
|
+
"""
|
11
|
+
Then I run bin/judges with "--verbose update --quiet -o foo=1 -o bar=2 --max-cycles 3 . simple.fb"
|
12
|
+
Then Stdout contains "foo → "
|
13
|
+
Then Stdout contains "bar → "
|
14
|
+
Then Stdout contains "1 judge(s) processed"
|
15
|
+
Then Stdout contains "Update finished in 3 cycles"
|
16
|
+
And Exit code is zero
|
17
|
+
|
18
|
+
Scenario: Simple run of a few judges, with a lib
|
19
|
+
Given I make a temp directory
|
20
|
+
Then I have a "mypacks/mypack/simple_judge.rb" file with content:
|
21
|
+
"""
|
22
|
+
n = $fb.insert
|
23
|
+
n.foo = $foo
|
24
|
+
"""
|
25
|
+
Then I have a "mylib/foo.rb" file with content:
|
26
|
+
"""
|
27
|
+
$foo = 42
|
28
|
+
"""
|
29
|
+
Then I run bin/judges with "update --lib mylib --max-cycles 1 mypacks simple.fb"
|
30
|
+
Then Stdout contains "1 judge(s) processed"
|
31
|
+
Then Stdout contains "Update finished in 1 cycles"
|
32
|
+
And Exit code is zero
|
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.24'
|
30
30
|
s.license = 'MIT'
|
31
31
|
s.summary = 'Command-Line Tool for a Factbase'
|
32
32
|
s.description = '
|
@@ -42,7 +42,7 @@ Gem::Specification.new do |s|
|
|
42
42
|
s.rdoc_options = ['--charset=UTF-8']
|
43
43
|
s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
|
44
44
|
s.add_runtime_dependency 'backtrace', '~> 0.3'
|
45
|
-
s.add_runtime_dependency 'factbase', '~>0.0.
|
45
|
+
s.add_runtime_dependency 'factbase', '~>0.0.22'
|
46
46
|
s.add_runtime_dependency 'gli', '~>2.21'
|
47
47
|
s.add_runtime_dependency 'loog', '~>0.2'
|
48
48
|
s.add_runtime_dependency 'nokogiri', '~> 1.10'
|
data/lib/judges/commands/test.rb
CHANGED
@@ -44,7 +44,7 @@ class Judges::Test
|
|
44
44
|
@loog.info("Testing judges in #{dir.to_rel}...")
|
45
45
|
errors = []
|
46
46
|
done = 0
|
47
|
-
Judges::Packs.new(dir, @loog).each_with_index do |p, i|
|
47
|
+
Judges::Packs.new(dir, opts['lib'], @loog).each_with_index do |p, i|
|
48
48
|
next unless include?(opts, p.name)
|
49
49
|
@loog.info("\n👉 Testing #{p.script} (##{i}) in #{p.dir.to_rel}...")
|
50
50
|
p.tests.each do |f|
|
data/lib/judges/commands/trim.rb
CHANGED
@@ -37,10 +37,14 @@ class Judges::Trim
|
|
37
37
|
raise 'Exactly one argument required' unless args.size == 1
|
38
38
|
impex = Judges::Impex.new(@loog, args[0])
|
39
39
|
fb = impex.import
|
40
|
-
|
41
|
-
|
40
|
+
days = opts['days']
|
41
|
+
day = Time.now - (days * 60 * 60 * 24)
|
42
42
|
deleted = fb.query("(lt time #{day.utc.iso8601})").delete!
|
43
|
-
|
44
|
-
|
43
|
+
if deleted.zero?
|
44
|
+
@loog.info('No facts deleted')
|
45
|
+
else
|
46
|
+
@loog.info("🗑 #{deleted} fact(s) deleted, because they were older than #{days} days")
|
47
|
+
impex.export(fb)
|
48
|
+
end
|
45
49
|
end
|
46
50
|
end
|
@@ -46,7 +46,7 @@ class Judges::Update
|
|
46
46
|
fb = Factbase::Looged.new(fb, @loog)
|
47
47
|
options = Judges::Options.new(opts['option'])
|
48
48
|
@loog.debug("The following options provided:\n\t#{options.to_s.gsub("\n", "\n\t")}")
|
49
|
-
packs = Judges::Packs.new(dir, @loog)
|
49
|
+
packs = Judges::Packs.new(dir, opts['lib'], @loog)
|
50
50
|
c = 0
|
51
51
|
loop do
|
52
52
|
c += 1
|
data/lib/judges/impex.rb
CHANGED
@@ -39,7 +39,7 @@ class Judges::Impex
|
|
39
39
|
fb = Factbase.new
|
40
40
|
if File.exist?(@file)
|
41
41
|
fb.import(File.binread(@file))
|
42
|
-
@loog.info("The factbase imported from #{@file.to_rel} (#{File.size(@file)} bytes)")
|
42
|
+
@loog.info("The factbase imported from #{@file.to_rel} (#{File.size(@file)} bytes, #{fb.size} facts)")
|
43
43
|
elsif strict
|
44
44
|
raise "The factbase is absent at #{@file.to_rel}"
|
45
45
|
end
|
@@ -49,12 +49,12 @@ class Judges::Impex
|
|
49
49
|
def import_to(fb)
|
50
50
|
raise "The factbase is absent at #{@file.to_rel}" unless File.exist?(@file)
|
51
51
|
fb.import(File.binread(@file))
|
52
|
-
@loog.info("The factbase loaded from #{@file.to_rel} (#{File.size(@file)} bytes)")
|
52
|
+
@loog.info("The factbase loaded from #{@file.to_rel} (#{File.size(@file)} bytes, #{fb.size} facts)")
|
53
53
|
end
|
54
54
|
|
55
55
|
def export(fb)
|
56
56
|
FileUtils.mkdir_p(File.dirname(@file))
|
57
57
|
File.binwrite(@file, fb.export)
|
58
|
-
@loog.info("Factbase exported to #{@file.to_rel} (#{File.size(@file)} bytes)")
|
58
|
+
@loog.info("Factbase exported to #{@file.to_rel} (#{File.size(@file)} bytes, #{fb.size} facts)")
|
59
59
|
end
|
60
60
|
end
|
data/lib/judges/pack.rb
CHANGED
@@ -20,9 +20,8 @@
|
|
20
20
|
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
21
|
# SOFTWARE.
|
22
22
|
|
23
|
-
require 'yaml'
|
24
|
-
require 'time'
|
25
23
|
require_relative '../judges'
|
24
|
+
require_relative '../judges/to_rel'
|
26
25
|
require_relative '../judges/fb/once'
|
27
26
|
require_relative '../judges/fb/if_absent'
|
28
27
|
|
@@ -33,8 +32,9 @@ require_relative '../judges/fb/if_absent'
|
|
33
32
|
class Judges::Pack
|
34
33
|
attr_reader :dir
|
35
34
|
|
36
|
-
def initialize(dir, loog)
|
35
|
+
def initialize(dir, lib, loog)
|
37
36
|
@dir = dir
|
37
|
+
@lib = lib
|
38
38
|
@loog = loog
|
39
39
|
end
|
40
40
|
|
@@ -44,6 +44,13 @@ class Judges::Pack
|
|
44
44
|
$judge = File.basename(@dir)
|
45
45
|
$options = options
|
46
46
|
$loog = @loog
|
47
|
+
unless @lib.nil?
|
48
|
+
raise "Lib dir #{@lib.to_rel} is absent" unless File.exist?(@lib)
|
49
|
+
raise "Lib #{@lib.to_rel} is not a directory" unless File.directory?(@lib)
|
50
|
+
Dir.glob(File.join(@lib, '*.rb')).each do |f|
|
51
|
+
require_relative(File.absolute_path(f))
|
52
|
+
end
|
53
|
+
end
|
47
54
|
s = File.join(@dir, script)
|
48
55
|
raise "Can't load '#{s}'" unless File.exist?(s)
|
49
56
|
begin
|
@@ -60,7 +67,9 @@ class Judges::Pack
|
|
60
67
|
|
61
68
|
# Get the name of the .rb script in the pack.
|
62
69
|
def script
|
63
|
-
|
70
|
+
s = Dir.glob(File.join(@dir, '*.rb')).first
|
71
|
+
raise "No *.rb scripts in #{@dir.to_rel}" if s.nil?
|
72
|
+
File.basename(s)
|
64
73
|
end
|
65
74
|
|
66
75
|
# Return all .yml tests files.
|
data/lib/judges/packs.rb
CHANGED
@@ -28,8 +28,9 @@ require_relative 'pack'
|
|
28
28
|
# Copyright:: Copyright (c) 2024 Yegor Bugayenko
|
29
29
|
# License:: MIT
|
30
30
|
class Judges::Packs
|
31
|
-
def initialize(dir, loog)
|
31
|
+
def initialize(dir, lib, loog)
|
32
32
|
@dir = dir
|
33
|
+
@lib = lib
|
33
34
|
@loog = loog
|
34
35
|
end
|
35
36
|
|
@@ -38,7 +39,7 @@ class Judges::Packs
|
|
38
39
|
def each
|
39
40
|
Dir.glob(File.join(@dir, '**/*.rb')).each do |f|
|
40
41
|
d = File.dirname(File.absolute_path(f))
|
41
|
-
yield Judges::Pack.new(d, @loog)
|
42
|
+
yield Judges::Pack.new(d, @lib, @loog)
|
42
43
|
end
|
43
44
|
end
|
44
45
|
|
data/test/commands/test_trim.rb
CHANGED
@@ -39,7 +39,7 @@ class TestTrim < Minitest::Test
|
|
39
39
|
before.insert.time = Time.now + 1
|
40
40
|
before.insert.time = Time.now - (100 * 24 * 60 * 60)
|
41
41
|
File.binwrite(file, before.export)
|
42
|
-
Judges::Trim.new(Loog::VERBOSE).run({ 'days' =>
|
42
|
+
Judges::Trim.new(Loog::VERBOSE).run({ 'days' => 10 }, [file])
|
43
43
|
after = Factbase.new
|
44
44
|
after.import(File.binread(file))
|
45
45
|
assert_equal(1, after.size)
|
data/test/test_pack.rb
CHANGED
@@ -35,7 +35,7 @@ class TestPack < Minitest::Test
|
|
35
35
|
def test_basic_run
|
36
36
|
Dir.mktmpdir do |d|
|
37
37
|
File.write(File.join(d, 'foo.rb'), '$fb.insert')
|
38
|
-
pack = Judges::Pack.new(d, Loog::VERBOSE)
|
38
|
+
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
39
39
|
fb = Factbase.new
|
40
40
|
pack.run(fb, {})
|
41
41
|
assert_equal(1, fb.size)
|
@@ -45,7 +45,7 @@ class TestPack < Minitest::Test
|
|
45
45
|
def test_run_isolated
|
46
46
|
Dir.mktmpdir do |d|
|
47
47
|
File.write(File.join(d, 'bar.rb'), '$fb.insert')
|
48
|
-
pack = Judges::Pack.new(d, Loog::VERBOSE)
|
48
|
+
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
49
49
|
fb1 = Factbase.new
|
50
50
|
pack.run(fb1, {})
|
51
51
|
assert_equal(1, fb1.size)
|
@@ -58,7 +58,7 @@ class TestPack < Minitest::Test
|
|
58
58
|
def test_with_supplemenary_functions
|
59
59
|
Dir.mktmpdir do |d|
|
60
60
|
File.write(File.join(d, 'x.rb'), 'once($fb).insert')
|
61
|
-
pack = Judges::Pack.new(d, Loog::VERBOSE)
|
61
|
+
pack = Judges::Pack.new(d, nil, Loog::VERBOSE)
|
62
62
|
pack.run(Factbase.new, {})
|
63
63
|
end
|
64
64
|
end
|
@@ -70,8 +70,23 @@ class TestPack < Minitest::Test
|
|
70
70
|
FileUtils.mkdir(dir)
|
71
71
|
File.write(File.join(dir, 'foo.rb'), '$loog.info("judge=" + $judge)')
|
72
72
|
log = Loog::Buffer.new
|
73
|
-
Judges::Pack.new(dir, log).run(Factbase.new, {})
|
73
|
+
Judges::Pack.new(dir, nil, log).run(Factbase.new, {})
|
74
74
|
assert(log.to_s.include?("judge=#{j}"))
|
75
75
|
end
|
76
76
|
end
|
77
|
+
|
78
|
+
def test_with_library
|
79
|
+
Dir.mktmpdir do |d|
|
80
|
+
dir = File.join(d, 'packs')
|
81
|
+
FileUtils.mkdir_p(dir)
|
82
|
+
File.write(File.join(dir, 'x.rb'), 'once($fb).insert.bar = $foo')
|
83
|
+
lib = File.join(d, 'lib')
|
84
|
+
FileUtils.mkdir_p(lib)
|
85
|
+
File.write(File.join(lib, 'y.rb'), '$foo = 42')
|
86
|
+
pack = Judges::Pack.new(dir, lib, Loog::VERBOSE)
|
87
|
+
fb = Factbase.new
|
88
|
+
pack.run(fb, {})
|
89
|
+
assert_equal(42, fb.query('()').each.to_a.first.bar)
|
90
|
+
end
|
91
|
+
end
|
77
92
|
end
|
data/test/test_packs.rb
CHANGED
@@ -36,7 +36,7 @@ class TestPacks < Minitest::Test
|
|
36
36
|
File.write(File.join(d, 'foo.rb'), 'hey')
|
37
37
|
File.write(File.join(d, 'something.yml'), "---\nfoo: 42")
|
38
38
|
found = 0
|
39
|
-
Judges::Packs.new(d, Loog::VERBOSE).each do |p|
|
39
|
+
Judges::Packs.new(d, nil, Loog::VERBOSE).each do |p|
|
40
40
|
assert_equal('foo.rb', p.script)
|
41
41
|
found += 1
|
42
42
|
assert_equal('something.yml', File.basename(p.tests.first))
|
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.0.
|
4
|
+
version: 0.0.24
|
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-05-
|
11
|
+
date: 2024-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: backtrace
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.
|
33
|
+
version: 0.0.22
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.
|
40
|
+
version: 0.0.22
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: gli
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,10 +111,15 @@ files:
|
|
111
111
|
- README.md
|
112
112
|
- Rakefile
|
113
113
|
- bin/judges
|
114
|
-
- features/cli.feature
|
115
114
|
- features/gem_package.feature
|
115
|
+
- features/inspect.feature
|
116
|
+
- features/misc.feature
|
117
|
+
- features/print.feature
|
116
118
|
- features/step_definitions/steps.rb
|
117
119
|
- features/support/env.rb
|
120
|
+
- features/test.feature
|
121
|
+
- features/trim.feature
|
122
|
+
- features/update.feature
|
118
123
|
- fixtures/reward_for_good_bug/README.md
|
119
124
|
- fixtures/reward_for_good_bug/no-reward.yml
|
120
125
|
- fixtures/reward_for_good_bug/reward_it.rb
|
data/features/cli.feature
DELETED
@@ -1,79 +0,0 @@
|
|
1
|
-
Feature: Simple Run
|
2
|
-
I want to run a few judges over a factbase
|
3
|
-
|
4
|
-
Scenario: Help can be printed
|
5
|
-
When I run bin/judges with "-h"
|
6
|
-
Then Exit code is zero
|
7
|
-
And Stdout contains "--help"
|
8
|
-
|
9
|
-
Scenario: Version can be printed
|
10
|
-
When I run bin/judges with "--version"
|
11
|
-
Then Exit code is zero
|
12
|
-
|
13
|
-
Scenario: Simple run of a few judges
|
14
|
-
Given I make a temp directory
|
15
|
-
Then I have a "simple/simple_judge.rb" file with content:
|
16
|
-
"""
|
17
|
-
n = $fb.insert
|
18
|
-
n.kind = 'yes!'
|
19
|
-
"""
|
20
|
-
Then I run bin/judges with "--verbose update --quiet -o foo=1 -o bar=2 --max-cycles 3 . simple.fb"
|
21
|
-
Then Stdout contains "foo → "
|
22
|
-
Then Stdout contains "bar → "
|
23
|
-
Then Stdout contains "1 judge(s) processed"
|
24
|
-
Then Stdout contains "Update finished in 3 cycles"
|
25
|
-
And Exit code is zero
|
26
|
-
|
27
|
-
Scenario: Simple test of a few judges
|
28
|
-
Given I run bin/judges with "test ./fixtures"
|
29
|
-
Then Stdout contains "👉 Testing"
|
30
|
-
Then Stdout contains "judge(s) tested successfully"
|
31
|
-
And Exit code is zero
|
32
|
-
|
33
|
-
Scenario: Simple test of just one pack
|
34
|
-
Given I run bin/judges with "test --pack reward_for_good_bug ./fixtures"
|
35
|
-
Then Stdout contains "judge(s) tested successfully"
|
36
|
-
And Exit code is zero
|
37
|
-
|
38
|
-
Scenario: Simple test of no packs
|
39
|
-
Given I run bin/judges with "test --pack absent_for_sure ./fixtures"
|
40
|
-
Then Exit code is not zero
|
41
|
-
|
42
|
-
Scenario: Simple trimming of a factbase
|
43
|
-
Given I make a temp directory
|
44
|
-
Then I have a "simple/simple_judge.rb" file with content:
|
45
|
-
"""
|
46
|
-
return if $fb.size > 2
|
47
|
-
$fb.insert.time = Time.now - 100 * 60 * 60 * 24
|
48
|
-
"""
|
49
|
-
Then I run bin/judges with "--verbose update . simple.fb"
|
50
|
-
Given I run bin/judges with "trim --days 5 simple.fb"
|
51
|
-
Then Stdout contains "3 facts deleted"
|
52
|
-
And Exit code is zero
|
53
|
-
|
54
|
-
Scenario: Simple print of a small factbase
|
55
|
-
Given I make a temp directory
|
56
|
-
Then I have a "simple/simple_judge.rb" file with content:
|
57
|
-
"""
|
58
|
-
return if $fb.size > 2
|
59
|
-
n = $fb.insert
|
60
|
-
n.kind = 'yes!'
|
61
|
-
"""
|
62
|
-
Then I run bin/judges with "update . simple.fb"
|
63
|
-
Then I run bin/judges with "print --format=yaml simple.fb simple.yml"
|
64
|
-
Then Stdout contains "printed"
|
65
|
-
And Exit code is zero
|
66
|
-
|
67
|
-
Scenario: Simple inspect of a small factbase
|
68
|
-
Given I make a temp directory
|
69
|
-
Then I have a "simple/simple_judge.rb" file with content:
|
70
|
-
"""
|
71
|
-
return if $fb.size > 2
|
72
|
-
n = $fb.insert
|
73
|
-
n.kind = 'yes!'
|
74
|
-
"""
|
75
|
-
Then I run bin/judges with "update . simple.fb"
|
76
|
-
Then I run bin/judges with "inspect simple.fb"
|
77
|
-
Then Stdout contains "Facts: 3"
|
78
|
-
And Exit code is zero
|
79
|
-
|