зеркало из https://github.com/github/ruby.git
[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:
Родитель
c11c8b69ea
Коммит
6711343d5a
|
@ -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")
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче