judges 0.0.18 → 0.0.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8399b8c8623c0d099deeb50055658e072bae333b0d851cd0aaef22f441655950
4
- data.tar.gz: c8ef8e75705e8d0cf3bdb8033c054f7ac4c239566bf0cb80b6a9cc0943932986
3
+ metadata.gz: 9e7ff33d6367a36af90626c45f6ba74195f2e5383bf5f6f30c2888e5ba02eb07
4
+ data.tar.gz: b8032fc55743542a488d478cb4eb4dab78b979c2aec60ad6fbbeca3c53eceb5f
5
5
  SHA512:
6
- metadata.gz: 7a187a9441700826cf7b539ed264a7d80e5e749169219c62d717cee1451cd77e78f5e9a130617dd2e589ad0c13d504e27482527db2dc6b80da12561ff8d1e3e4
7
- data.tar.gz: 38c5ae3b4af2981b56d9069a794d791ea107cfae27421f12dce9b001a8ff1d60f38c972362fbd659c4e53f750b35a6192ff66b4869280510286c3d585073d0ae
6
+ metadata.gz: 02cb9fee069f3ed10bfad753df016b20b2e1736a66ad9ab633e309f5ae99d5e8445d92f4e909ac826bf95f6cf8b73f3eb2e07968cd38129738e918dcd8f972aa
7
+ data.tar.gz: a097276735f3a2f5226061f807c82cb97920aa3ad27e660dc9d7328489dab28692dd0a772a8529a078ffdcc175a145a059b1441206e9f8d9378751ed9b9e3b1c
data/bin/judges CHANGED
@@ -29,7 +29,7 @@ require 'factbase'
29
29
  Encoding.default_external = Encoding::UTF_8
30
30
  Encoding.default_internal = Encoding::UTF_8
31
31
 
32
- ver = '0.0.18'
32
+ ver = '0.0.20'
33
33
 
34
34
  include GLI::App
35
35
 
@@ -59,7 +59,7 @@ command :update do |c|
59
59
  c.desc 'Options to pass to every judge'
60
60
  c.flag([:o, :option], multiple: true, arg_name: '<key=value>')
61
61
  c.desc 'Maximum number of update cycles to run'
62
- c.flag([:'max-cycles'], default_value: 8)
62
+ c.flag([:'max-cycles'], default_value: 8, type: Integer)
63
63
  c.action do |global, options, args|
64
64
  require_relative '../lib/judges/commands/update'
65
65
  Judges::Update.new(loog).run(options, args)
data/features/cli.feature CHANGED
@@ -14,15 +14,14 @@ Feature: Simple Run
14
14
  Given I make a temp directory
15
15
  Then I have a "simple/simple_judge.rb" file with content:
16
16
  """
17
- $fb.query("(eq kind 'foo')").each do |f|
18
- n = $fb.insert
19
- n.kind = 'yes!'
20
- end
17
+ n = $fb.insert
18
+ n.kind = 'yes!'
21
19
  """
22
- Then I run bin/judges with "--verbose update -o foo=1 -o bar=2 --max-cycles 2 . simple.fb"
20
+ Then I run bin/judges with "--verbose update -o foo=1 -o bar=2 --max-cycles 3 . simple.fb"
23
21
  Then Stdout contains "foo → "
24
22
  Then Stdout contains "bar → "
25
23
  Then Stdout contains "1 judges processed"
24
+ Then Stdout contains "Update finished in 3 cycles"
26
25
  And Exit code is zero
27
26
 
28
27
  Scenario: Simple test of a few judges
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.18'
29
+ s.version = '0.0.20'
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.16'
45
+ s.add_runtime_dependency 'factbase', '~>0.0.17'
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'
@@ -23,6 +23,7 @@
23
23
  require 'nokogiri'
24
24
  require 'factbase'
25
25
  require 'backtrace'
26
+ require 'factbase/looged'
26
27
  require_relative '../../judges'
27
28
  require_relative '../../judges/to_rel'
28
29
  require_relative '../../judges/packs'
@@ -89,7 +90,7 @@ class Judges::Test
89
90
  end
90
91
  end
91
92
  end
92
- pack.run(fb, Judges::Options.new(yaml['options']))
93
+ pack.run(Factbase::Looged.new(fb, @loog), Judges::Options.new(yaml['options']))
93
94
  xml = Nokogiri::XML.parse(fb.to_xml)
