judges 0.57.0 → 0.57.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: 25236f211b356d3dfe62fd6ba9eb7eb70a04e2de64d2581d682db989967cefa9
4
- data.tar.gz: c804cf366c81db1834496d71852422dbb245edfc76f0a24511621a4aa7979ada
3
+ metadata.gz: 99e0f160f5dfa27ca34a0e3869bbc26d7f7ee4c7bb25beca1197e4e2dd462e68
4
+ data.tar.gz: 923b096bf564c2c2e03ae4ad1697df5c8b7331f211246fef0f2b1fffb28b8333
5
5
  SHA512:
6
- metadata.gz: 1c33f8ae0312222d0ae2ec848d031648fc5f04cb2a64d49e63a26176157a2d9e82bb2fa1f8e010aa0fe8a482fe16690145bdca92f367f05afa851687a18f09af
7
- data.tar.gz: 6bfafca7127eca496160d7b57325e92815ced1872da8f929380aa0fee185d5f3931cdf5eb753d39a3c68c9c19800a2cfa100b99da60288d9dbae33ccb9680309
6
+ metadata.gz: 9bae673902b779709eb86dbc939fc234baabc546a08b953a2e5f9c7006467ad5279c0bc59268c7b240d60da93f6e5aca28adbe3774748a8b08eaa2d499b8c7e7
7
+ data.tar.gz: 38fbbd8411637b54b6515e96599e91924a82ea63599315a9d166a26d6aeff4aa65c0be86eb09fb39b8ce4de2494c6bf09d7af9baa6abd97f4ba32c7da452468f
data/bin/judges CHANGED
@@ -27,6 +27,7 @@ class JudgesGLI extend GLI::App
27
27
  require_relative "../lib/judges/commands/#{ruby}"
28
28
  start = Time.now
29
29
  @@loog.debug("Running '#{ruby}' command...")
30
+ options = global.merge(options)
30
31
  begin
31
32
  Object.const_get("Judges::#{ruby.capitalize}").new(@@loog).run(options, args)
32
33
  @@loog.debug("Command '#{ruby}' completed in #{start.ago}")
@@ -18,6 +18,14 @@ Feature: Print
18
18
  Then Stdout contains "printed"
19
19
  And Exit code is zero
20
20
 
21
+ Scenario: Simple print of a small factbase, to HTML, in offline mode
22
+ Given I make a temp directory
23
+ Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
24
+ Then I run bin/judges with "--offline print --format=html simple.fb simple.html"
25
+ Then Stdout contains "printed"
26
+ Then simple.html contains "sha256-offline"
27
+ And Exit code is zero
28
+
21
29
  Scenario: Simple print of a small factbase, to JSON
22
30
  Given I make a temp directory
23
31
  Then I run bin/judges with "--verbose eval simple.fb '$fb.insert.foo = 42'"
@@ -56,6 +56,11 @@ When(/^I run bash with:$/) do |text|
56
56
  @exitstatus = $CHILD_STATUS.exitstatus
57
57
  end
58
58
 
59
+ Then(/^([a-z].+) contains "([^"]*)"$/) do |file, txt|
60
+ data = File.read(file)
61
+ raise "The file #{file} doesn't contain '#{txt}':\n#{data}" unless data.include?(txt)
62
+ end
63
+
59
64
  Then(/^Stdout contains "([^"]*)"$/) do |txt|
60
65
  raise "STDOUT doesn't contain '#{txt}':\n#{@stdout}" unless @stdout.include?(txt)
61
66
  end
@@ -62,7 +62,7 @@ Feature: Update
62
62
  n = $fb.insert
63
63
  n.type = 'second'
64
64
  """
65
- Then I run bin/judges with "--verbose update --quiet --lifetime 4 --timeout 3 --max-cycles 5 . simple.fb"
65
+ Then I run bin/judges with "--verbose update --quiet --lifetime 4 --timeout 3 --max-cycles 5 --shuffle 'first' . simple.fb"
66
66
  Then Stdout contains "Update completed in 2 cycle(s), did 3i/0d/3a"
67
67
  And Exit code is zero
68
68
 
@@ -248,7 +248,7 @@ Feature: Update
248
248
  """
249
249
  $fb.insert.name = 'beta'
250
250
  """
251
- Then I run bin/judges with "update --statistics --quiet --max-cycles 2 --lifetime 4 --timeout 3 . stats.fb"
251
+ Then I run bin/judges with "update --statistics --quiet --max-cycles 2 --lifetime 4 --timeout 3 --shuffle 'alpha' . stats.fb"
252
252
  Then Stdout contains "Judge execution summary:"
253
253
  Then Stdout contains "alpha"
254
254
  Then Stdout contains "beta"
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.57.0'
12
+ s.version = '0.57.1'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
data/lib/judges/judges.rb CHANGED
@@ -62,10 +62,10 @@ class Judges::Judges
62
62
  # This method discovers all judge directories, validates them (ensuring they contain
63
63
  # a corresponding .rb file), and yields them in a specific order. The order is
64
64
  # determined by:
65
- # 1. Judges whose names match the boost list are placed first
66
- # 2. Judges whose names start with the shuffle prefix are randomly reordered
65
+ # 1. Randomly reorder judges (if shuffle prefix is empty, shuffle all judges;
66
+ # if prefix is not empty, shuffle only those NOT starting with the prefix)
67
+ # 2. Judges whose names match the boost list are placed first
67
68
  # 3. Judges whose names match the demote list are placed last
68
- # 4. All other judges maintain their alphabetical order
69
69
  #
70
70
  # @yield [Judges::Judge] Yields each valid judge object
71
71
  # @return [Enumerator] Returns an enumerator if no block is given
@@ -84,7 +84,7 @@ class Judges::Judges
84
84
  good = all.dup
85
85
  mapping = all
86
86
  .map { |a| [a[0].name, a[1], a[1]] }
87
- .reject { |a| a[0].start_with?(@shuffle) }
87
+ .reject { |a| !@shuffle.empty? && a[0].start_with?(@shuffle) }
88
88
  .to_h { |a| [a[1], a[2]] }
89
89
  positions = mapping.values.shuffle
90
90
  mapping.keys.zip(positions).to_h.each do |before, after|
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.57.0' unless const_defined?(:VERSION)
11
+ VERSION = '0.57.1' unless const_defined?(:VERSION)
12
12
  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.57.0
4
+ version: 0.57.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko