judges 0.53.3 → 0.53.5

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: 30206b0fdcdc39f9e4fcbb9aa44cc6377aa63d707600c912813e39dbcc08649f
4
- data.tar.gz: a90eb5d5bd333faf95484e7f6c114422831245c17175a05c0f82a2ed33caf896
3
+ metadata.gz: f152f075843dc70ce7f7d330929e00deaa62568010abf93e88587f354c0b5e1d
4
+ data.tar.gz: 5b0ea64b89a90c6c61ff33269d8d02463dc68fbd213b7c9a705fe0c3da343acb
5
5
  SHA512:
6
- metadata.gz: f52536f181c8172e6a869c8ce0dfb01b30f62fe31d64c9bfaf775d7bc47bd5e57b8efd7808afd8641e2f888b8447e3899181b5ca2c54aff4c9314345de31afb1
7
- data.tar.gz: b51aa8226d7494c97521392fd6e1b2aac6bbb8b60a762af72f0b0ec93d09827e29a36a39ba8a166facba7a047704706576582a0b53fdcfe701671037491958a6
6
+ metadata.gz: d863b3f4c3217dd1f8b6735dc078274c4ccbdd60c8378b574662f0454de061a41951f6a746af0b4352f799163ea609acef9f0cc3d5d7b27b1e17fdab250aff4b
7
+ data.tar.gz: 304eb1828215462b070e9560e5d71d479c7e0f05124cbd0f9c936c7f274e531320513e7beae8de2d2570c6094f89c704dc175a073b3e4a3f6d2d2c13cee7e884
data/Gemfile.lock CHANGED
@@ -177,7 +177,7 @@ GEM
177
177
  tago (> 0)
178
178
  regexp_parser (2.11.2)
179
179
  retries (0.0.5)
180
- rexml (3.4.1)
180
+ rexml (3.4.2)
181
181
  rubocop (1.80.0)
182
182
  json (~> 2.3)
183
183
  language_server-protocol (~> 3.17.0.2)
@@ -208,7 +208,7 @@ GEM
208
208
  docile (~> 1.1)
209
209
  simplecov-html (~> 0.11)
210
210
  simplecov_json_formatter (~> 0.1)
211
- simplecov-cobertura (3.0.0)
211
+ simplecov-cobertura (3.1.0)
212
212
  rexml
213
213
  simplecov (~> 0.19)
214
214
  simplecov-html (0.13.2)
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.53.3'
12
+ s.version = '0.53.5'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
@@ -69,8 +69,15 @@ class Judges::Update
69
69
  start: @start, shuffle: opts['shuffle'], boost: opts['boost'],
70
70
  demote: opts['demote']
71
71
  )
72
- Timeout.timeout(opts['lifetime']) do
73
- loop_them(impex, judges, fb, opts, options)
72
+ begin
73
+ Timeout.timeout(opts['lifetime']) do
74
+ loop_them(impex, judges, fb, opts, options)
75
+ end
76
+ rescue Timeout::Error, Timeout::ExitException => e
77
+ raise e unless opts['quiet']
78
+ @loog.info("Had to stop due to the --lifetime=#{opts['lifetime']}")
79
+ ensure
80
+ impex.export(fb)
74
81
  end
75
82
  end
76
83
 
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.53.3' unless const_defined?(:VERSION)
11
+ VERSION = '0.53.5' unless const_defined?(:VERSION)
12
12
  end
@@ -39,6 +39,20 @@ class TestUpdate < Minitest::Test
39
39
  end
40
40
  end
41
41
 
42
+ def test_cancels_slow_execution
43
+ Dir.mktmpdir do |d|
44
+ 100.times do |i|
45
+ save_it(File.join(d, "foo-#{i}/foo-#{i}.rb"), '$fb.insert.foo = 0.05; sleep 2;')
46
+ end
47
+ file = File.join(d, 'base.fb')
48
+ Judges::Update.new(Loog::NULL).run({ 'lifetime' => 0.12, 'timeout' => 0.1, 'quiet' => true }, [d, file])
49
+ fb = Factbase.new
50
+ fb.import(File.binread(file))
51
+ xml = Nokogiri::XML.parse(Factbase::ToXML.new(fb).xml)
52
+ refute_empty(xml.xpath('/fb/f[foo]'), xml)
53
+ end
54
+ end
55
+
42
56
  def test_cancels_slow_judge
43
57
  Dir.mktmpdir do |d|
44
58
  save_it(File.join(d, 'foo/foo.rb'), 'sleep 10; $fb.insert.foo = 1')
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.53.3
4
+ version: 0.53.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko