zold 0.13.29 → 0.13.30

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
  SHA1:
3
- metadata.gz: a5548665d483b173adbc56944626a2ae8f5a9b3c
4
- data.tar.gz: 8599a6491f67845ef46da4fe915a5eabbc8fc9bf
3
+ metadata.gz: ee35d396502c3f5d87f9b65debca6c3e7bd498da
4
+ data.tar.gz: 5958504831a46a0a40d3cae2af06b26cc78e4c85
5
5
  SHA512:
6
- metadata.gz: 2231e2653e8f83ea7adbf2322e3c70ee56884f8976f5e58cfafa3e2d6cf252f668211554231bc5302929fcf9f3cd05b38130c4ae595706d95ae5f1dd70ffa883
7
- data.tar.gz: 17a0728fe33979c7670820e018806eb7000c820dab8b652f2569436841408ec746fd964e5ba0604d6d0ccaabd5dfe3cd6a71caf0f3de604fef952b0f818c0689
6
+ metadata.gz: 493b9c89a94e367e2b54fd441d3a7adb54e44db8b8110d7baee8f87cca5aa9027180c7140c331e7d78a195161f86db2ce6728a07a1f5af5dae86de7ada7be66b
7
+ data.tar.gz: 3dc8aff3511edd018766cc15e936f4c8ba9c416db82c27a031d760411b52a17cdff8cf2549d744230dfb6ba9238f3dad603788a8ad5647141d381ee2a7970c90
data/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  <img src="http://www.zold.io/logo.svg" width="92px" height="92px"/>
2
2
 
3
+ [![Donate via Zerocracy](https://www.0crat.com/contrib-badge/CAZPZR9FS.svg)](https://www.0crat.com/contrib/CAZPZR9FS)
4
+
3
5
  [![EO principles respected here](http://www.elegantobjects.org/badge.svg)](http://www.elegantobjects.org)
4
6
  [![Managed by Zerocracy](https://www.0crat.com/badge/CAZPZR9FS.svg)](https://www.0crat.com/p/CAZPZR9FS)
5
7
  [![DevOps By Rultor.com](http://www.rultor.com/b/yegor256/zold)](http://www.rultor.com/p/yegor256/zold)
data/lib/zold/remotes.rb CHANGED
@@ -125,11 +125,17 @@ module Zold
125
125
 
126
126
  def exists?(host, port = Remotes::PORT)
127
127
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
128
+ raise 'Host can\'t be nil' if host.nil?
129
+ raise 'Port can\'t be nil' if port.nil?
128
130
  !load.find { |r| r[:host] == host.downcase && r[:port] == port }.nil?
129
131
  end
130
132
 
131
133
  def add(host, port = Remotes::PORT)
134
+ raise 'Host can\'t be nil' if host.nil?
135
+ raise 'Host can\'t be empty' if host.empty?
136
+ raise 'Port can\'t be nil' if port.nil?
132
137
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
138
+ raise 'Port can\'t be zero' if port.zero?
133
139
  raise 'Port can\'t be negative' if port < 0
134
140
  raise 'Port can\'t be over 65536' if port > 0xffff
135
141
  raise "#{host}:#{port} already exists" if exists?(host, port)
@@ -141,6 +147,8 @@ module Zold
141
147
 
142
148
  def remove(host, port = Remotes::PORT)
143
149
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
150
+ raise 'Host can\'t be nil' if host.nil?
151
+ raise 'Port can\'t be nil' if port.nil?
144
152
  raise "#{host}:#{port} is absent" unless exists?(host, port)
145
153
  list = load
146
154
  list.reject! { |r| r[:host] == host.downcase && r[:port] == port }
@@ -148,6 +156,8 @@ module Zold
148
156
  end
149
157
 
150
158
  def iterate(log, farm: Farm::Empty.new)
159
+ raise 'Log can\'t be nil' if log.nil?
160
+ raise 'Farm can\'t be nil' if farm.nil?
151
161
  best = farm.best[0]
152
162
  require_relative 'score'
153
163
  score = best.nil? ? Score::ZERO : best
@@ -165,6 +175,8 @@ module Zold
165
175
  end
166
176
 
167
177
  def errors(host, port = Remotes::PORT)
178
+ raise 'Host can\'t be nil' if host.nil?
179
+ raise 'Port can\'t be nil' if port.nil?
168
180
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
169
181
  list = load
170
182
  raise "#{host}:#{port} is absent among #{list.count} remotes" unless exists?(host, port)
@@ -172,6 +184,8 @@ module Zold
172
184
  end
173
185
 
174
186
  def error(host, port = Remotes::PORT)
187
+ raise 'Host can\'t be nil' if host.nil?
188
+ raise 'Port can\'t be nil' if port.nil?
175
189
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
176
190
  list = load
177
191
  raise "#{host}:#{port} is absent among #{list.count} remotes" unless exists?(host, port)
@@ -180,6 +194,9 @@ module Zold
180
194
  end
181
195
 
182
196
  def rescore(host, port, score)
197
+ raise 'Host can\'t be nil' if host.nil?
198
+ raise 'Port can\'t be nil' if port.nil?
199
+ raise 'Score can\'t be nil' if score.nil?
183
200
  raise 'Port has to be of type Integer' unless port.is_a?(Integer)
184
201
  raise "#{host}:#{port} is absent" unless exists?(host, port)
185
202
  list = load
@@ -190,15 +207,18 @@ module Zold
190
207
  private
191
208
 
192
209
  def load
193
- CSV.read(file).map do |r|
210
+ raw = CSV.read(file).map do |r|
194
211
  {
195
212
  host: r[0],
196
213
  port: r[1].to_i,
197
214
  score: r[2].to_i,
198
- errors: r[3].to_i,
199
- home: URI("http://#{r[0]}:#{r[1]}/")
215
+ errors: r[3].to_i
200
216
  }
201
217
  end
218
+ raw.reject { |r| !r[:host] || r[:port].zero? }.map do |r|
219
+ r[:home] = URI("http://#{r[0]}:#{r[1]}/")
220
+ r
221
+ end
202
222
  end
203
223
 
204
224
  def save(list)
data/lib/zold/version.rb CHANGED
@@ -23,5 +23,5 @@
23
23
  # Copyright:: Copyright (c) 2018 Yegor Bugayenko
24
24
  # License:: MIT
25
25
  module Zold
26
- VERSION = '0.13.29'.freeze
26
+ VERSION = '0.13.30'.freeze
27
27
  end
data/test/test_remotes.rb CHANGED
@@ -39,6 +39,22 @@ class TestRemotes < Minitest::Test
39
39
  end
40
40
  end
41
41
 
42
+ def test_reads_broken_file
43
+ Dir.mktmpdir 'test' do |dir|
44
+ file = File.join(dir, 'remotes')
45
+ [
46
+ ',0,0,0',
47
+ 'some garbage',
48
+ '',
49
+ "\n\n\n\n"
50
+ ].each do |t|
51
+ File.write(file, t)
52
+ remotes = Zold::Remotes.new(file)
53
+ assert(remotes.all.empty?, remotes.all)
54
+ end
55
+ end
56
+ end
57
+
42
58
  def test_iterates_and_fails
43
59
  Dir.mktmpdir 'test' do |dir|
44
60
  file = File.join(dir, 'remotes')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zold
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.29
4
+ version: 0.13.30
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yegor Bugayenko