94
95
  yaml['expected'].each do |xp|
95
96
  raise "#{pack.script} doesn't match '#{xp}':\n#{xml}" if xml.xpath(xp).empty?
@@ -21,6 +21,7 @@
21
21
  # SOFTWARE.
22
22
 
23
23
  require 'backtrace'
24
+ require 'factbase/looged'
24
25
  require_relative '../../judges'
25
26
  require_relative '../../judges/to_rel'
26
27
  require_relative '../../judges/packs'
@@ -42,18 +43,19 @@ class Judges::Update
42
43
  raise "The directory is absent: #{dir.to_rel}" unless File.exist?(dir)
43
44
  impex = Judges::Impex.new(@loog, args[1])
44
45
  fb = impex.import(strict: false)
46
+ fb = Factbase::Looged.new(fb, @loog)
45
47
  options = Judges::Options.new(opts['option'])
46
48
  @loog.debug("The following options provided:\n\t#{options.to_s.gsub("\n", "\n\t")}")
47
49
  packs = Judges::Packs.new(dir, @loog)
48
50
  c = 0
49
51
  loop do
52
+ c += 1
50
53
  diff = cycle(packs, fb, impex, options)
51
54
  break if diff.zero?
52
- if !opts['max-cycles'].nil? && c > opts['max-cycles']
55
+ if !opts['max-cycles'].nil? && c >= opts['max-cycles']
53
56
  @loog.info('Too many cycles already, as set by --max-cycles, breaking')
54
57
  break
55
58
  end
56
- c += 1
57
59
  @loog.info("#{diff} modifications at the cycle ##{c}")
58
60
  end
59
61
  @loog.info("Update finished in #{c} cycles")
@@ -65,7 +67,7 @@ class Judges::Update
65
67
  errors = []
66
68
  diff = 0
67
69
  done = packs.each_with_index do |p, i|
68
- @loog.info("Running #{p.dir.to_rel} (##{i})...")
70
+ @loog.info("👍 Running #{p.name} (##{i}) at #{p.dir.to_rel}...")
69
71
  before = fb.size
70
72
  begin
71
73
  p.run(fb, options)
@@ -27,7 +27,7 @@ def if_absent(fb)
27
27
  attrs = {}
28
28
  f = Judges::Accumulator.new(attrs)
29
29
  yield f
30
- q = attrs.map { |k, v| "(eq #{k} #{v})" }.join(' ')
30
+ q = attrs.map { |k, v| "(eq #{k} '#{v}')" }.join(' ')
31
31
  return unless fb.query("(and #{q})").each.to_a.empty?
32
32
  n = fb.insert
33
33
  attrs.each { |k, v| n.send("#{k}=", v) }
@@ -49,8 +49,8 @@ class TestUpdate < Minitest::Test
49
49
  fb = Factbase.new
50
50
  fb.insert.foo_bar = 42
51
51
  File.binwrite(file, fb.export)
52
- File.write(File.join(d, 'foo.rb'), 'return if $fb.size > 2; $fb.insert.tt = 4')
53
- Judges::Update.new(Loog::VERBOSE).run({}, [d, file])
52
+ File.write(File.join(d, 'foo.rb'), '$fb.insert.tt = 4')
53
+ Judges::Update.new(Loog::VERBOSE).run({ 'max-cycles' => 1 }, [d, file])
54
54
  fb = Factbase.new
55
55
  fb.import(File.binread(file))
56
56
  xml = Nokogiri::XML.parse(fb.to_xml)
@@ -33,9 +33,9 @@ require_relative '../../lib/judges/fb/if_absent'
33
33
  class TestIfAbsent < Minitest::Test
34
34
  def test_ignores
35
35
  fb = Factbase.new
36
- fb.insert.foo = 42
36
+ fb.insert.foo = 'hello dude'
37
37
  n = if_absent(fb) do |f|
38
- f.foo = 42
38
+ f.foo = 'hello dude'
39
39
  end
40
40
  assert(n.nil?)
41
41
  end
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.0.18
4
+ version: 0.0.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.0.16
33
+ version: 0.0.17
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.16
40
+ version: 0.0.17
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: gli
43
43
  requirement: !ruby/object:Gem::Requirement