Skip to content

Commit 4553a25

Browse files
committed
Move compact index tests to test/lib directory
1 parent 10fbc55 commit 4553a25

5 files changed

Lines changed: 99 additions & 94 deletions

File tree

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# frozen_string_literal: true
2+
3+
module CompactIndexHelpers
4+
def build_version(**args)
5+
name = args.fetch(:name, "test_gem")
6+
number = args.fetch(:number, "1.0")
7+
CompactIndex::GemVersion.new(
8+
number,
9+
args[:platform],
10+
args.fetch(:checksum, "sum+#{name}+#{number}"),
11+
args.fetch(:info_checksum, "info+#{name}+#{number}"),
12+
args[:dependencies],
13+
args[:ruby_version],
14+
args[:rubygems_version]
15+
)
16+
end
17+
end
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
require "compact_index"
5+
6+
class CompactIndex::DependencyTest < ActiveSupport::TestCase
7+
context "#version_and_platform" do
8+
should "include platform for non-ruby platform" do
9+
dep = CompactIndex::Dependency.new("foo", "=1.0", "jruby", "abc")
10+
11+
assert_equal "=1.0-jruby", dep.version_and_platform
12+
end
13+
14+
should "exclude platform for ruby platform" do
15+
dep = CompactIndex::Dependency.new("foo", "=1.0", "ruby", "abc")
16+
17+
assert_equal "=1.0", dep.version_and_platform
18+
end
19+
end
20+
end
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
# frozen_string_literal: true
2+
3+
require "test_helper"
4+
require "compact_index"
5+
require "helpers/compact_index_helpers"
6+
7+
class CompactIndex::GemVersionTest < ActiveSupport::TestCase
8+
include CompactIndexHelpers
9+
10+
context "#<=>" do
11+
should "sort by number" do
12+
v1 = build_version(number: "1.0")
13+
v2 = build_version(number: "2.0")
14+
15+
assert_equal(-1, v1 <=> v2)
16+
assert_equal 1, v2 <=> v1
17+
end
18+
19+
should "sort by platform when numbers are equal" do
20+
v1 = build_version(number: "1.0", platform: "java")
21+
v2 = build_version(number: "1.0", platform: "ruby")
22+
23+
assert_equal(-1, v1 <=> v2)
24+
end
25+
26+
should "return zero for equal versions" do
27+
v1 = build_version(number: "1.0", platform: "ruby")
28+
v2 = build_version(number: "1.0", platform: "ruby")
29+
30+
assert_equal 0, v1 <=> v2
31+
end
32+
end
33+
end

test/unit/compact_index_versions_file_test.rb renamed to test/lib/compact_index/versions_file_test.rb

Lines changed: 25 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22

33
require "test_helper"
44
require "compact_index"
5+
require "helpers/compact_index_helpers"
6+
7+
class CompactIndex::VersionsFileTest < ActiveSupport::TestCase
8+
include CompactIndexHelpers
59

6-
class CompactIndexVersionsFileTest < ActiveSupport::TestCase
710
setup do
811
@file_contents = "gem1 1.1,1.2\ngem2 2.1,2.1-jruby\n"
912
@file = Tempfile.new("versions.list")
@@ -17,9 +20,16 @@ class CompactIndexVersionsFileTest < ActiveSupport::TestCase
1720
end
1821

1922
context "#create" do
23+
setup do
24+
@create_file = Tempfile.new("create_versions.list")
25+
@create_versions_file = CompactIndex::VersionsFile.new(@create_file.path)
26+
end
27+
28+
teardown do
29+
@create_file&.unlink
30+
end
31+
2032
should "write one line per gem" do
21-
file = Tempfile.new("create_versions.list")
22-
versions_file = CompactIndex::VersionsFile.new(file.path)
2333
gem2_versions = [
2434
build_version(name: "gem2", number: "1.0.1"),
2535
build_version(name: "gem2", number: "1.0.2", platform: "arch")
@@ -30,48 +40,42 @@ class CompactIndexVersionsFileTest < ActiveSupport::TestCase
3040
]
3141

3242
freeze_time do
33-
versions_file.create(gems)
43+
@create_versions_file.create(gems)
3444
expected = "created_at: #{Time.now.iso8601}\n---\n" \
3545
"gem2 1.0.1,1.0.2-arch info+gem2+1.0.2\n" \
3646
"gem5 1.0.1 info+gem5+1.0.1\n"
3747

38-
assert_equal expected, file.open.read
48+
assert_equal expected, @create_file.open.read
3949
end
4050
end
4151

4252
should "add the date on top" do
43-
file = Tempfile.new("create_versions.list")
44-
versions_file = CompactIndex::VersionsFile.new(file.path)
4553
gems = [CompactIndex::Gem.new("gem1", [build_version])]
4654

4755
freeze_time do
48-
versions_file.create(gems)
56+
@create_versions_file.create(gems)
4957

50-
assert file.open.read.start_with?("created_at: #{Time.now.iso8601}\n")
58+
assert @create_file.open.read.start_with?("created_at: #{Time.now.iso8601}\n")
5159
end
5260
end
5361

5462
should "order gems by name" do
55-
file = Tempfile.new("versions-sort")
56-
versions_file = CompactIndex::VersionsFile.new(file.path)
5763
gems = [
5864
CompactIndex::Gem.new("gem_b", [build_version]),
5965
CompactIndex::Gem.new("gem_a", [build_version])
6066
]
6167

6268
freeze_time do
63-
versions_file.create(gems)
69+
@create_versions_file.create(gems)
6470
expected = "created_at: #{Time.now.iso8601}\n---\n" \
6571
"gem_a 1.0 info+test_gem+1.0\n" \
6672
"gem_b 1.0 info+test_gem+1.0\n"
6773

