Skip to content

Commit 86e960d

Browse files
hsbtclaude
andcommitted
Fix tests for created_at in compact index output
The compact index info endpoint now includes created_at timestamps, so the expected output in tests needs to account for this by dynamically including each version's created_at value. Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
1 parent dccc2fb commit 86e960d

3 files changed

Lines changed: 34 additions & 22 deletions

File tree

test/integration/api/compact_index_test.rb

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,8 @@ def digest(body)
1414

1515
setup do
1616
@rubygem2 = create(:rubygem, name: "gemB")
17-
@version = create(:version, rubygem: @rubygem2, number: "1.0.0", info_checksum: "qw2dwe")
17+
@version = create(:version, rubygem: @rubygem2, number: "1.0.0", info_checksum: "qw2dwe",
18+
created_at: 1.day.ago)
1819

1920
# another gem
2021
rubygem = create(:rubygem, name: "gemA")
@@ -26,14 +27,16 @@ def digest(body)
2627
rubygem: rubygem,
2728
number: "1.0.0",
2829
info_checksum: "013we2",
29-
required_ruby_version: nil)
30+
required_ruby_version: nil,
31+
created_at: Time.utc(2024, 1, 1))
3032

3133
# version with deps but no ruby or rubygems requirements
3234
version = create(:version,
3335
rubygem: rubygem,
3436
number: "2.0.0",
3537
info_checksum: "1cf94r",
36-
required_ruby_version: nil)
38+
required_ruby_version: nil,
39+
created_at: Time.utc(2024, 1, 2))
3740
create(:dependency, rubygem: dep1, version: version)
3841

3942
# version with required ruby and rubygems version
@@ -42,14 +45,16 @@ def digest(body)
4245
number: "1.2.0",
4346
info_checksum: "13q4es",
4447
required_rubygems_version: ">1.9",
45-
required_ruby_version: ">= 2.0.0")
48+
required_ruby_version: ">= 2.0.0",
49+
created_at: Time.utc(2024, 1, 3))
4650

4751
# version with everything
4852
version = create(:version,
4953
rubygem: rubygem,
5054
number: "2.1.0",
5155
info_checksum: "e217fz",
52-
required_rubygems_version: ">=2.0")
56+
required_rubygems_version: ">=2.0",
57+
created_at: Time.utc(2024, 1, 4))
5358

5459
create(:dependency, rubygem: dep1, version: version)
5560
create(:dependency, rubygem: dep2, version: version)
@@ -149,10 +154,10 @@ def digest(body)
149154
test "/info with existing gem" do
150155
expected = <<~VERSIONS_FILE
151156
---
152-
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3
153-
2.0.0 gemA1:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3
154-
1.2.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>1.9
155-
2.1.0 gemA1:= 1.0.0,gemA2:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>=2.0
157+
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3,created_at:2024-01-01T00:00:00Z
158+
2.0.0 gemA1:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3,created_at:2024-01-02T00:00:00Z
159+
1.2.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>1.9,created_at:2024-01-03T00:00:00Z
160+
2.1.0 gemA1:= 1.0.0,gemA2:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>=2.0,created_at:2024-01-04T00:00:00Z
156161
VERSIONS_FILE
157162
expected_digest = digest(expected)
158163

@@ -174,10 +179,10 @@ def digest(body)
174179
test "/info partial response" do
175180
expected = <<~VERSIONS_FILE
176181
---
177-
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3
178-
2.0.0 gemA1:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3
179-
1.2.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>1.9
180-
2.1.0 gemA1:= 1.0.0,gemA2:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>=2.0
182+
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3,created_at:2024-01-01T00:00:00Z
183+
2.0.0 gemA1:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,rubygems:>= 2.6.3,created_at:2024-01-02T00:00:00Z
184+
1.2.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>1.9,created_at:2024-01-03T00:00:00Z
185+
2.1.0 gemA1:= 1.0.0,gemA2:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>=2.0,created_at:2024-01-04T00:00:00Z
181186
VERSIONS_FILE
182187

183188
get info_path(gem_name: "gemA"), env: { range: "bytes=159-" }
@@ -188,11 +193,12 @@ def digest(body)
188193

