zold 0.14.17 → 0.14.18
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 +4 -4
- data/.gitignore +2 -0
- data/.rubocop.yml +1 -1
- data/bin/zold +6 -1
- data/fixtures/scripts/_head.sh +33 -13
- data/fixtures/scripts/calculate-scores.sh +1 -1
- data/fixtures/scripts/distribute-wallet.sh +2 -2
- data/fixtures/scripts/push-and-pull.sh +2 -2
- data/fixtures/scripts/redeploy-on-upgrade.sh +3 -3
- data/fixtures/scripts/sigdump.sh +1 -1
- data/fixtures/scripts/spread-wallets.sh +2 -2
- data/lib/zold/commands/next.rb +57 -0
- data/lib/zold/commands/node.rb +23 -8
- data/lib/zold/commands/remote.rb +7 -4
- data/lib/zold/metronome.rb +0 -1
- data/lib/zold/node/farm.rb +3 -2
- data/lib/zold/node/front.rb +11 -0
- data/lib/zold/node/spread_entrance.rb +0 -1
- data/lib/zold/remotes.rb +68 -75
- data/lib/zold/type.rb +5 -4
- data/lib/zold/version.rb +1 -1
- data/test/commands/routines/test_reconnect.rb +2 -2
- data/test/commands/test_create.rb +1 -1
- data/test/commands/test_invoice.rb +1 -1
- data/test/commands/test_list.rb +1 -1
- data/test/commands/test_merge.rb +1 -1
- data/test/commands/test_pull.rb +49 -0
- data/test/commands/test_remote.rb +11 -12
- data/test/commands/test_show.rb +1 -1
- data/test/fake_home.rb +26 -4
- data/test/node/fake_node.rb +1 -0
- data/test/node/test_farm.rb +10 -10
- data/test/test_atomic_file.rb +2 -2
- data/test/test_copies.rb +8 -8
- data/test/test_key.rb +1 -1
- data/test/test_remotes.rb +60 -21
- data/test/test_zold.rb +3 -2
- metadata +5 -4
- data/.zoldata/remotes +0 -1
- data/farm +0 -1
data/test/node/fake_node.rb
CHANGED
data/test/node/test_farm.rb
CHANGED
@@ -38,7 +38,7 @@ class FarmTest < Minitest::Test
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def test_renders_in_json
|
41
|
-
Dir.mktmpdir
|
41
|
+
Dir.mktmpdir do |dir|
|
42
42
|
farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', File.join(dir, 'f'), log: test_log)
|
43
43
|
farm.start('localhost', 80, threads: 4, strength: 2) do
|
44
44
|
sleep 0.1 while farm.best.empty? || farm.best[0].value.zero?
|
@@ -50,7 +50,7 @@ class FarmTest < Minitest::Test
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_renders_in_text
|
53
|
-
Dir.mktmpdir
|
53
|
+
Dir.mktmpdir do |dir|
|
54
54
|
farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', File.join(dir, 'f'), log: test_log)
|
55
55
|
farm.start('localhost', 80, threads: 2, strength: 1) do
|
56
56
|
assert(!farm.to_text.nil?)
|
@@ -59,19 +59,19 @@ class FarmTest < Minitest::Test
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def test_makes_best_score_in_background
|
62
|
-
Dir.mktmpdir
|
62
|
+
Dir.mktmpdir do |dir|
|
63
63
|
farm = Zold::Farm.new('NOPREFIX@ffffffffffffffff', File.join(dir, 'f'), log: test_log)
|
64
|
-
farm.start('localhost', 80, threads: 4, strength:
|
65
|
-
sleep 0.1 while farm.best.empty? || farm.best[0].value
|
64
|
+
farm.start('localhost', 80, threads: 4, strength: 3) do
|
65
|
+
sleep 0.1 while farm.best.empty? || farm.best[0].value < 3
|
66
66
|
score = farm.best[0]
|
67
67
|
assert(!score.expired?)
|
68
|
-
assert(score.value
|
68
|
+
assert(score.value >= 3)
|
69
69
|
end
|
70
70
|
end
|
71
71
|
end
|
72
72
|
|
73
73
|
def test_correct_score_from_empty_farm
|
74
|
-
Dir.mktmpdir
|
74
|
+
Dir.mktmpdir do |dir|
|
75
75
|
farm = Zold::Farm.new('NOPREFIX@cccccccccccccccc', File.join(dir, 'f'), log: test_log)
|
76
76
|
farm.start('example.com', 8080, threads: 0, strength: 1) do
|
77
77
|
score = farm.best[0]
|
@@ -84,7 +84,7 @@ class FarmTest < Minitest::Test
|
|
84
84
|
end
|
85
85
|
|
86
86
|
def test_pre_loads_history
|
87
|
-
Dir.mktmpdir
|
87
|
+
Dir.mktmpdir do |dir|
|
88
88
|
cache = File.join(dir, 'cache')
|
89
89
|
farm = Zold::Farm.new('NOPREFIX@cccccccccccccccc', cache, log: test_log)
|
90
90
|
farm.start('example.com', 8080, threads: 0, strength: 1) do
|
@@ -98,7 +98,7 @@ class FarmTest < Minitest::Test
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def test_drops_expired_scores_from_history
|
101
|
-
Dir.mktmpdir
|
101
|
+
Dir.mktmpdir do |dir|
|
102
102
|
cache = File.join(dir, 'cache')
|
103
103
|
score = Zold::Score.new(
|
104
104
|
time: Time.parse('2017-07-19T21:24:51Z'),
|
@@ -121,7 +121,7 @@ class FarmTest < Minitest::Test
|
|
121
121
|
|
122
122
|
def test_garbage_farm_file
|
123
123
|
log = SaveLastMessageLogger.new
|
124
|
-
Dir.mktmpdir
|
124
|
+
Dir.mktmpdir do |dir|
|
125
125
|
file = File.join(dir, 'corrupted_farm')
|
126
126
|
[
|
127
127
|
'0/6: 2018-06-26ABCT00:32:43Z 178.128.165.12 4096 MIRhypo1@c13620484b46caa4',
|
data/test/test_atomic_file.rb
CHANGED
@@ -35,7 +35,7 @@ require_relative '../lib/zold/verbose_thread'
|
|
35
35
|
# License:: MIT
|
36
36
|
class TestAtomicFile < Minitest::Test
|
37
37
|
def test_writes_and_reads
|
38
|
-
Dir.mktmpdir
|
38
|
+
Dir.mktmpdir do |dir|
|
39
39
|
file = Zold::AtomicFile.new(File.join(dir, 'test.txt'))
|
40
40
|
['', 'hello, dude!'].each do |t|
|
41
41
|
file.write(t)
|
@@ -45,7 +45,7 @@ class TestAtomicFile < Minitest::Test
|
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_writes_from_many_threads
|
48
|
-
Dir.mktmpdir
|
48
|
+
Dir.mktmpdir do |dir|
|
49
49
|
file = Zold::AtomicFile.new(File.join(dir, 'a.txt'))
|
50
50
|
threads = 10
|
51
51
|
pool = Concurrent::FixedThreadPool.new(threads)
|
data/test/test_copies.rb
CHANGED
@@ -35,7 +35,7 @@ require_relative '../lib/zold/wallet'
|
|
35
35
|
# License:: MIT
|
36
36
|
class TestCopies < Minitest::Test
|
37
37
|
def test_adds_and_removes_copies
|
38
|
-
Dir.mktmpdir
|
38
|
+
Dir.mktmpdir do |dir|
|
39
39
|
copies = Zold::Copies.new(File.join(dir, 'my/a/copies'), log: test_log)
|
40
40
|
copies.add(content('alpha'), '192.168.0.1', 80, 1)
|
41
41
|
copies.add(content('beta'), '192.168.0.2', 80, 3)
|
@@ -50,14 +50,14 @@ class TestCopies < Minitest::Test
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def test_lists_empty_dir
|
53
|
-
Dir.mktmpdir
|
53
|
+
Dir.mktmpdir do |dir|
|
54
54
|
copies = Zold::Copies.new(File.join(dir, 'xxx'), log: test_log)
|
55
55
|
assert(copies.all.empty?, "#{copies.all.count} is not zero")
|
56
56
|
end
|
57
57
|
end
|
58
58
|
|
59
59
|
def test_overwrites_host
|
60
|
-
Dir.mktmpdir
|
60
|
+
Dir.mktmpdir do |dir|
|
61
61
|
copies = Zold::Copies.new(File.join(dir, 'my/a/copies-2'), log: test_log)
|
62
62
|
host = 'b1.zold.io'
|
63
63
|
copies.add(content('z1'), host, 80, 5)
|
@@ -69,7 +69,7 @@ class TestCopies < Minitest::Test
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def test_cleans_copies
|
72
|
-
Dir.mktmpdir
|
72
|
+
Dir.mktmpdir do |dir|
|
73
73
|
copies = Zold::Copies.new(dir, log: test_log)
|
74
74
|
copies.add(content('h1'), 'zold.io', 4096, 10, Time.now - 25 * 60 * 60)
|
75
75
|
copies.add(content('h1'), 'zold.io', 4097, 20, Time.now - 26 * 60 * 60)
|
@@ -81,7 +81,7 @@ class TestCopies < Minitest::Test
|
|
81
81
|
end
|
82
82
|
|
83
83
|
def test_cleans_broken_copies
|
84
|
-
Dir.mktmpdir
|
84
|
+
Dir.mktmpdir do |dir|
|
85
85
|
copies = Zold::Copies.new(dir, log: test_log)
|
86
86
|
copies.add('broken wallet content', 'zold.io', 4096, 10, Time.now)
|
87
87
|
copies.clean
|
@@ -90,7 +90,7 @@ class TestCopies < Minitest::Test
|
|
90
90
|
end
|
91
91
|
|
92
92
|
def test_ignores_garbage
|
93
|
-
Dir.mktmpdir
|
93
|
+
Dir.mktmpdir do |dir|
|
94
94
|
copies = Zold::Copies.new(dir, log: test_log)
|
95
95
|
copies.add(content('h1'), 'zold.io', 50, 80, Time.now - 25 * 60 * 60)
|
96
96
|
FileUtils.mkdir(File.join(dir, '55'))
|
@@ -99,7 +99,7 @@ class TestCopies < Minitest::Test
|
|
99
99
|
end
|
100
100
|
|
101
101
|
def test_sorts_them_by_score
|
102
|
-
Dir.mktmpdir
|
102
|
+
Dir.mktmpdir do |dir|
|
103
103
|
copies = Zold::Copies.new(dir, log: test_log)
|
104
104
|
copies.add(content('content-1'), '1.zold.io', 80, 1)
|
105
105
|
copies.add(content('content-2'), '2.zold.io', 80, 2)
|
@@ -110,7 +110,7 @@ class TestCopies < Minitest::Test
|
|
110
110
|
end
|
111
111
|
|
112
112
|
def test_ignores_too_old_scores
|
113
|
-
Dir.mktmpdir
|
113
|
+
Dir.mktmpdir do |dir|
|
114
114
|
copies = Zold::Copies.new(dir, log: test_log)
|
115
115
|
copies.add(content('h1'), 'zold.io', 50, 80, Time.now - 1000 * 60 * 60)
|
116
116
|
assert_equal(0, copies.all[0][:score])
|
data/test/test_key.rb
CHANGED
data/test/test_remotes.rb
CHANGED
@@ -44,17 +44,17 @@ class TestRemotes < Minitest::Test
|
|
44
44
|
end
|
45
45
|
|
46
46
|
def test_adds_remotes
|
47
|
-
Dir.mktmpdir
|
47
|
+
Dir.mktmpdir do |dir|
|
48
48
|
file = File.join(dir, 'remotes')
|
49
49
|
FileUtils.touch(file)
|
50
|
-
remotes = Zold::Remotes.new(file)
|
50
|
+
remotes = Zold::Remotes.new(file: file)
|
51
51
|
remotes.add('127.0.0.1')
|
52
52
|
assert(1, remotes.all.count)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_reads_broken_file
|
57
|
-
Dir.mktmpdir
|
57
|
+
Dir.mktmpdir do |dir|
|
58
58
|
file = File.join(dir, 'remotes')
|
59
59
|
[
|
60
60
|
',0,0,0',
|
@@ -63,17 +63,17 @@ class TestRemotes < Minitest::Test
|
|
63
63
|
"\n\n\n\n"
|
64
64
|
].each do |t|
|
65
65
|
File.write(file, t)
|
66
|
-
remotes = Zold::Remotes.new(file)
|
66
|
+
remotes = Zold::Remotes.new(file: file)
|
67
67
|
assert(remotes.all.empty?, remotes.all)
|
68
68
|
end
|
69
69
|
end
|
70
70
|
end
|
71
71
|
|
72
72
|
def test_iterates_and_fails
|
73
|
-
Dir.mktmpdir
|
73
|
+
Dir.mktmpdir do |dir|
|
74
74
|
file = File.join(dir, 'remotes')
|
75
75
|
FileUtils.touch(file)
|
76
|
-
remotes = Zold::Remotes.new(file)
|
76
|
+
remotes = Zold::Remotes.new(file: file)
|
77
77
|
ips = (0..50)
|
78
78
|
ips.each { |i| remotes.add("0.0.0.#{i}", 9999) }
|
79
79
|
remotes.iterate(Zold::Log::Quiet.new) { raise 'Intended' }
|
@@ -81,11 +81,22 @@ class TestRemotes < Minitest::Test
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
def test_iterates_them_all
|
85
|
+
Dir.mktmpdir do |dir|
|
86
|
+
remotes = Zold::Remotes.new(file: File.join(dir, 'rrr.csv'))
|
87
|
+
remotes.clean
|
88
|
+
5.times { |i| remotes.add("0.0.0.#{i}", 8080) }
|
89
|
+
total = 0
|
90
|
+
remotes.iterate(test_log) { total += 1 }
|
91
|
+
assert_equal(5, total)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
84
95
|
def test_log_msg_of_iterates_when_fail
|
85
|
-
Dir.mktmpdir
|
96
|
+
Dir.mktmpdir do |dir|
|
86
97
|
file = File.join(dir, 'remotes')
|
87
98
|
FileUtils.touch(file)
|
88
|
-
remotes = Zold::Remotes.new(file)
|
99
|
+
remotes = Zold::Remotes.new(file: file)
|
89
100
|
remotes.add('0.0.0.1', 9999)
|
90
101
|
log = TestLogger.new
|
91
102
|
remotes.iterate(log) { raise 'Intended' }
|
@@ -94,22 +105,22 @@ class TestRemotes < Minitest::Test
|
|
94
105
|
end
|
95
106
|
|
96
107
|
def test_log_msg_of_iterates_when_take_too_long
|
97
|
-
Dir.mktmpdir
|
108
|
+
Dir.mktmpdir do |dir|
|
98
109
|
file = File.join(dir, 'remotes')
|
99
110
|
FileUtils.touch(file)
|
100
|
-
remotes = Zold::Remotes.new(file)
|
111
|
+
remotes = Zold::Remotes.new(file: file, timeout: 1)
|
101
112
|
remotes.add('127.0.0.1')
|
102
113
|
log = TestLogger.new
|
103
|
-
remotes.iterate(log) { sleep(
|
114
|
+
remotes.iterate(log) { sleep(2) }
|
104
115
|
assert(log.msg.include?('Took too long to execute'))
|
105
116
|
end
|
106
117
|
end
|
107
118
|
|
108
119
|
def test_removes_remotes
|
109
|
-
Dir.mktmpdir
|
120
|
+
Dir.mktmpdir do |dir|
|
110
121
|
file = File.join(dir, 'remotes')
|
111
122
|
FileUtils.touch(file)
|
112
|
-
remotes = Zold::Remotes.new(file)
|
123
|
+
remotes = Zold::Remotes.new(file: file)
|
113
124
|
remotes.add('127.0.0.1')
|
114
125
|
remotes.add('LOCALHOST', 433)
|
115
126
|
remotes.remove('localhost', 433)
|
@@ -118,8 +129,8 @@ class TestRemotes < Minitest::Test
|
|
118
129
|
end
|
119
130
|
|
120
131
|
def test_resets_remotes
|
121
|
-
Dir.mktmpdir
|
122
|
-
remotes = Zold::Remotes.new(File.join(dir, 'remotes'))
|
132
|
+
Dir.mktmpdir do |dir|
|
133
|
+
remotes = Zold::Remotes.new(file: File.join(dir, 'remotes'))
|
123
134
|
remotes.clean
|
124
135
|
remotes.reset
|
125
136
|
remotes.reset
|
@@ -128,10 +139,10 @@ class TestRemotes < Minitest::Test
|
|
128
139
|
end
|
129
140
|
|
130
141
|
def test_modifies_score
|
131
|
-
Dir.mktmpdir
|
142
|
+
Dir.mktmpdir do |dir|
|
132
143
|
file = File.join(dir, 'remotes')
|
133
144
|
FileUtils.touch(file)
|
134
|
-
remotes = Zold::Remotes.new(file)
|
145
|
+
remotes = Zold::Remotes.new(file: file)
|
135
146
|
remotes.add('127.0.0.1', 1024)
|
136
147
|
remotes.rescore('127.0.0.1', 1024, 15)
|
137
148
|
remotes.all.each do |r|
|
@@ -142,17 +153,17 @@ class TestRemotes < Minitest::Test
|
|
142
153
|
end
|
143
154
|
|
144
155
|
def test_tolerates_invalid_requests
|
145
|
-
Dir.mktmpdir
|
156
|
+
Dir.mktmpdir do |dir|
|
146
157
|
file = File.join(dir, 'remotes')
|
147
|
-
remotes = Zold::Remotes.new(file)
|
158
|
+
remotes = Zold::Remotes.new(file: file)
|
148
159
|
remotes.error('127.0.0.1', 1024)
|
149
160
|
remotes.rescore('127.0.0.1', 1024, 15)
|
150
161
|
end
|
151
162
|
end
|
152
163
|
|
153
164
|
def test_modifies_from_many_threads
|
154
|
-
Dir.mktmpdir
|
155
|
-
remotes = Zold::Remotes.new(File.join(dir, 'a.csv'))
|
165
|
+
Dir.mktmpdir do |dir|
|
166
|
+
remotes = Zold::Remotes.new(file: File.join(dir, 'a.csv'))
|
156
167
|
remotes.clean
|
157
168
|
threads = 5
|
158
169
|
pool = Concurrent::FixedThreadPool.new(threads)
|
@@ -180,4 +191,32 @@ class TestRemotes < Minitest::Test
|
|
180
191
|
assert_equal(0, remotes.all.reject { |r| r[:host] == host }.size)
|
181
192
|
end
|
182
193
|
end
|
194
|
+
|
195
|
+
def test_adds_from_many_threads
|
196
|
+
Dir.mktmpdir do |dir|
|
197
|
+
remotes = Zold::Remotes.new(file: File.join(dir, 'xx.csv'))
|
198
|
+
remotes.clean
|
199
|
+
threads = 5
|
200
|
+
pool = Concurrent::FixedThreadPool.new(threads)
|
201
|
+
done = Concurrent::AtomicFixnum.new
|
202
|
+
latch = Concurrent::CountDownLatch.new(1)
|
203
|
+
threads.times do |i|
|
204
|
+
pool.post do
|
205
|
+
Zold::VerboseThread.new(test_log).run(true) do
|
206
|
+
latch.wait(10)
|
207
|
+
remotes.add('127.0.0.1', 8080 + i)
|
208
|
+
done.increment
|
209
|
+
end
|
210
|
+
end
|
211
|
+
end
|
212
|
+
latch.count_down
|
213
|
+
sleep 0.1 until done.value == threads
|
214
|
+
assert_equal(threads, remotes.all.count)
|
215
|
+
end
|
216
|
+
end
|
217
|
+
|
218
|
+
def test_empty_remotes
|
219
|
+
remotes = Zold::Remotes::Empty.new(file: '/tmp/empty')
|
220
|
+
assert(remotes.is_a?(Zold::Remotes))
|
221
|
+
end
|
183
222
|
end
|
data/test/test_zold.rb
CHANGED
@@ -34,7 +34,8 @@ require_relative '../lib/zold/version'
|
|
34
34
|
class TestZold < Minitest::Test
|
35
35
|
def test_all_scripts
|
36
36
|
Dir.new('fixtures/scripts').select { |f| f =~ /\.sh$/ && !f.start_with?('_') }.each do |f|
|
37
|
-
|
37
|
+
# next unless f == 'redeploy-on-upgrade.sh'
|
38
|
+
Dir.mktmpdir do |dir|
|
38
39
|
FileUtils.cp('fixtures/id_rsa.pub', dir)
|
39
40
|
FileUtils.cp('fixtures/id_rsa', dir)
|
40
41
|
script = File.join(dir, f)
|
@@ -68,7 +69,7 @@ class TestZold < Minitest::Test
|
|
68
69
|
end
|
69
70
|
|
70
71
|
def test_create_new_wallet
|
71
|
-
Dir.mktmpdir
|
72
|
+
Dir.mktmpdir do |dir|
|
72
73
|
FileUtils.cp('fixtures/id_rsa.pub', dir)
|
73
74
|
FileUtils.cp('fixtures/id_rsa', dir)
|
74
75
|
stdout = exec(
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zold
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.14.
|
4
|
+
version: 0.14.18
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yegor Bugayenko
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|
@@ -335,7 +335,6 @@ files:
|
|
335
335
|
- ".rultor.yml"
|
336
336
|
- ".simplecov"
|
337
337
|
- ".travis.yml"
|
338
|
-
- ".zoldata/remotes"
|
339
338
|
- Gemfile
|
340
339
|
- INSTALL.md
|
341
340
|
- LICENSE.txt
|
@@ -346,7 +345,6 @@ files:
|
|
346
345
|
- bin/zold
|
347
346
|
- cucumber.yml
|
348
347
|
- deploy.sh
|
349
|
-
- farm
|
350
348
|
- features/cli.feature
|
351
349
|
- features/gem_package.feature
|
352
350
|
- features/step_definitions/steps.rb
|
@@ -401,6 +399,7 @@ files:
|
|
401
399
|
- lib/zold/commands/invoice.rb
|
402
400
|
- lib/zold/commands/list.rb
|
403
401
|
- lib/zold/commands/merge.rb
|
402
|
+
- lib/zold/commands/next.rb
|
404
403
|
- lib/zold/commands/node.rb
|
405
404
|
- lib/zold/commands/pay.rb
|
406
405
|
- lib/zold/commands/propagate.rb
|
@@ -457,6 +456,7 @@ files:
|
|
457
456
|
- test/commands/test_node.rb
|
458
457
|
- test/commands/test_pay.rb
|
459
458
|
- test/commands/test_propagate.rb
|
459
|
+
- test/commands/test_pull.rb
|
460
460
|
- test/commands/test_push.rb
|
461
461
|
- test/commands/test_remote.rb
|
462
462
|
- test/commands/test_show.rb
|
@@ -544,6 +544,7 @@ test_files:
|
|
544
544
|
- test/commands/test_node.rb
|
545
545
|
- test/commands/test_pay.rb
|
546
546
|
- test/commands/test_propagate.rb
|
547
|
+
- test/commands/test_pull.rb
|
547
548
|
- test/commands/test_push.rb
|
548
549
|
- test/commands/test_remote.rb
|
549
550
|
- test/commands/test_show.rb
|
data/.zoldata/remotes
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
b1.zold.io,80,0,0
|