judges 0.23.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8e8b3c462c8c85767f611787af11de8c7966829c43866c31bab6626101e9762
4
- data.tar.gz: 0c87fba4ce9a6f8c79149acecc07b3036804e2b51941fef4bf676ef1c2c79ef5
3
+ metadata.gz: 864078e89f5d4c966698d554864af0c76867423811bd8e8888c935873cf2040e
4
+ data.tar.gz: 28ba277b76e781eee992fd0eb49af944576329d9d761bc40a496e97dcbece222
5
5
  SHA512:
6
- metadata.gz: 217b87a1d9154652a255377e1a8919e1841895aa6d3b86c1f2e24eb66cda198a931ad3fb91062962234bea707c0af90ceaf7c1da6eccd6cbc4af37de33f67379
7
- data.tar.gz: f0dfac8980ba3588b52f0aa38175bba961b7f786d1d567878e394e901b644edeef99446ebab1e41af8ce3e29d49ff4e7727c1e017b35fba6e05e821735cb20c2
6
+ metadata.gz: abd995369192cce4656db009c16126908d3246387a405726027a47d2bab09f8e9f4edbb8f66f44c0593b9db8ad8b8da05b1e489fc8310785f7100932807a7949
7
+ data.tar.gz: 4156be82ef0bf1d1061efa41054f21dbab4c2114eeb356da6e0a54b530a9745a0246c942e0139e179485d442bdbbf544db150bc65c0d1ccda12ef8a60720680d
data/Gemfile.lock CHANGED
@@ -19,39 +19,41 @@ PATH
19
19
  GEM
20
20
  remote: https://rubygems.org/
21
21
  specs:
22
- actionpack (7.1.3.4)
23
- actionview (= 7.1.3.4)
24
- activesupport (= 7.1.3.4)
22
+ actionpack (7.2.0)
23
+ actionview (= 7.2.0)
24
+ activesupport (= 7.2.0)
25
25
  nokogiri (>= 1.8.5)
26
26
  racc
27
- rack (>= 2.2.4)
27
+ rack (>= 2.2.4, < 3.2)
28
28
  rack-session (>= 1.0.1)
29
29
  rack-test (>= 0.6.3)
30
30
  rails-dom-testing (~> 2.2)
31
31
  rails-html-sanitizer (~> 1.6)
32
- actionview (7.1.3.4)
33
- activesupport (= 7.1.3.4)
32
+ useragent (~> 0.16)
33
+ actionview (7.2.0)
34
+ activesupport (= 7.2.0)
34
35
  builder (~> 3.1)
35
36
  erubi (~> 1.11)
36
37
  rails-dom-testing (~> 2.2)
37
38
  rails-html-sanitizer (~> 1.6)
38
- activesupport (7.1.3.4)
39
+ activesupport (7.2.0)
39
40
  base64
40
41
  bigdecimal
41
- concurrent-ruby (~> 1.0, >= 1.0.2)
42
+ concurrent-ruby (~> 1.0, >= 1.3.1)
42
43
  connection_pool (>= 2.2.5)
43
44
  drb
44
45
  i18n (>= 1.6, < 2)
46
+ logger (>= 1.4.2)
45
47
  minitest (>= 5.1)
46
- mutex_m
47
- tzinfo (~> 2.0)
48
+ securerandom (>= 0.3)
49
+ tzinfo (~> 2.0, >= 2.0.5)
48
50
  addressable (2.8.7)
49
51
  public_suffix (>= 2.0.2, < 7.0)
50
52
  ansi (1.5.0)
51
53
  ast (2.4.2)
52
54
  backtrace (0.4.0)
53
55
  base64 (0.2.0)
54
- baza.rb (0.0.1)
56
+ baza.rb (0.0.4)
55
57
  backtrace (> 0)
56
58
  faraday (> 0)
57
59
  faraday-http-cache (> 0)
@@ -60,10 +62,11 @@ GEM
60
62
  iri (> 0)
61
63
  loog (> 0)
62
64
  retries (~> 0)
65
+ tago (~> 0)
63
66
  typhoeus (~> 1.3)
64
67
  bigdecimal (3.1.8)
65
68
  builder (3.3.0)
66
- concurrent-ruby (1.3.3)
69
+ concurrent-ruby (1.3.4)
67
70
  connection_pool (2.4.1)
