1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

[bundler/bundler] Fix inconsistent lockfile order

When Gemfile would specify path sources as relative paths starting with
"./", the lockfile would have inconsistent order on `bundle install` and
`bundle update`.

https://github.com/bundler/bundler/commit/c7532ced89
This commit is contained in:
David Rodríguez 2019-07-24 19:46:19 +02:00 committed by SHIBATA Hiroshi
parent c11c8b69ea
commit 6711343d5a
Notes: git 2019-08-31 04:40:14 +09:00
2 changed files with 50 additions and 1 deletions

View file

@ -24,7 +24,12 @@ module Bundler
if options["path"]
@path = Pathname.new(options["path"])
@path = expand(@path) unless @path.relative?
expanded_path = expand(@path)
@path = if @path.relative?
expanded_path.relative_path_from(root_path.expand_path)
else
expanded_path
end
end
@name = options["name"]

View file

@ -83,6 +83,50 @@ RSpec.describe "bundle install with explicit source paths" do
end
end
it "sorts paths consistently on install and update when they start with ./" do
build_lib "demo", :path => lib_path("demo")
build_lib "aaa", :path => lib_path("demo/aaa")
gemfile = <<-G
gemspec
gem "aaa", :path => "./aaa"
G
File.open(lib_path("demo/Gemfile"), "w") {|f| f.puts gemfile }
lockfile = <<~L
PATH
remote: .
specs:
demo (1.0)
PATH
remote: aaa
specs:
aaa (1.0)
GEM
specs:
PLATFORMS
#{lockfile_platforms}
DEPENDENCIES
aaa!
demo!
BUNDLED WITH
#{Bundler::VERSION}
L
Dir.chdir(lib_path("demo")) do
bundle :install
expect(lib_path("demo/Gemfile.lock")).to have_lockfile(lockfile)
bundle :update, :all => true
expect(lib_path("demo/Gemfile.lock")).to have_lockfile(lockfile)
end
end
it "expands paths when comparing locked paths to Gemfile paths" do
build_lib "foo", :path => bundled_app("foo-1.0")