Skip to content

Commit 26811fe

Browse files
committed
handle lockfile having negative patchlevels coming from Gemfile.lock
1 parent 3ba4149 commit 26811fe

File tree

3 files changed

+12
-4
lines changed

3 files changed

+12
-4
lines changed

lib/language_pack/helpers/bundler_wrapper.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def ruby_version
100100
if output.match(/No ruby version specified/)
101101
""
102102
else
103-
output.chomp.sub('(', '').sub(')', '').sub(/(p\d+)/, ' \1').split.join('-')
103+
output.chomp.sub('(', '').sub(')', '').sub(/(p-?\d+)/, ' \1').split.join('-')
104104
end
105105
end
106106
end

lib/language_pack/ruby_version.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def initialize(output = "")
1818
LEGACY_VERSION = "ruby-#{LEGACY_VERSION_NUMBER}"
1919
RUBY_VERSION_REGEX = %r{
2020
(?<ruby_version>\d+\.\d+\.\d+){0}
21-
(?<patchlevel>p\d+){0}
21+
(?<patchlevel>p-?\d+){0}
2222
(?<engine>\w+){0}
2323
(?<engine_version>.+){0}
2424
@@ -35,12 +35,12 @@ def initialize(bundler_output, app = {})
3535
set_version
3636
parse_version
3737

38-
@version_without_patchlevel = @version.sub(/-p[\d]+/, '')
38+
@version_without_patchlevel = @version.sub(/-p-?\d+/, '')
3939
end
4040

4141
# https://github.com/bundler/bundler/issues/4621
4242
def version_for_download
43-
if patchlevel_is_significant?
43+
if patchlevel_is_significant? && @patchlevel.sub(/p/, '').to_i >= 0
4444
@version
4545
else
4646
version_without_patchlevel

spec/helpers/ruby_version_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,14 @@
2828
end
2929
end
3030

31+
it "does not include patchlevels when the patchlevel is negative for download" do
32+
ruby_version = LanguagePack::RubyVersion.new("ruby-2.0.0-p-1")
33+
expect(ruby_version.version_for_download).to eq("ruby-2.0.0")
34+
35+
ruby_version = LanguagePack::RubyVersion.new("ruby-2.4.0-p-1")
36+
expect(ruby_version.version_for_download).to eq("ruby-2.4.0")
37+
end
38+
3139
it "correctly sets ruby version for bundler specified versions" do
3240
Hatchet::App.new("mri_193").in_directory do |dir|
3341
ruby_version = LanguagePack::RubyVersion.new(@bundler.install.ruby_version, is_new: true)

0 commit comments

Comments
 (0)