[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 коммит произвёл SHIBATA Hiroshi
Родитель c11c8b69ea
Коммит 6711343d5a
2 изменённых файлов: 50 добавлений и 1 удалений

Просмотреть файл

@ -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"]

Просмотреть файл

@ -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")