68
71
  crack (1.0.0)
69
72
  bigdecimal
@@ -154,7 +157,6 @@ GEM
154
157
  moments (0.3.0)
155
158
  multi_test (1.1.0)
156
159
  multipart-post (2.4.1)
157
- mutex_m (0.2.0)
158
160
  net-http (0.4.1)
159
161
  uri
160
162
  net-ping (2.0.8)
@@ -173,7 +175,7 @@ GEM
173
175
  nokogiri (1.16.7-x86_64-linux)
174
176
  racc (~> 1.4)
175
177
  others (0.0.3)
176
- parallel (1.26.1)
178
+ parallel (1.26.2)
177
179
  parser (3.3.4.2)
178
180
  ast (~> 2.4.1)
179
181
  racc
@@ -196,10 +198,10 @@ GEM
196
198
  rails-html-sanitizer (1.6.0)
197
199
  loofah (~> 2.21)
198
200
  nokogiri (~> 1.14)
199
- railties (7.1.3.4)
200
- actionpack (= 7.1.3.4)
201
- activesupport (= 7.1.3.4)
202
- irb
201
+ railties (7.2.0)
202
+ actionpack (= 7.2.0)
203
+ activesupport (= 7.2.0)
204
+ irb (~> 1.13)
203
205
  rackup (>= 1.0.0)
204
206
  rake (>= 12.2)
205
207
  thor (~> 1.0, >= 1.2.2)
@@ -213,7 +215,7 @@ GEM
213
215
  reline (0.5.9)
214
216
  io-console (~> 0.5)
215
217
  retries (0.0.5)
216
- rexml (3.3.4)
218
+ rexml (3.3.5)
217
219
  strscan
218
220
  rspec-core (3.13.0)
219
221
  rspec-support (~> 3.13.0)
@@ -251,6 +253,7 @@ GEM
251
253
  rubocop-rspec (3.0.4)
252
254
  rubocop (~> 1.61)
253
255
  ruby-progressbar (1.13.0)
256
+ securerandom (0.3.1)
254
257
  simplecov (0.22.0)
255
258
  docile (~> 1.1)
256
259
  simplecov-html (~> 0.11)
@@ -272,6 +275,7 @@ GEM
272
275
  concurrent-ruby (~> 1.0)
273
276
  unicode-display_width (2.5.0)
274
277
  uri (0.13.0)
278
+ useragent (0.16.10)
275
279
  webmock (3.23.1)
276
280
  addressable (>= 2.8.0)
277
281
  crack (>= 0.3.2)
data/README.md CHANGED
@@ -48,6 +48,8 @@ options:
48
48
  max: 100
49
49
  expected:
50
50
  - /fb[count(f)=1]
51
+ expected_failure:
52
+ - 'file not found'
51
53
  after:
52
54
  - first.rb
53
55
  - second.rb
@@ -72,6 +74,9 @@ The `after` (default: `[]`) is a list of relative file names
72
74
  of Ruby scripts that are executed after the judge
73
75
  (`$fb` and `$loog` are passed into them).
74
76
 