68-
assert_equal expected, file.open.read
74+
assert_equal expected, @create_file.open.read
6975
end
7076
end
7177

7278
should "use the given version order" do
73-
file = Tempfile.new("versions-sort")
74-
versions_file = CompactIndex::VersionsFile.new(file.path)
7579
versions = [
7680
build_version(number: "1.3.0"),
7781
build_version(number: "2.2"),
@@ -80,18 +84,16 @@ class CompactIndexVersionsFileTest < ActiveSupport::TestCase
8084
build_version(number: "2.1.2")
8185
]
8286
gems = [CompactIndex::Gem.new("test", versions)]
83-
versions_file.create(gems)
87+
@create_versions_file.create(gems)
8488

85-
assert_includes file.open.read, "test 1.3.0,2.2,1.1.1,1.1.1,2.1.2 info+test_gem+2.1.2"
89+
assert_includes @create_file.open.read, "test 1.3.0,2.2,1.1.1,1.1.1,2.1.2 info+test_gem+2.1.2"
8690
end
8791

8892
should "use a custom timestamp when provided" do
89-
file = Tempfile.new("create_versions.list")
90-
versions_file = CompactIndex::VersionsFile.new(file.path)
9193
ts = Time.new(1999, 9, 9).iso8601
92-
versions_file.create([], ts)
94+
@create_versions_file.create([], ts)
9395

94-
assert file.open.read.start_with?("created_at: #{ts}")
96+
assert @create_file.open.read.start_with?("created_at: #{ts}")
9597
end
9698
end
9799

@@ -111,6 +113,8 @@ class CompactIndexVersionsFileTest < ActiveSupport::TestCase
111113
versions_file = CompactIndex::VersionsFile.new(file.path)
112114

113115
assert_equal DateTime.parse("2015-08-23T17:22:53-07:00"), versions_file.updated_at
116+
ensure
117+
file&.unlink
114118
end
115119
end
116120

@@ -157,20 +161,4 @@ class CompactIndexVersionsFileTest < ActiveSupport::TestCase
157161
@versions_file.contents(gems, calculate_info_checksums: true))
158162
end
159163
end
160-
161-
private
162-
163-
def build_version(**args)
164-
name = args.fetch(:name, "test_gem")
165-
number = args.fetch(:number, "1.0")
166-
CompactIndex::GemVersion.new(
167-
number,
168-
args[:platform],
169-
args.fetch(:checksum, "sum+#{name}+#{number}"),
170-
args.fetch(:info_checksum, "info+#{name}+#{number}"),
171-
args[:dependencies],
172-
args[:ruby_version],
173-
args[:rubygems_version]
174-
)
175-
end
176164
end
Lines changed: 4 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
require "test_helper"
44
require "compact_index"
5+
require "helpers/compact_index_helpers"
6+
7+
class CompactIndexTest < ActiveSupport::TestCase
8+
include CompactIndexHelpers
59

6-
# Named CompactIndexLibTest to avoid superclass mismatch with
7-
# CompactIndexTest < ActionDispatch::IntegrationTest in test/integration/api/compact_index_test.rb
8-
class CompactIndexLibTest < ActiveSupport::TestCase
910
context ".names" do
1011
should "return the gem list for one gem name" do
1112
assert_equal "---\ngem\n", CompactIndex.names(["gem"])
@@ -121,58 +122,4 @@ class CompactIndexLibTest < ActiveSupport::TestCase
121122
assert_equal "---\n1.0.1-jruby |checksum:sum+test_gem+1.0.1\n", CompactIndex.info(param)
122123
end
123124
end
124-
125-
context "GemVersion#<=>" do
126-
should "sort by number" do
127-
v1 = build_version(number: "1.0")
128-
v2 = build_version(number: "2.0")
129-
130-
assert_equal(-1, v1 <=> v2)
131-
assert_equal 1, v2 <=> v1
132-
end
133-
134-
should "sort by platform when numbers are equal" do
135-
v1 = build_version(number: "1.0", platform: "java")
136-
v2 = build_version(number: "1.0", platform: "ruby")
137-
138-
assert_equal(-1, v1 <=> v2)
139-
end
140-
141-
should "return zero for equal versions" do
142-
v1 = build_version(number: "1.0", platform: "ruby")
143-
v2 = build_version(number: "1.0", platform: "ruby")
144-
145-
assert_equal 0, v1 <=> v2
146-
end
147-
end
148-
149-
context "Dependency#version_and_platform" do
150-
should "include platform for non-ruby platform" do
151-
dep = CompactIndex::Dependency.new("foo", "=1.0", "jruby", "abc")
152-
153-
assert_equal "=1.0-jruby", dep.version_and_platform
154-
end
155-
156-
should "exclude platform for ruby platform" do
157-
dep = CompactIndex::Dependency.new("foo", "=1.0", "ruby", "abc")
158-
159-
assert_equal "=1.0", dep.version_and_platform
160-
end
161-
end
162-
163-
private
164-
165-
def build_version(**args)
166-
name = args.fetch(:name, "test_gem")
167-
number = args.fetch(:number, "1.0")
168-
CompactIndex::GemVersion.new(
169-
number,
170-
args[:platform],
171-
args.fetch(:checksum, "sum+#{name}+#{number}"),
172-
args.fetch(:info_checksum, "info+#{name}+#{number}"),
173-
args[:dependencies],
174-
args[:ruby_version],
175-
args[:rubygems_version]
176-
)
177-
end
178125
end

0 commit comments

Comments
 (0)