8000 Use `Time.stub :now` to avoid a random failure · rubygems/rubygems@85f60a9 · GitHub
[go: up one dir, main page]

Skip to content

Commit 85f60a9

Browse files
committed
Use Time.stub :now to avoid a random failure
Essentially this reverts 45464bf. The commit removed a mock of Time.now, which caused a random failure. http://rubyci.s3.amazonaws.com/ubuntu1804/ruby-master/log/20210512T123004Z.fail.html.gz ``` 1) Failure: TestGemPackageTarWriter#test_add_file_signer [/home/chkbuild/chkbuild/tmp/build/20210512T123004Z/ruby/test/rubygems/test_gem_package_tar_writer.rb:117]: Field mtime of the tar header differs.. <"14046746312\u0000"> expected but was <"14046746311\x00">. ``` Object#stub is defined at f1af59f, so now `Time.stub :now` works.
1 parent 912764b commit 85f60a9

File tree

1 file changed

+102
-78
lines changed

1 file changed

+102
-78
lines changed

test/rubygems/test_gem_package_tar_writer.rb

Lines changed: 102 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -27,80 +27,90 @@ def teardown
2727
end
2828

2929
def test_add_file
30-
@tar_writer.add_file 'x', 0644 do |f|
31-
f.write 'a' * 10
32-
end
30+
Time.stub :now, Time.at(1458518157) do
31+
@tar_writer.add_file 'x', 0644 do |f|
32+
f.write 'a' * 10
33+
end
3334

34-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
35+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
3536
@io.string[0, 512])
37+
end
3638
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
3739
assert_equal 1024, @io.pos
3840
end
3941

4042
def test_add_file_source_date_epoch
4143
ENV["SOURCE_DATE_EPOCH"] = "123456789"
42-
@tar_writer.mkdir 'foo', 0644
44+
Time.stub :now, Time.at(1458518157) do
45+
@tar_writer.mkdir 'foo', 0644
4346

44-
assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
45-
@io.string[0, 512]
47+
assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
48+
@io.string[0, 512]
49+
end
4650
end
4751

4852
def test_add_symlink
49-
@tar_writer.add_symlink 'x', 'y', 0644
53+
Time.stub :now, Time.at(1458518157) do
54+
@tar_writer.add_symlink 'x', 'y', 0644
5055

51-
assert_headers_equal(tar_symlink_header('x', '', 0644, Time.now, 'y'),
56+
assert_headers_equal(tar_symlink_header('x', '', 0644, Time.now, 'y'),
5257
@io.string[0, 512])
58+
end
5359
assert_equal 512, @io.pos
5460
end
5561

5662
def test_add_symlink_source_date_epoch
5763
ENV["SOURCE_DATE_EPOCH"] = "123456789"
58-
@tar_writer.add_symlink 'x', 'y', 0644
64+
Time.stub :now, Time.at(1458518157) do
65+
@tar_writer.add_symlink 'x', 'y', 0644
5966

60-
assert_headers_equal(tar_symlink_header('x', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, 'y'),
67+
assert_headers_equal(tar_symlink_header('x', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc, 'y'),
6168
@io.string[0, 512])
69+
end
6270
end
6371

6472
def test_add_file_digest
6573
digest_algorithms = Digest::SHA1.new, Digest::SHA512.new
6674

67-
digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
68-
io.write 'a' * 10
69-
end
75+
Time.stub :now, Time.at(1458518157) do
76+
digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
77+
io.write 'a' * 10
78+
end
7079

71-
assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
72-
digests['SHA1'].hexdigest
73-
assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
74-
'1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
75-
'4993d6b40a4e4d8424196afc347e97640d68de61' \
76-
'e1cf14b0',
77-
digests['SHA512'].hexdigest
80+
assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
81+
digests['SHA1'].hexdigest
82+
assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
83+
'1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
84+
'4993d6b40a4e4d8424196afc347e97640d68de61' \
85+
'e1cf14b0',
86+
digests['SHA512'].hexdigest
7887

79-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
88+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
8089
@io.string[0, 512])
81-
90+
end
8291
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
8392
assert_equal 1024, @io.pos
8493
end
8594

8695
def test_add_file_digest_multiple
8796
digest_algorithms = [Digest::SHA1.new, Digest::SHA512.new]
8897

89-
digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
90-
io.write 'a' * 10
91-
end
98+
Time.stub :now, Time.at(1458518157) do
99+
digests = @tar_writer.add_file_digest 'x', 0644, digest_algorithms do |io|
100+
io.write 'a' * 10
101+
end
92102

93-
assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
94-
digests['SHA1'].hexdigest
95-
assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
96-
'1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
97-
'4993d6b40a4e4d8424196afc347e97640d68de61' \
98-
'e1cf14b0',
99-
digests['SHA512'].hexdigest
100-
101-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
102-
@io.string[0, 512])
103+
assert_equal '3495ff69d34671d1e15b33a63c1379fdedd3a32a',
104+
digests['SHA1'].hexdigest
105+
assert_equal '4714870aff6c97ca09d135834fdb58a6389a50c1' \
106+
'1fef8ec4afef466fb60a23ac6b7a9c92658f14df' \
107+
'4993d6b40a4e4d8424196afc347e97640d68de61' \
108+
'e1cf14b0',
109+
digests['SHA512'].hexdigest
103110