189194
test "/info with new gem" do
190195
rubygem = create(:rubygem, name: "gemC")
191-
version = create(:version, rubygem: rubygem, number: "1.0.0", info_checksum: "65ea0d")
196+
version = create(:version, rubygem: rubygem, number: "1.0.0", info_checksum: "65ea0d",
197+
created_at: Time.utc(2024, 2, 1))
192198
create(:dependency, :development, version: version, rubygem: @rubygem2)
193199
expected = <<~VERSIONS_FILE
194200
---
195-
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3
201+
1.0.0 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3,created_at:2024-02-01T00:00:00Z
196202
VERSIONS_FILE
197203
expected_digest = digest(expected)
198204

@@ -234,7 +240,7 @@ def digest(body)
234240

235241
expected = <<~VERSIONS_FILE
236242
---
237-
1.0.0 aaab:>= 0,aaab:~> 0.2,bbcc:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3
243+
1.0.0 aaab:>= 0,aaab:~> 0.2,bbcc:= 1.0.0|checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3,created_at:#{@version.created_at.utc.iso8601}
238244
VERSIONS_FILE
239245
expected_digest = digest(expected)
240246

test/integration/push_test.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,16 +49,20 @@ class PushTest < ActionDispatch::IntegrationTest
4949

5050
assert_response :success, response.body
5151

52+
sigstore = Rubygem.find_by!(name: "sigstore")
53+
v001 = sigstore.versions.find_by(number: "0.0.1")
54+
v100 = sigstore.versions.find_by(number: "1.0.0")
55+
5256
get info_path("sigstore")
5357
info_file = response.body
5458

5559
assert_response :success
5660
assert_equal <<~INFO, info_file
5761
---
58-
0.0.1 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3
59-
1.0.0 |checksum:#{Digest::SHA256.hexdigest File.binread(gem_file('sigstore-1.0.0.gem'))}
62+
0.0.1 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3,created_at:#{v001.created_at.utc.iso8601}
63+
1.0.0 |checksum:#{Digest::SHA256.hexdigest File.binread(gem_file('sigstore-1.0.0.gem'))},created_at:#{v100.created_at.utc.iso8601}
6064
INFO
61-
assert_equal Digest::MD5.hexdigest(info_file), Rubygem.find_by!(name: "sigstore").versions.find_by(number: "1.0.0").info_checksum
65+
assert_equal Digest::MD5.hexdigest(info_file), v100.info_checksum
6266

6367
get api_v2_rubygem_version_path("sigstore", "1.0.0", format: "json")
6468

@@ -92,10 +96,12 @@ class PushTest < ActionDispatch::IntegrationTest
9296

9397
assert page.has_css?(css, count: 2)
9498

95-
assert_equal Digest::MD5.hexdigest(<<~INFO), Rubygem.find_by!(name: "sandworm").versions.sole.info_checksum
99+
version = Rubygem.find_by!(name: "sandworm").versions.sole
100+
expected_info = <<~INFO
96101
---
97-
1.0.0 |checksum:#{Digest::SHA256.hexdigest gem_io.string}
102+
1.0.0 |checksum:#{Digest::SHA256.hexdigest gem_io.string},created_at:#{version.created_at.utc.iso8601}
98103
INFO
104+
assert_equal Digest::MD5.hexdigest(expected_info), version.info_checksum
99105
end
100106

101107
test "push a new version of a gem" do

test/jobs/upload_info_file_job_test.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ class UploadInfoFileJobTest < ActiveJob::TestCase
1414

1515
content = <<~INFO
1616
---
17-
0.0.1 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3
17+
0.0.1 |checksum:b5d4045c3f466fa91fe2cc6abe79232a1a57cdf104f7a26e716e0a1e2789df78,ruby:>= 2.0.0,rubygems:>= 2.6.3,created_at:#{version.created_at.utc.iso8601}
1818
INFO
1919

2020
assert_equal content, RubygemFs.compact_index.get("info/#{version.rubygem.name}")

0 commit comments

Comments
 (0)