summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Moore <tmoore@incrementalism.net>2015-02-22 15:39:58 +1100
committerTim Moore <tmoore@incrementalism.net>2015-02-22 15:39:58 +1100
commitd0a21a0563c9fb7061ac98a30277157bc9160116 (patch)
tree4f55ae19fee2533de1518532289b92ef0b7df3ad
parent90fc4ca5de032adf4de849034d44be0418addb34 (diff)
downloadbundler-d0a21a0563c9fb7061ac98a30277157bc9160116.tar.gz
Fix source unlocking with multiple sources.
Fixes #3414 & #3417.
-rw-r--r--lib/bundler/definition.rb11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 59f8a69d77..4c15866577 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -406,11 +406,18 @@ module Bundler
if locked
unlocking = @locked_specs.any? do |locked_spec|
- locked_spec.source != locked
+ locked_spec.source.class == locked.class && locked_spec.source != locked
end
end
- !locked || unlocking || source.specs != locked.specs
+ !locked || unlocking || dependencies_for_source_changed?(locked) || source.specs != locked.specs
+ end
+
+ def dependencies_for_source_changed?(source)
+ deps_for_source = @dependencies.select { |s| s.source == source }
+ locked_deps_for_source = @locked_deps.select { |s| s.source == source }
+
+ deps_for_source != locked_deps_for_source
end
# Get all locals and override their matching sources.