diff options
author | Carl Lerche <carllerche@mac.com> | 2010-07-06 17:27:50 -0700 |
---|---|---|
committer | Carl Lerche <carllerche@mac.com> | 2010-07-06 17:29:15 -0700 |
commit | c0e5a90023651d2b97d42e0c64c13f5aff27bc1e (patch) | |
tree | ad8fbe021cc6ab53565504aba8a3ce0890dc1641 | |
parent | d0db5869bb3489eda49fbbe901c0455e43669fcf (diff) | |
download | bundler-c0e5a90023651d2b97d42e0c64c13f5aff27bc1e.tar.gz |
Don't add duplicate gemspecs to the lock file
-rw-r--r-- | lib/bundler/spec_set.rb | 9 | ||||
-rw-r--r-- | spec/lock/flex_spec.rb | 30 |
2 files changed, 36 insertions, 3 deletions
diff --git a/lib/bundler/spec_set.rb b/lib/bundler/spec_set.rb index 36faf1a6d5..263f56fb4b 100644 --- a/lib/bundler/spec_set.rb +++ b/lib/bundler/spec_set.rb @@ -92,7 +92,12 @@ module Bundler end def merge(set) - SpecSet.new(sorted + set.to_a) + arr = sorted.dup + set.each do |s| + next if arr.any? { |s2| s2.name == s.name && s2.version == s.version && s2.platform == s.platform } + arr << s + end + SpecSet.new(arr) end private @@ -126,4 +131,4 @@ module Bundler end end end -end
\ No newline at end of file +end diff --git a/spec/lock/flex_spec.rb b/spec/lock/flex_spec.rb index 84a900f78a..dfece0cd89 100644 --- a/spec/lock/flex_spec.rb +++ b/spec/lock/flex_spec.rb @@ -465,4 +465,32 @@ describe "the lockfile format" do platform_specific G end -end
\ No newline at end of file + + it "does not add duplicate gems" do + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + G + + install_gemfile <<-G + source "file://#{gem_repo1}" + gem "rack" + gem "activesupport" + G + + lockfile_should_be <<-G + GEM + remote: file:#{gem_repo1}/ + specs: + activesupport (2.3.5) + rack (1.0.0) + + PLATFORMS + ruby + + DEPENDENCIES + activesupport + rack + G + end +end |