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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c6ea5b0cb2d8ad5e54b8fe3dc642b389b9fbca98f9f4d28924ecd8d4c8f85fb4
4
- data.tar.gz: 35fba3154528724481be97f23bce59ff30761f100c6d056a6514a72c5f660b02
3
+ metadata.gz: 1fde75565aa4889287865d272f2ce95ae788b12bb7fdbf5ea8737d1c8124570d
4
+ data.tar.gz: ff4f2cc790568ab9c627be92224eb606f9ff91bea1e87a96e88a4fb1acfef4e0
5
5
  SHA512:
6
- metadata.gz: 402a83df023ef0428007ff704a910491c6ad382b1285bb376dc85cc127772be58cac9d60cb447a585556b5578cda3c9b36e15c09bb166063d24834be1e27ee8b
7
- data.tar.gz: e88e01844ae33059d03b030c893d5d3f8dbb2ed9e654c8a78f87c3da9c21cbebde989cffb43bee8944e82f08d6774cab85d428da8c694aba49b28860bcd41249
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.0)
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.4)
117
- backtrace (> 0)
118
- decoor (> 0)
117
+ factbase (0.7.5)
118
+ backtrace (>= 0.4.0)
119
+ decoor (>= 0.0.1)
119
120
  json (~> 2.7)
120
- loog (> 0)
121
+ loog (>= 0.6.0)
121
122
  nokogiri (~> 1.10)
122
- others (> 0)
123
- tago (> 0)
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 'factbase'
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
 
@@ -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
@@ -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 "timed out"
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.35.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.0'
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
@@ -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(_opts, args)
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
- $fb = Factbase::Looged.new($fb, @loog)
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(_opts, args)
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
- fb = Factbase::Looged.new(fb, @loog)
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|
@@ -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
- fbx = Factbase::Looged.new(fb, @loog) if opts['log']
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/to_rel'
12
+ require_relative '../../judges/impex'
14
13
  require_relative '../../judges/judges'
15
14
  require_relative '../../judges/options'
16
- require_relative '../../judges/impex'
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
- fb = Factbase::Looged.new(fb, @loog) if opts['log']
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
@@ -8,5 +8,5 @@
8
8
  # Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
9
9
  # License:: MIT
10
10
  module Judges
11
- VERSION = '0.35.0'
11
+ VERSION = '0.36.1'
12
12
  end
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.35.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-03 00:00:00.000000000 Z
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.0
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.0
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