111+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
112+
@io.string[0, 512])
113+
end
104114
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
105115
assert_equal 1024, @io.pos
106116
end
@@ -110,70 +120,80 @@ def test_add_file_signer
110120

111121
signer = Gem::Security::Signer.new PRIVATE_KEY, [PUBLIC_CERT]
112122

113-
@tar_writer.add_file_signed 'x', 0644, signer do |io|
114-
io.write 'a' * 10
115-
end
123+
Time.stub :now, Time.at(1458518157) do
124+
@tar_writer.add_file_signed 'x', 0644, signer do |io|
125+
io.write 'a' * 10
126+
end
116127

117-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
118-
@io.string[0, 512])
128+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
129+
@io.string[0, 512])
119130

120-
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
131+
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
121132

122-
digest = signer.digest_algorithm.new
123-
digest.update 'a' * 10
133+
digest = signer.digest_algorithm.new
134+
digest.update 'a' * 10
124135

125-
signature = signer.sign digest.digest
136+
signature = signer.sign digest.digest
126137

127-
assert_headers_equal(tar_file_header('x.sig', '', 0444, signature.length,
128-
Time.now),
129-
@io.string[1024, 512])
130-
assert_equal "#{signature}#{"\0" * (512 - signature.length)}",
131-
@io.string[1536, 512]
138+
assert_headers_equal(tar_file_header('x.sig', '', 0444, signature.length,
139+
Time.now),
140+
@io.string[1024, 512])
141+
assert_equal "#{signature}#{"\0" * (512 - signature.length)}",
142+
@io.string[1536, 512]
132143

133-
assert_equal 2048, @io.pos
144+
assert_equal 2048, @io.pos
145+
end
134146
end
135147

136148
def test_add_file_signer_empty
137149
signer = Gem::Security::Signer.new nil, nil
138150

139-
@tar_writer.add_file_signed 'x', 0644, signer do |io|
140-
io.write 'a' * 10
141-
end
151+
Time.stub :now, Time.at(1458518157) do
152+
@tar_writer.add_file_signed 'x', 0644, signer do |io|
153+
io.write 'a' * 10
154+
end
142155

143-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
144-
@io.string[0, 512])
156+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
157+
@io.string[0, 512])
158+
end
145159
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
146160

147161
assert_equal 1024, @io.pos
148162
end
149163

150164
def test_add_file_simple
151-
@tar_writer.add_file_simple 'x', 0644, 10 do |io|
152-
io.write "a" * 10
153-
end
165+
Time.stub :now, Time.at(1458518157) do
166+
@tar_writer.add_file_simple 'x', 0644, 10 do |io|
167+
io.write "a" * 10
168+
end
154169

155-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
156-
@io.string[0, 512])
170+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.now),
171+
@io.string[0, 512])
157172

158-
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
159-
assert_equal 1024, @io.pos
173+
assert_equal "aaaaaaaaaa#{"\0" * 502}", @io.string[512, 512]
174+
assert_equal 1024, @io.pos
175+
end< F438 /div>
160176
end
161177

162178
def test_add_file_simple_source_date_epoch
163179
ENV["SOURCE_DATE_EPOCH"] = "123456789"
164-
@tar_writer.add_file_simple 'x', 0644, 10 do |io|
165-
io.write "a" * 10
166-
end
180+
Time.stub :now, Time.at(1458518157) do
181+
@tar_writer.add_file_simple 'x', 0644, 10 do |io|
182+
io.write "a" * 10
183+
end
167184

168-
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
169-
@io.string[0, 512])
185+
assert_headers_equal(tar_file_header('x', '', 0644, 10, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
186+
@io.string[0, 512])
187+
end
170188
end
171189

172190
def test_add_file_simple_padding
173-
@tar_writer.add_file_simple 'x', 0, 100
191+
Time.stub :now, Time.at(1458518157) do
192+
@tar_writer.add_file_simple 'x', 0, 100
174193

175-
assert_headers_equal tar_file_header('x', '', 0, 100, Time.now),
176-
@io.string[0, 512]
194+
assert_headers_equal tar_file_header('x', '', 0, 100, Time.now),
195+
@io.string[0, 512]
196+
end
177197

178198
assert_equal "\0" * 512, @io.string[512, 512]
179199
end
@@ -226,20 +246,24 @@ def test_close
226246
end
227247

228248
def test_mkdir
229-
@tar_writer.mkdir 'foo', 0644
249+
Time.stub :now, Time.at(1458518157) do
250+
@tar_writer.mkdir 'foo', 0644
230251

231-
assert_headers_equal tar_dir_header('foo', '', 0644, Time.now),
232-
@io.string[0, 512]
252+
assert_headers_equal tar_dir_header('foo', '', 0644, Time.now),
253+
@io.string[0, 512]
233254

234-
assert_equal 512, @io.pos
255+
assert_equal 512, @io.pos
256+
end
235257
end
236258

237259
def test_mkdir_source_date_epoch
238260
ENV["SOURCE_DATE_EPOCH"] = "123456789"
239-
@tar_writer.mkdir 'foo', 0644
261+
Time.stub :now, Time.at(1458518157) do
262+
@tar_writer.mkdir 'foo', 0644
240263

241-
assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
242-
@io.string[0, 512]
264+
assert_headers_equal tar_dir_header('foo', '', 0644, Time.at(ENV["SOURCE_DATE_EPOCH"].to_i).utc),
265+
@io.string[0, 512]
266+
end
243267
end
244268

245269
def test_split_name

0 commit comments

Comments
 (0)
0