summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Rodríguez <deivid.rodriguez@riseup.net>2019-06-18 14:36:58 +0200
committerDavid Rodríguez <deivid.rodriguez@riseup.net>2019-06-25 12:19:26 +0200
commit7da2bf75f506756d860ecca9d3501a01556e1054 (patch)
tree5225af231b1c724b121845a458683562e39399db
parent547975644e93d1c421a468ab5e2396b5b953158b (diff)
downloadbundler-7da2bf75f506756d860ecca9d3501a01556e1054.tar.gz
Don't re-resolve locked platform specific gems
-rw-r--r--lib/bundler/definition.rb2
-rw-r--r--spec/bundler/definition_spec.rb28
2 files changed, 29 insertions, 1 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 4664eec24d..079f3ddbb5 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -813,7 +813,7 @@ module Bundler
resolve = SpecSet.new(converged)
expanded_deps = expand_dependencies(deps, true)
- @locked_specs_incomplete_for_platform = !resolve.for(expanded_deps, @unlock[:gems], true, true)
+ @locked_specs_incomplete_for_platform = !resolve.for(expand_dependencies(deps), @unlock[:gems], true, true)
resolve = resolve.for(expanded_deps, @unlock[:gems], false, false, false)
diff = nil
diff --git a/spec/bundler/definition_spec.rb b/spec/bundler/definition_spec.rb
index 38b37570fe..8736fef060 100644
--- a/spec/bundler/definition_spec.rb
+++ b/spec/bundler/definition_spec.rb
@@ -147,6 +147,34 @@ RSpec.describe Bundler::Definition do
G
end
+ it "for a locked gem for another platform" do
+ install_gemfile <<-G
+ source "#{file_uri_for(gem_repo1)}"
+ gem "only_java", platform: :jruby
+ G
+
+ bundle "lock --add-platform java"
+ bundle :check, :env => { "DEBUG" => 1 }
+
+ expect(out).to match(/using resolution from the lockfile/)
+ lockfile_should_be <<-G
+ GEM
+ remote: #{file_uri_for(gem_repo1)}/
+ specs:
+ only_java (1.1-java)
+
+ PLATFORMS
+ java
+ #{lockfile_platforms}
+
+ DEPENDENCIES
+ only_java
+
+ BUNDLED WITH
+ #{Bundler::VERSION}
+ G
+ end
+
it "for a rubygems gem" do
install_gemfile <<-G
source "#{file_uri_for(gem_repo1)}"