summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Giddins <segiddins@segiddins.me>2017-04-13 00:28:14 -0500
committerSamuel Giddins <segiddins@segiddins.me>2017-04-13 20:40:29 -0500
commitd9bcd5df7d8253be3722d1edacab15578dc3ddcf (patch)
treea7aa7d4fc59b125da3e20ccb0171cd0957f11be7
parent2c8f56dccb2b348ff4edda45a52c142259f63fc4 (diff)
downloadbundler-d9bcd5df7d8253be3722d1edacab15578dc3ddcf.tar.gz
[SpecSet] Dont allow deps to silently go unsatisfied
-rw-r--r--lib/bundler/definition.rb2
-rw-r--r--lib/bundler/spec_set.rb6
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/bundler/definition.rb b/lib/bundler/definition.rb
index 5dca425c7e..d974fb8cc5 100644
--- a/lib/bundler/definition.rb
+++ b/lib/bundler/definition.rb
@@ -775,7 +775,7 @@ module Bundler
end
resolve = SpecSet.new(converged)
- resolve = resolve.for(expand_dependencies(deps, true), @unlock[:gems])
+ resolve = resolve.for(expand_dependencies(deps, true), @unlock[:gems], false, false, false)
diff = nil
# Now, we unlock any sources that do not have anymore gems pinned to it
diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb
index f3826beaa5..67bbe3060c 100644
--- a/lib/bundler/spec_set.rb
+++ b/lib/bundler/spec_set.rb
@@ -14,7 +14,7 @@ module Bundler
@specs = specs.sort_by(&:name)
end
- def for(dependencies, skip = [], check = false, match_current_platform = false)
+ def for(dependencies, skip = [], check = false, match_current_platform = false, raise_on_missing = true)
handled = {}
deps = dependencies.dup
specs = []
@@ -36,6 +36,8 @@ module Bundler
end
elsif check
return false
+ elsif raise_on_missing
+ raise "Unable to find a spec satisfying #{dep} in the set. Perhaps the lockfile is corrupted?"
end
end
@@ -75,7 +77,7 @@ module Bundler
end
def materialize(deps, missing_specs = nil)
- materialized = self.for(deps, [], false, true).to_a
+ materialized = self.for(deps, [], false, true, missing_specs).to_a
deps = materialized.map(&:name).uniq
materialized.map! do |s|
next s unless s.is_a?(LazySpecification)