WARNING: THIS SITE IS A MIRROR OF GITHUB.COM / IT CANNOT LOGIN OR REGISTER ACCOUNTS / THE CONTENTS ARE PROVIDED AS-IS / THIS SITE ASSUMES NO RESPONSIBILITY FOR ANY DISPLAYED CONTENT OR LINKS / IF YOU FOUND SOMETHING MAY NOT GOOD FOR EVERYONE, CONTACT ADMIN AT ilovescratch@foxmail.com
Skip to content

Commit ce8a794

Browse files
authored
Merge pull request #26 from rubygems/multi-requirements
Update info line to join multiple ruby or rubygems requirements by ampersand
2 parents f2261ac + e5bb61a commit ce8a794

File tree

2 files changed

+25
-3
lines changed

2 files changed

+25
-3
lines changed

lib/compact_index/gem_version.rb

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,18 +24,30 @@ def <=>(other)
2424

2525
def to_line
2626
line = number_and_platform.dup << " " << deps_line << "|checksum:#{checksum}"
27-
line << ",ruby:#{ruby_version}" if ruby_version && ruby_version != ">= 0"
28-
line << ",rubygems:#{rubygems_version}" if rubygems_version && rubygems_version != ">= 0"
27+
line << ",ruby:#{ruby_version_line}" if ruby_version && ruby_version != ">= 0"
28+
line << ",rubygems:#{rubygems_version_line}" if rubygems_version && rubygems_version != ">= 0"
2929
line
3030
end
3131

3232
private
3333

34+
def ruby_version_line
35+
join_multiple(ruby_version)
36+
end
37+
38+
def rubygems_version_line
39+
join_multiple(rubygems_version)
40+
end
41+
3442
def deps_line
3543
return "" if dependencies.nil?
3644
dependencies.map do |d|
37-
[d[:gem], d.version_and_platform.split(", ").sort.join("&")].join(":")
45+
[d[:gem], join_multiple(d.version_and_platform)].join(":")
3846
end.join(",")
3947
end
48+
49+
def join_multiple(requirements)
50+
requirements.gsub(/[[:space:]]/, "").split(",").sort.join("&")
51+
end
4052
end
4153
end

spec/compact_index_spec.rb

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,11 +93,21 @@
9393
expect(CompactIndex.info(param)).to eq("---\n1.0.1 |checksum:sum+test_gem+1.0.1,ruby:>1.8\n")
9494
end
9595

96+
it "show ruby required version with multiple requirements" do
97+
param = [build_version(:number => "1.0.1", :ruby_version => "< 2.5, >=2.2")]
98+
expect(CompactIndex.info(param)).to eq("---\n1.0.1 |checksum:sum+test_gem+1.0.1,ruby:<2.5&>=2.2\n")
99+
end
100+
96101
it "show rubygems required version" do
97102
param = [build_version(:number => "1.0.1", :rubygems_version => "=2.0")]
98103
expect(CompactIndex.info(param)).to eq("---\n1.0.1 |checksum:sum+test_gem+1.0.1,rubygems:=2.0\n")
99104
end
100105

106+
it "show rubygems required version with multiple requirements" do
107+
param = [build_version(:number => "1.0.1", :rubygems_version => ">2.0, <3.1")]
108+
expect(CompactIndex.info(param)).to eq("---\n1.0.1 |checksum:sum+test_gem+1.0.1,rubygems:<3.1&>2.0\n")
109+
end
110+
101111
it "show both rubygems and ruby required versions" do
102112
param = [build_version(:number => "1.0.1", :ruby_version => ">1.9", :rubygems_version => ">2.0")]
103113
expect(CompactIndex.info(param)).to eq("---\n1.0.1 |checksum:sum+test_gem+1.0.1,ruby:>1.9,rubygems:>2.0\n")

0 commit comments

Comments
 (0)