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/bundler/definition_spec.rb b/spec/bundler/bundler/definition_spec.rb index 38b37570fe..8736fef060 100644 --- a/spec/bundler/bundler/definition_spec.rb +++ b/spec/bundler/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)}"