judges 0.43.0 → 0.44.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: 9872185eca6e28654c9ee3395817985e8762408d022d961e189cbfcfab7c2ac8
4
- data.tar.gz: 0c83c8a61f2661a17f8473469920b7e7c493be4d30e8f2f1bca7f3afaf6e6049
3
+ metadata.gz: bc9d8bdc800247520e9f42a07f90143c7c3fcf505a4a993221d7aa8437b11611
4
+ data.tar.gz: 21d88232ebe5299cf672945ab83c702a3c942d984f233bd9f714fb2cdb846609
5
5
  SHA512:
6
- metadata.gz: 76d8a0e542efee6b6e444857b4e1dbe3ff40ddb482f3f109e1170a8f9281021d5ff1952ac74d53aad513aaf3e87441f39080ec6c6adda0300c06566d37b85b9c
7
- data.tar.gz: 6222dc327c05ee568395feb6c0b05ba37a5a152ac7d4d51b2be71b7be0262617ac82160491e13b90330729b10e6104e11fd3f50ce3ff8ea3ed47598057a4b9a5
6
+ metadata.gz: eb1ac7d1219d4f901c5856e8c2698c4e77eaf5a3b0f8f0658bc94e1304f5597b3cada4a9c1ba85660bbaebd81a2e03cea58a92b7ba8e1a2c820e3403ea269a60
7
+ data.tar.gz: a9937c3f3d031d3d2c6e1265d8ccc2bf0365ffcda171d539bdf03a22d68d6a3d887a6010beb876c17fd1f2a31cd38d06d0e7473861bc3e6cb2a21b62857041a3
data/Gemfile.lock CHANGED
@@ -179,7 +179,7 @@ GEM
179
179
  regexp_parser (2.10.0)
180
180
  retries (0.0.5)
181
181
  rexml (3.4.1)
182
- rubocop (1.75.6)
182
+ rubocop (1.75.7)
183
183
  json (~> 2.3)
184
184
  language_server-protocol (~> 3.17.0.2)
185
185
  lint_roller (~> 1.1.0)
data/bin/judges CHANGED
@@ -89,6 +89,8 @@ class JudgesGLI extend GLI::App
89
89
  c.switch([:summary], default_value: false)
90
90
  c.desc 'Use default logging facility'
91
91
  c.switch([:log], default_value: true)
92
+ c.desc 'Expect at least one judge to be used (fail if none are used)'
93
+ c.switch([:'expect-judges'], default_value: true)
92
94
  run_it(c, 'update')
93
95
  end
94
96
 
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.43.0'
12
+ s.version = '0.44.0'
13
13
  s.license = 'MIT'
14
14
  s.summary = 'Command-Line Tool for a Factbase'
15
15
  s.description =
@@ -145,6 +145,7 @@ class Judges::Update
145
145
  def cycle(opts, judges, fb, options, start, errors)
146
146
  churn = Factbase::Churn.new
147
147
  global = {}
148
+ used = 0
148
149
  elapsed(@loog, level: Logger::INFO) do
149
150
  done =
150
151
  judges.each_with_index do |judge, i|
@@ -154,6 +155,7 @@ class Judges::Update
154
155
  end
155
156
  next unless include?(opts, judge.name)
156
157
  @loog.info("\nšŸ‘‰ Running #{judge.name} (##{i}) at #{judge.dir.to_rel} (#{start.ago} already)...")
158
+ used += 1
157
159
  elapsed(@loog, level: Logger::INFO) do
158
160
  c = one_judge(opts, fb, judge, global, options, errors)
159
161
  churn += c
@@ -166,6 +168,10 @@ class Judges::Update
166
168
  throw :"šŸ‘ #{done} judge(s) processed" if errors.empty?
167
169
  throw :"āŒ #{done} judge(s) processed with #{errors.size} errors"
168
170
  end
171
+ if used.zero?
172
+ raise 'No judges were used, while at least one expected to run' if opts['expect-judges']
173
+ @loog.info('No judges were used (looks like an error); not failing because of --no-expect-judges')
174
+ end
169
175
  unless errors.empty?
170
176
  raise "Failed to update correctly (#{errors.size} errors)" unless opts['quiet']
171
177
  @loog.info('Not failing because of the --quiet flag provided')
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.43.0' unless const_defined?(:VERSION)
11
+ VERSION = '0.44.0' unless const_defined?(:VERSION)
12
12
  end
@@ -156,4 +156,40 @@ class TestUpdate < Minitest::Test
156
156
  assert_equal(0, fb.size)
157
157
  end
158
158
  end
159
+
160
+ def test_fails_when_no_judges_used
161
+ assert_raises(StandardError) do
162
+ Dir.mktmpdir do |d|
163
+ save_it(File.join(d, 'foo/foo.rb'), '$fb.insert')
164
+ file = File.join(d, 'base.fb')
165
+ Judges::Update.new(Loog::NULL).run({ 'judge' => ['nonexistent'], 'expect-judges' => true }, [d, file])
166
+ end
167
+ end
168
+ end
169
+
170
+ def test_fails_when_empty_directory
171
+ assert_raises(StandardError) do
172
+ Dir.mktmpdir do |d|
173
+ file = File.join(d, 'base.fb')
174
+ Judges::Update.new(Loog::NULL).run({ 'expect-judges' => true }, [d, file])
175
+ end
176
+ end
177
+ end
178
+
179
+ def test_no_failure_when_expect_judges_false
180
+ Dir.mktmpdir do |d|
181
+ file = File.join(d, 'base.fb')
182
+ Judges::Update.new(Loog::NULL).run({ 'expect-judges' => false }, [d, file])
183
+ assert_path_exists(file)
184
+ end
185
+ end
186
+
187
+ def test_no_failure_with_nonexistent_judge_when_expect_judges_false
188
+ Dir.mktmpdir do |d|
189
+ save_it(File.join(d, 'foo/foo.rb'), '$fb.insert')
190
+ file = File.join(d, 'base.fb')
191
+ Judges::Update.new(Loog::NULL).run({ 'judge' => ['nonexistent'], 'expect-judges' => false }, [d, file])
192
+ assert_path_exists(file)
193
+ end
194
+ end
159
195
  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.43.0
4
+ version: 0.44.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko