baza.rb 0.5.1 → 0.6.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: 44a77b9084f7de4be77127285ca1b33ab3966a7d984b50c3c84dfaa72e98a36c
4
- data.tar.gz: 8d8e3368ff7ee202b794c88195842183b92982e4d816ba3a83a688a870bd9cda
3
+ metadata.gz: 055d08eba666af0bcadcea162c8b47ccbdd7b9ffc1647830999112a503ad8907
4
+ data.tar.gz: 966991989ab8c9fc2dba9f2c2498a38278a8d70195742266d452c34af33328fb
5
5
  SHA512:
6
- metadata.gz: 6f7f2c3dc38e59b28eb9cbc57099544f4762119eb66b2af45c5e2b17205e67121a5a96629a71b38d53b07517face93dce74b73bf270fc4d38fa0a69a5a4e5d2a
7
- data.tar.gz: be736e44829b1384a724e31f026d8e1f7568de5867da240c0c27feec74ab1eb2a8148f3657035a4fcf0ee39376774637a44e60238a48255ca56b179d06675cf8
6
+ metadata.gz: e699824b88910aa69f738e3329b62b9aece6b296f1e7aec9917b44044b32e14845f1700d774fb4386977fe64a03fcb5bd5e39c15ea4c40053d814a632b95d1ea
7
+ data.tar.gz: f462b2fcada287d6f6af5f6d11bad0651cfbad83b079957a43fcac92cf8947c479be776c73c8346281e82c78803782c44919d8c19ef38670db344435365b15b8
data/Gemfile CHANGED
@@ -6,21 +6,21 @@
6
6
  source 'https://rubygems.org'
7
7
  gemspec
8
8
 
9
- gem 'base64', '>0', require: false
10
- gem 'factbase', '>0', require: false
9
+ gem 'base64', '~>0.3', require: false
10
+ gem 'factbase', '~>0.11', require: false
11
11
  gem 'minitest', '~>5.25', require: false
12
12
  gem 'minitest-reporters', '~>1.7', require: false
13
- gem 'os', '>0', require: false
14
- gem 'qbash', '>0', require: false
13
+ gem 'os', '~>1.1', require: false
14
+ gem 'qbash', '~>0.4', require: false
15
15
  gem 'rake', '~>13.2', require: false
16
- gem 'random-port', '>0', require: false
16
+ gem 'random-port', '~>0.7', require: false
17
17
  gem 'rubocop', '~>1.73', require: false
18
- gem 'rubocop-minitest', '>0', require: false
18
+ gem 'rubocop-minitest', '~>0.38', require: false
19
19
  gem 'rubocop-performance', '~>1.23', require: false
20
- gem 'rubocop-rake', '>0', require: false
20
+ gem 'rubocop-rake', '~>0.7', require: false
21
21
  gem 'simplecov', '~>0.22', require: false
22
22
  gem 'simplecov-cobertura', '~>2.1', require: false
23
- gem 'wait_for', '~>0', require: false
23
+ gem 'wait_for', '~>0.1', require: false
24
24
  gem 'webmock', '~>3.24', require: false
25
25
  gem 'webrick', '~>1.9', require: false
26
26
  gem 'yard', '~>0.9', require: false
data/Gemfile.lock CHANGED
@@ -2,17 +2,17 @@ PATH
2
2
  remote: .
3
3
  specs:
4
4
  baza.rb (0.0.0)
5
- backtrace (> 0)
6
- elapsed (> 0)
7
- faraday (> 0)
8
- faraday-http-cache (> 0)
9
- faraday-multipart (> 0)
10
- faraday-retry (> 0)
11
- iri (> 0)
12
- loog (> 0)
13
- retries (~> 0)
14
- tago (~> 0)
15
- typhoeus (~> 1.3)
5
+ backtrace (~> 0.4)
6
+ elapsed (~> 0.0)
7
+ faraday (~> 2.13)
8
+ faraday-http-cache (~> 2.5)
9
+ faraday-multipart (~> 1.1)
10
+ faraday-retry (~> 2.3)
11
+ iri (~> 0.11)
12
+ loog (~> 0.6)
13
+ retries (~> 0.0)
14
+ tago (~> 0.0)
15
+ typhoeus (~> 1.4)
16
16
 
17
17
  GEM
18
18
  remote: https://rubygems.org/
@@ -21,9 +21,9 @@ GEM
21
21
  public_suffix (>= 2.0.2, < 7.0)
22
22
  ansi (1.5.0)
23
23
  ast (2.4.3)
24
- backtrace (0.4.0)
24
+ backtrace (0.4.1)
25
25
  base64 (0.3.0)
26
- bigdecimal (3.2.1)
26
+ bigdecimal (3.2.2)
27
27
  builder (3.3.0)
28
28
  crack (1.0.0)
29
29
  bigdecimal
@@ -35,7 +35,7 @@ GEM
35
35
  tago (> 0)
36
36
  ethon (0.16.0)
37
37
  ffi (>= 1.15.0)
38
- factbase (0.10.2)
38
+ factbase (0.11.0)
39
39
  backtrace (~> 0.4)
40
40
  decoor (~> 0.0)
41
41
  json (~> 2.7)
@@ -107,7 +107,7 @@ GEM
107
107
  regexp_parser (2.10.0)
108
108
  retries (0.0.5)
109
109
  rexml (3.4.1)
110
- rubocop (1.75.8)
110
+ rubocop (1.76.0)
111
111
  json (~> 2.3)
112
112
  language_server-protocol (~> 3.17.0.2)
113
113
  lint_roller (~> 1.1.0)
@@ -115,10 +115,10 @@ GEM
115
115
  parser (>= 3.3.0.2)
116
116
  rainbow (>= 2.2.2, < 4.0)
117
117
  regexp_parser (>= 2.9.3, < 3.0)
118
- rubocop-ast (>= 1.44.0, < 2.0)
118
+ rubocop-ast (>= 1.45.0, < 2.0)
119
119
  ruby-progressbar (~> 1.7)
120
120
  unicode-display_width (>= 2.4.0, < 4.0)
121
- rubocop-ast (1.44.1)
121
+ rubocop-ast (1.45.0)
122
122
  parser (>= 3.3.7.2)
123
123
  prism (~> 1.4)
124
124
  rubocop-minitest (0.38.1)
@@ -168,22 +168,22 @@ PLATFORMS
168
168
  x86_64-linux
169
169
 
170
170
  DEPENDENCIES
171
- base64 (> 0)
171
+ base64 (~> 0.3)
172
172
  baza.rb!
173
- factbase (> 0)
173
+ factbase (~> 0.11)
174
174
  minitest (~> 5.25)
175
175
  minitest-reporters (~> 1.7)
176
- os (> 0)
177
- qbash (> 0)
176
+ os (~> 1.1)
177
+ qbash (~> 0.4)
178
178
  rake (~> 13.2)
179
- random-port (> 0)
179
+ random-port (~> 0.7)
180
180
  rubocop (~> 1.73)
181
- rubocop-minitest (> 0)
181
+ rubocop-minitest (~> 0.38)
182
182
  rubocop-performance (~> 1.23)
183
- rubocop-rake (> 0)
183
+ rubocop-rake (~> 0.7)
184
184
  simplecov (~> 0.22)
185
185
  simplecov-cobertura (~> 2.1)
186
- wait_for (~> 0)
186
+ wait_for (~> 0.1)
187
187
  webmock (~> 3.24)
188
188
  webrick (~> 1.9)
189
189
  yard (~> 0.9)
data/baza.rb.gemspec CHANGED
@@ -23,16 +23,16 @@ Gem::Specification.new do |s|
23
23
  s.files = `git ls-files`.split($RS)
24
24
  s.rdoc_options = ['--charset=UTF-8']
25
25
  s.extra_rdoc_files = ['README.md', 'LICENSE.txt']
26
- s.add_dependency 'backtrace', '>0'
27
- s.add_dependency 'elapsed', '>0'
28
- s.add_dependency 'faraday', '>0'
29
- s.add_dependency 'faraday-http-cache', '>0'
30
- s.add_dependency 'faraday-multipart', '>0'
31
- s.add_dependency 'faraday-retry', '>0'
32
- s.add_dependency 'iri', '>0'
33
- s.add_dependency 'loog', '>0'
34
- s.add_dependency 'retries', '~>0'
35
- s.add_dependency 'tago', '~>0'
36
- s.add_dependency 'typhoeus', '~>1.3'
26
+ s.add_dependency 'backtrace', '~>0.4'
27
+ s.add_dependency 'elapsed', '~>0.0'
28
+ s.add_dependency 'faraday', '~>2.13'
29
+ s.add_dependency 'faraday-http-cache', '~>2.5'
30
+ s.add_dependency 'faraday-multipart', '~>1.1'
31
+ s.add_dependency 'faraday-retry', '~>2.3'
32
+ s.add_dependency 'iri', '~>0.11'
33
+ s.add_dependency 'loog', '~>0.6'
34
+ s.add_dependency 'retries', '~>0.0'
35
+ s.add_dependency 'tago', '~>0.0'
36
+ s.add_dependency 'typhoeus', '~>1.4'
37
37
  s.metadata['rubygems_mfa_required'] = 'true'
38
38
  end
data/lib/baza-rb/fake.rb CHANGED
@@ -213,12 +213,14 @@ class BazaRb::Fake
213
213
  # @param [String] owner Identifier of who is taking the job
214
214
  # @param [String] zip The local file path where the job's ZIP will be saved
215
215
  # @return [Boolean] Always returns TRUE and creates an empty file
216
+ # rubocop:disable Naming/PredicateMethod
216
217
  def pop(owner, zip)
217
218
  assert_owner(owner)
218
219
  FileUtils.mkdir_p(File.dirname(zip))
219
220
  FileUtils.touch(zip)
220
221
  true
221
222
  end
223
+ # rubocop:enable Naming/PredicateMethod
222
224
 
223
225
  # Submit a ZIP archive to finish a previously popped job.
224
226
  #
@@ -13,5 +13,5 @@
13
13
  # Copyright:: Copyright (c) 2024-2025 Yegor Bugayenko
14
14
  # License:: MIT
15
15
  class BazaRb
16
- VERSION = '0.5.1'
16
+ VERSION = '0.6.0'
17
17
  end
data/lib/baza-rb.rb CHANGED
@@ -516,6 +516,38 @@ class BazaRb
516
516
  end
517
517
  end
518
518
 
519
+ # Find a durable by job name and file name.
520
+ #
521
+ # @param [String] jname The name of the job
522
+ # @param [String] file The file name
523
+ # @return [Integer, nil] The ID of the durable if found, nil if not found
524
+ def durable_find(jname, file)
525
+ raise 'The "jname" is nil' if jname.nil?
526
+ raise 'The "jname" may not be empty' if jname.empty?
527
+ raise 'The "file" is nil' if file.nil?
528
+ raise 'The "file" may not be empty' if file.empty?
529
+ id = nil
530
+ elapsed(@loog) do
531
+ ret =
532
+ retry_it do
533
+ checked(
534
+ Typhoeus::Request.get(
535
+ home.append('durables').append('find').add(jname:, file:).to_s,
536
+ headers:
537
+ ),
538
+ [200, 404]
539
+ )
540
+ end
541
+ if ret.code == 200
542
+ id = ret.body.to_i
543
+ throw :"Found durable ##{id} for job \"#{jname}\" file \"#{file}\" at #{@host}"
544
+ else
545
+ throw :"Durable not found for job \"#{jname}\" file \"#{file}\" at #{@host}"
546
+ end
547
+ end
548
+ id
549
+ end
550
+
519
551
  # Transfer funds to another user.
520
552
  #
521
553
  # @param [String] recipient GitHub username of the recipient (e.g. "yegor256")
data/test/test_baza-rb.rb CHANGED
@@ -22,7 +22,7 @@ require_relative '../lib/baza-rb'
22
22
  # License:: MIT
23
23
  class TestBazaRb < Minitest::Test
24
24
  # The token to use for testing, in Zerocracy.com:
25
- TOKEN = '00000000-0000-0000-0000-000000000000'
25
+ TOKEN = 'ZRCY-00000000-0000-0000-0000-000000000000'
26
26
 
27
27
  # The host of the production platform:
28
28
  HOST = 'api.zerocracy.com'
@@ -95,7 +95,10 @@ class TestBazaRb < Minitest::Test
95
95
  Dir.mktmpdir do |dir|
96
96
  file = File.join(dir, "#{fake_name}.bin")
97
97
  File.binwrite(file, 'hello')
98
- id = LIVE.durable_place(fake_name, file)
98
+ jname = fake_name
99
+ refute(LIVE.durable_find(jname, File.basename(file)))
100
+ id = LIVE.durable_place(jname, file)
101
+ assert_equal(id, LIVE.durable_find(jname, File.basename(file)))
99
102
  owner = fake_name
100
103
  LIVE.durable_lock(id, owner)
101
104
  LIVE.durable_load(id, file)
@@ -519,6 +522,24 @@ class TestBazaRb < Minitest::Test
519
522
  assert_equal('new result', result)
520
523
  end
521
524
 
