judges 0.0.23 → 0.0.24
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
-
|