judges 0.36.5 → 0.37.0

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: b8fb6236ff7176ef9587fa12c801217ecde50193354b6abec5ec383387fe5f05
4
- data.tar.gz: b5abaa5302de7c98c834de869bee7c9fd092d376aaa786bced04d23005a69328
3
+ metadata.gz: f31e0e559fe2bcf694b1e062e12c52fff8743bdf7d3ed2b8c2f255ccc930f4ad
4
+ data.tar.gz: e92dc454e97dcfc4959377e0d74dc144d2a154bfb7baf1e0de954fb498171151
5
5
  SHA512:
6
- metadata.gz: c1e4ce296d9d0ff6ab033cb5fd2b9f428e1bbeea43c9f562cbe14cf90b0beff3552019d9b52fe1a46ac99a601a4d49f12fb657c61ac39f9f75242b361ba887be
7
- data.tar.gz: aeb84d21034cb69ce9691f629b2977addac8b97ed1dea9e387dc904ccba309fcad23a55d83ce109eb023944300053fe625ff5895d5dcada91dd5f9ecc2f1ec01
6
+ metadata.gz: d4176c791c84c596976a320a5b8bd494e101ddfc48421e28a9059a847ef5210db0c6c98ec1d40991eec0c710932c3f10fc59a7dd913c0306cdc374b49737b7d8
7
+ data.tar.gz: 6a64089d456705f4e72cb87e56b6e5fcf451edd0c5f5bdb0b79de6d4239979352c8ee11d2c7de935175732c19a882116a2590c841a7a30679afce389aa4be33e
data/Rakefile CHANGED
@@ -20,7 +20,7 @@ end
20
20
 
21
21
  ENV['RACK_ENV'] = 'test'
22
22
 
23
- task default: %i[clean test picks reqs features rubocop yard]
23
+ task default: %i[clean test features picks reqs rubocop yard]
24
24
 
25
25
  require 'rake/testtask'
26
26
  desc 'Run all unit tests'
data/bin/judges CHANGED
@@ -71,8 +71,10 @@ class JudgesGLI extend GLI::App
71
71
  c.flag([:judge], multiple: true)
72
72
  c.desc 'The location of a Ruby library (directory with .rb files to include)'
73
73
  c.flag([:lib])
74
+ c.desc 'Maximum time in seconds to spend on the entire update cycle'
75
+ c.flag([:lifetime], default_value: 300, type: Integer)
74
76
  c.desc 'Maximum time in seconds to spend on every judge (forcefully terminate if over time)'
75
- c.flag([:'timeout'], default_value: 30, type: Integer)
77
+ c.flag([:timeout], default_value: 30, type: Integer)
76
78
  c.desc 'Maximum number of update cycles to run'
77
79
  c.flag([:'max-cycles'], default_value: 8, type: Integer)
78
80
  c.desc 'Stay quiet even if some judges fail'
@@ -18,6 +18,18 @@ Feature: Update
18
18
  Then Stdout contains "Update finished in 3 cycle(s), did 3i/0d/3a"
19
19
  And Exit code is zero
20
20
 
21
+ Scenario: Skips the judge on lifetime running out
22
+ Given I make a temp directory
23
+ Then I have a "simple/simple.rb" file with content:
24
+ """
25
+ n = $fb.insert
26
+ sleep 1
27
+ """
28
+ Then I run bin/judges with "--verbose update --quiet --lifetime 1 --max-cycles 5 . simple.fb"
29
+ Then Stdout contains "The 'simple' judge skipped, no time left"
30
+ Then Stdout contains "Update finished in 2 cycle(s), did 1i/0d/0a"
31
+ And Exit code is zero
32
+
21
33
  Scenario: Use options from a file
22
34
  Given I make a temp directory
23
35
  Then I have a "simple/simple.rb" file with content:
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.36.5'
12
+ s.version = '0.37.0'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
@@ -26,6 +26,7 @@ require_relative '../../judges/to_rel'
26
26
  class Judges::Update
27
27
  def initialize(loog)
28
28
  @loog = loog
29
+ @start = Time.now
29
30
  end
30
31
 
31
32
  # Run it (it is supposed to be called by the +bin/judges+ script.
@@ -148,6 +149,9 @@ class Judges::Update
148
149
  def one_judge(opts, fb, judge, global, options, errors)
149
150
  local = {}
150
151
  begin
152
+ if opts['lifetime'] && Time.now - @start > opts['lifetime']
153
+ throw :"👎 The '#{judge.name}' judge skipped, no time left"
154
+ end
151
155
  Timeout.timeout(opts['timeout']) do
152
156
  judge.run(fb, global, local, options)
153
157
  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.36.5' unless const_defined?(:VERSION)
11
+ VERSION = '0.37.0' unless const_defined?(:VERSION)
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.36.5
4
+ version: 0.37.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-03-18 00:00:00.000000000 Z
10
+ date: 2025-03-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: backtrace