525
+ def test_durable_find_found
526
+ WebMock.disable_net_connect!
527
+ stub_request(:get, 'https://example.org:443/durables/find?jname=test-job&file=test.txt')
528
+ .with(headers: { 'X-Zerocracy-Token' => '000' })
529
+ .to_return(status: 200, body: '42')
530
+ id = fake_baza.durable_find('test-job', 'test.txt')
531
+ assert_equal(42, id)
532
+ end
533
+
534
+ def test_durable_find_not_found
535
+ WebMock.disable_net_connect!
536
+ stub_request(:get, 'https://example.org:443/durables/find?jname=test-job&file=test.txt')
537
+ .with(headers: { 'X-Zerocracy-Token' => '000' })
538
+ .to_return(status: 404)
539
+ id = fake_baza.durable_find('test-job', 'test.txt')
540
+ assert_nil(id)
541
+ end
542
+
522
543
  def test_checked_with_500_error
523
544
  WebMock.disable_net_connect!
524
545
  stub_request(:get, 'https://example.org:443/test')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: baza.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko
@@ -13,156 +13,156 @@ dependencies:
13
13
  name: backtrace
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
- - - ">"
16
+ - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '0'
18
+ version: '0.4'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
- - - ">"
23
+ - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '0'
25
+ version: '0.4'
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: elapsed
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
- - - ">"
30
+ - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '0'
32
+ version: '0.0'
33
33
  type: :runtime
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - ">"
37
+ - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '0'
39
+ version: '0.0'
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: faraday
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
- - - ">"
44
+ - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '0'
46
+ version: '2.13'
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
- - - ">"
51
+ - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '0'
53
+ version: '2.13'
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: faraday-http-cache
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
- - - ">"
58
+ - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: '0'
60
+ version: '2.5'
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
- - - ">"
65
+ - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0'
67
+ version: '2.5'
68
68
  - !ruby/object:Gem::Dependency
69
69
  name: faraday-multipart
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - ">"
72
+ - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0'
74
+ version: '1.1'
75
75
  type: :runtime
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - ">"
79
+ - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: '0'
81
+ version: '1.1'
82
82
  - !ruby/object:Gem::Dependency
83
83
  name: faraday-retry
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - ">"
86
+ - - "~>"
87
87
  - !ruby/object:Gem::Version
88
- version: '0'
88
+ version: '2.3'
89
89
  type: :runtime
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - ">"
93
+ - - "~>"
94
94
  - !ruby/object:Gem::Version
95
- version: '0'
95
+ version: '2.3'
96
96
  - !ruby/object:Gem::Dependency
97
97
  name: iri
98
98
  requirement: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - ">"
100
+ - - "~>"
101
101
  - !ruby/object:Gem::Version
102
- version: '0'
102
+ version: '0.11'
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
- - - ">"
107
+ - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '0'
109
+ version: '0.11'
110
110
  - !ruby/object:Gem::Dependency
111
111
  name: loog
112
112
  requirement: !ruby/object:Gem::Requirement
113
113
  requirements:
114
- - - ">"
114
+ - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '0'
116
+ version: '0.6'
117
117
  type: :runtime
118
118
  prerelease: false
119
119
  version_requirements: !ruby/object:Gem::Requirement
120
120
  requirements:
121
- - - ">"
121
+ - - "~>"
122
122
  - !ruby/object:Gem::Version
123
- version: '0'
123
+ version: '0.6'
124
124
  - !ruby/object:Gem::Dependency
125
125
  name: retries
126
126
  requirement: !ruby/object:Gem::Requirement
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: '0'
130
+ version: '0.0'
131
131
  type: :runtime
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: '0'
137
+ version: '0.0'
138
138
  - !ruby/object:Gem::Dependency
139
139
  name: tago
140
140
  requirement: !ruby/object:Gem::Requirement
141
141
  requirements:
142
142
  - - "~>"
143
143
  - !ruby/object:Gem::Version
144
- version: '0'
144
+ version: '0.0'
145
145
  type: :runtime
146
146
  prerelease: false
147
147
  version_requirements: !ruby/object:Gem::Requirement
148
148
  requirements:
149
149
  - - "~>"
150
150
  - !ruby/object:Gem::Version
151
- version: '0'
151
+ version: '0.0'
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: typhoeus
154
154
  requirement: !ruby/object:Gem::Requirement
155
155
  requirements:
156
156
  - - "~>"
157
157
  - !ruby/object:Gem::Version
158
- version: '1.3'
158
+ version: '1.4'
159
159
  type: :runtime
160
160
  prerelease: false
161
161
  version_requirements: !ruby/object:Gem::Requirement
162
162
  requirements:
163
163
  - - "~>"
164
164
  - !ruby/object:Gem::Version
165
- version: '1.3'
165
+ version: '1.4'
166
166
  description: It is a Ruby client for Zerocracy API, allowing you to check your job
167
167
  statuses, upload and download binaries, lock/unlock them, manage durables, and do
168
168
  everything else that is possible to do via the HTTP API.