77
+ The `expected_failure (default: `[]`) is a list of strings that must
78
+ be present in the message of the exception being raised.
79
+
75
80
  ## How to contribute
76
81
 
77
82
  Read
data/assets/index.xsl CHANGED
@@ -162,13 +162,13 @@ SOFTWARE.
162
162
  <xsl:param name="cols"/>
163
163
  <xsl:choose>
164
164
  <xsl:when test="string-length($cols) &gt; 0">
165
- <col style="width: 10em;"/>
165
+ <col style=""/>
166
166
  <xsl:call-template name="col">
167
167
  <xsl:with-param name="cols" select="substring-after($cols, ',')"/>
168
168
  </xsl:call-template>
169
169
  </xsl:when>
170
170
  <xsl:otherwise>
171
- <col style=""/>
171
+ <col style="width: 50%;"/>
172
172
  </xsl:otherwise>
173
173
  </xsl:choose>
174
174
  </xsl:template>
data/bin/judges CHANGED
@@ -118,7 +118,7 @@ class JudgesGLI extend GLI::App
118
118
  c.desc 'Comma separated list of columns to show in HTML output (no spaces!)'
119
119
  c.flag([:columns], default_value: 'when,what')
120
120
  c.desc 'Comma separated list of hidden columns, not to be rendered (no spaces!)'
121
- c.flag([:hidden], default_value: '_id,_time,_version')
121
+ c.flag([:hidden], default_value: '_id,_time,_version,_job')
122
122
  c.desc 'Print even if target file already exists and is older than the factbase'
123
123
  c.switch([:force], default_value: false)
124
124
  run_it(c, 'print')
@@ -163,3 +163,18 @@ Feature: Test
163
163
  """
164
164
  Then I run bin/judges with "test mine"
165
165
  And Exit code is zero
166
+
167
+ Scenario: Test with exception
168
+ Given I make a temp directory
169
+ Then I have a "mine/foo/foo.rb" file with content:
170
+ """
171
+ raise 'this is a joke'
172
+ """
173
+ Then I have a "mine/foo/simple.yml" file with content:
174
+ """
175
+ ---
176
+ expected_failure:
177
+ - a joke
178
+ """
179
+ Then I run bin/judges with "test mine"
180
+ And Exit code is zero
data/judges.gemspec CHANGED
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
  s.required_rubygems_version = Gem::Requirement.new('>= 0') if s.respond_to? :required_rubygems_version=
27
27
  s.required_ruby_version = '>=3.2'
28
28
  s.name = 'judges'
29
- s.version = '0.23.0'
29
+ s.version = '0.25.0'
30
30
  s.license = 'MIT'
31
31
  s.summary = 'Command-Line Tool for a Factbase'
32
32
  s.description =
@@ -95,7 +95,7 @@ class Judges::Print
95
95
  'title' => opts['title'],
96
96
  'date' => Time.now.utc.iso8601,
97
97
  'columns' => opts['columns'] || 'when,what,who',
98
- 'hidden' => opts['hidden'] || '_id,_version,_time',
98
+ 'hidden' => opts['hidden'] || '_id,_version,_time,_job',
99
99
  'version' => Judges::VERSION
100
100
  )
101
101
  )
@@ -22,7 +22,7 @@
22
22
 
23
23
  require 'typhoeus'
24
24
  require 'iri'
25
- require 'baza'
25
+ require 'baza-rb'
26
26
  require_relative '../../judges'
27
27
  require_relative '../../judges/impex'
28
28
 
@@ -42,7 +42,7 @@ class Judges::Pull
42
42
  def run(opts, args)
43
43
  raise 'Exactly two arguments required' unless args.size == 2
44
44
  fb = Factbase.new
45
- baza = Baza.new(
45
+ baza = BazaRb.new(
46
46
  opts['host'], opts['port'].to_i, opts['token'],
47
47
  ssl: opts['ssl'],
48
48
  timeout: (opts['timeout'] || 30).to_i,
@@ -22,7 +22,7 @@
22
22
 
23
23
  require 'typhoeus'
24
24
  require 'iri'
25
- require 'baza'
25
+ require 'baza-rb'
26
26
  require_relative '../../judges'
27
27
  require_relative '../../judges/impex'
28
28
 
@@ -43,7 +43,7 @@ class Judges::Push
43
43
  raise 'Exactly two arguments required' unless args.size == 2
44
44
  name = args[0]
45
45
  fb = Judges::Impex.new(@loog, args[1]).import
46
- baza = Baza.new(
46
+ baza = BazaRb.new(
47
47
  opts['host'], opts['port'].to_i, opts['token'],
48
48
  ssl: opts['ssl'],
49
49
  timeout: (opts['timeout'] || 30).to_i,
@@ -146,7 +146,18 @@ class Judges::Test
146
146
  (1..runs).each do |r|
147
147
  fbx = fb
148
148
  fbx = Factbase::Looged.new(fb, @loog) if opts['log']
149
- judge.run(fbx, {}, {}, options)
149
+ expected_failure = yaml['expected_failure']
150
+ begin
151
+ judge.run(fbx, {}, {}, options)
152
+ raise 'Exception expected but not raised' if expected_failure
153
+ # rubocop:disable Lint/RescueException
154
+ rescue Exception => e
155
+ # rubocop:enable Lint/RescueException
156
+ raise e unless expected_failure
157
+ if expected_failure.is_a?(Array) && expected_failure.none? { |s| e.message.include?(s) }
158
+ raise "Exception #{e.class} raised with #{e.message.inspect}, but this is not what was expected"
159
+ end
160
+ end
150
161
  next unless assert
151
162
  assert(judge, tname, fb, yaml) if r == runs || opts['assert_once'].is_a?(FalseClass)
152
163
  end
data/lib/judges.rb CHANGED
@@ -25,5 +25,5 @@
25
25
  # Copyright:: Copyright (c) 2024 Yegor Bugayenko
26
26
  # License:: MIT
27
27
  module Judges
28
- VERSION = '0.23.0'
28
+ VERSION = '0.25.0'
29
29
  end
@@ -24,6 +24,7 @@ require 'minitest/autorun'
24
24
  require 'loog'
25
25
  require 'nokogiri'
26
26
  require 'factbase/to_xml'
27
+ require_relative '../test__helper'
27
28
  require_relative '../../lib/judges'
28
29
  require_relative '../../lib/judges/commands/eval'
29
30
 
@@ -24,6 +24,7 @@ require 'minitest/autorun'
24
24
  require 'loog'
25
25
  require 'nokogiri'
26
26
  require 'factbase/to_xml'
27
+ require_relative '../test__helper'
27
28
  require_relative '../../lib/judges'
28
29
  require_relative '../../lib/judges/commands/import'
29
30
 
@@ -22,6 +22,7 @@
22
22
 
23
23
  require 'minitest/autorun'
24
24
  require 'loog'
25
+ require_relative '../test__helper'
25
26
  require_relative '../../lib/judges'
26
27
  require_relative '../../lib/judges/commands/test'
27
28
 
@@ -143,4 +144,33 @@ class TestTest < Minitest::Test
143
144
  Judges::Test.new(Loog::NULL).run({}, [d])
144
145
  end
145
146
  end
147
+
148
+ def test_with_expected_failure
149
+ Dir.mktmpdir do |d|
150
+ save_it(File.join(d, 'foo/foo.rb'), 'raise "this is intentional";')
151
+ save_it(
152
+ File.join(d, 'foo/x.yml'),
153
+ <<-YAML
154
+ input: []
155
+ expected_failure:
156
+ - intentional
157
+ YAML
158
+ )
159
+ Judges::Test.new(Loog::NULL).run({}, [d])
160
+ end
161
+ end
162
+
163
+ def test_with_expected_failure_no_string
164
+ Dir.mktmpdir do |d|
165
+ save_it(File.join(d, 'foo/foo.rb'), 'raise "this is intentional";')
166
+ save_it(
167
+ File.join(d, 'foo/x.yml'),
168
+ <<-YAML
169
+ input: []
170
+ expected_failure: true
171
+ YAML
172
+ )
173
+ Judges::Test.new(Loog::VERBOSE).run({}, [d])
174
+ end
175
+ end
146
176
  end
@@ -24,6 +24,7 @@ require 'minitest/autorun'
24
24
  require 'loog'
25
25
  require 'nokogiri'
26
26
  require 'factbase/to_xml'
27
+ require_relative '../test__helper'
27
28
  require_relative '../../lib/judges'
28
29
  require_relative '../../lib/judges/commands/update'
29
30
 
data/test/test_judge.rb CHANGED
@@ -24,6 +24,7 @@ require 'minitest/autorun'
24
24
  require 'tmpdir'
25
25
  require 'loog'
26
26
  require 'factbase'
27
+ require_relative 'test__helper'
27
28
  require_relative '../lib/judges'
28
29
  require_relative '../lib/judges/judge'
29
30
 
@@ -105,4 +106,15 @@ class TestJudge < Minitest::Test
105
106
  end
106
107
  end
107
108
  end
109
+
110
+ def test_with_standard_error
111
+ assert_raises do
112
+ Dir.mktmpdir do |d|
113
+ dir = File.join(d, 'judges')
114
+ save_it(File.join(dir, "#{File.basename(d)}.rb"), 'raise "intentional"')
115
+ judge = Judges::Judge.new(dir, lib, Loog::NULL)
116
+ judge.run(Factbase.new, {}, {}, {})
117
+ end
118
+ end
119
+ end
108
120
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: judges
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.23.0
4
+ version: 0.25.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-09 00:00:00.000000000 Z
11
+ date: 2024-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: backtrace