bundler 1.7.15 → 1.8.0.pre

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of bundler might be problematic. Click here for more details.

Files changed (191) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +5 -14
  3. data/.rspec +1 -0
  4. data/.travis.yml +22 -15
  5. data/CHANGELOG.md +43 -13
  6. data/CODE_OF_CONDUCT.md +40 -0
  7. data/CONTRIBUTING.md +14 -12
  8. data/DEVELOPMENT.md +4 -2
  9. data/ISSUES.md +1 -1
  10. data/README.md +10 -14
  11. data/Rakefile +10 -10
  12. data/bin/bundle +1 -1
  13. data/bundler.gemspec +5 -4
  14. data/lib/bundler.rb +22 -3
  15. data/lib/bundler/anonymizable_uri.rb +24 -8
  16. data/lib/bundler/cli.rb +103 -66
  17. data/lib/bundler/cli/cache.rb +1 -0
  18. data/lib/bundler/cli/clean.rb +11 -4
  19. data/lib/bundler/cli/common.rb +2 -0
  20. data/lib/bundler/cli/console.rb +22 -26
  21. data/lib/bundler/cli/exec.rb +29 -22
  22. data/lib/bundler/cli/gem.rb +125 -37
  23. data/lib/bundler/cli/install.rb +22 -9
  24. data/lib/bundler/cli/outdated.rb +1 -1
  25. data/lib/bundler/cli/package.rb +8 -1
  26. data/lib/bundler/cli/show.rb +29 -3
  27. data/lib/bundler/cli/update.rb +2 -2
  28. data/lib/bundler/cli/viz.rb +1 -1
  29. data/lib/bundler/definition.rb +14 -22
  30. data/lib/bundler/dependency.rb +8 -1
  31. data/lib/bundler/dsl.rb +17 -4
  32. data/lib/bundler/endpoint_specification.rb +1 -1
  33. data/lib/bundler/env.rb +44 -25
  34. data/lib/bundler/fetcher.rb +33 -25
  35. data/lib/bundler/friendly_errors.rb +38 -5
  36. data/lib/bundler/gem_helper.rb +16 -10
  37. data/lib/bundler/gem_helpers.rb +1 -0
  38. data/lib/bundler/graph.rb +4 -1
  39. data/lib/bundler/index.rb +15 -25
  40. data/lib/bundler/installer.rb +6 -6
  41. data/lib/bundler/lockfile_parser.rb +7 -7
  42. data/lib/bundler/resolver.rb +2 -1
  43. data/lib/bundler/ruby_version.rb +1 -1
  44. data/lib/bundler/rubygems_ext.rb +1 -0
  45. data/lib/bundler/rubygems_integration.rb +1 -1
  46. data/lib/bundler/runtime.rb +22 -40
  47. data/lib/bundler/settings.rb +14 -5
  48. data/lib/bundler/setup.rb +2 -1
  49. data/lib/bundler/shared_helpers.rb +56 -4
  50. data/lib/bundler/source.rb +8 -9
  51. data/lib/bundler/source/git.rb +5 -1
  52. data/lib/bundler/source/git/git_proxy.rb +4 -0
  53. data/lib/bundler/source/path.rb +8 -11
  54. data/lib/bundler/source/path/installer.rb +0 -2
  55. data/lib/bundler/source/rubygems.rb +58 -72
  56. data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +13 -0
  57. data/lib/bundler/templates/newgem/LICENSE.txt.tt +17 -18
  58. data/lib/bundler/templates/newgem/README.md.tt +9 -1
  59. data/lib/bundler/templates/newgem/Rakefile.tt +2 -0
  60. data/lib/bundler/templates/newgem/bin/console.tt +14 -0
  61. data/lib/bundler/templates/newgem/bin/setup.tt +7 -0
  62. data/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
  63. data/lib/bundler/templates/newgem/gitignore.tt +2 -0
  64. data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +1 -1
  65. data/lib/bundler/templates/newgem/newgem.gemspec.tt +17 -13
  66. data/lib/bundler/templates/newgem/test/test_newgem.rb.tt +1 -1
  67. data/lib/bundler/ui/shell.rb +1 -1
  68. data/lib/bundler/version.rb +1 -1
  69. data/lib/bundler/worker.rb +73 -0
  70. data/man/bundle-config.ronn +17 -15
  71. data/man/bundle-install.ronn +102 -93
  72. data/man/bundle-update.ronn +39 -30
  73. data/man/bundle.ronn +6 -0
  74. data/man/gemfile.5.ronn +74 -13
  75. metadata +10 -231
  76. data/lib/bundler/parallel_workers.rb +0 -18
  77. data/lib/bundler/parallel_workers/thread_worker.rb +0 -30
  78. data/lib/bundler/parallel_workers/unix_worker.rb +0 -101
  79. data/lib/bundler/parallel_workers/worker.rb +0 -69
  80. data/lib/bundler/templates/newgem/bin/newgem.tt +0 -3
  81. data/spec/bundler/anonymizable_uri_spec.rb +0 -32
  82. data/spec/bundler/bundler_spec.rb +0 -72
  83. data/spec/bundler/cli_spec.rb +0 -16
  84. data/spec/bundler/definition_spec.rb +0 -22
  85. data/spec/bundler/dsl_spec.rb +0 -82
  86. data/spec/bundler/friendly_errors_spec.rb +0 -13
  87. data/spec/bundler/gem_helper_spec.rb +0 -226
  88. data/spec/bundler/psyched_yaml_spec.rb +0 -8
  89. data/spec/bundler/retry_spec.rb +0 -59
  90. data/spec/bundler/settings_spec.rb +0 -13
  91. data/spec/bundler/source/rubygems_spec.rb +0 -25
  92. data/spec/bundler/source_list_spec.rb +0 -361
  93. data/spec/cache/gems_spec.rb +0 -284
  94. data/spec/cache/git_spec.rb +0 -188
  95. data/spec/cache/path_spec.rb +0 -121
  96. data/spec/cache/platform_spec.rb +0 -57
  97. data/spec/commands/binstubs_spec.rb +0 -219
  98. data/spec/commands/check_spec.rb +0 -278
  99. data/spec/commands/clean_spec.rb +0 -592
  100. data/spec/commands/config_spec.rb +0 -263
  101. data/spec/commands/console_spec.rb +0 -76
  102. data/spec/commands/exec_spec.rb +0 -309
  103. data/spec/commands/help_spec.rb +0 -39
  104. data/spec/commands/init_spec.rb +0 -39
  105. data/spec/commands/inject_spec.rb +0 -78
  106. data/spec/commands/licenses_spec.rb +0 -18
  107. data/spec/commands/newgem_spec.rb +0 -428
  108. data/spec/commands/open_spec.rb +0 -68
  109. data/spec/commands/outdated_spec.rb +0 -156
  110. data/spec/commands/package_spec.rb +0 -114
  111. data/spec/commands/show_spec.rb +0 -125
  112. data/spec/install/binstubs_spec.rb +0 -24
  113. data/spec/install/bundler_spec.rb +0 -146
  114. data/spec/install/deploy_spec.rb +0 -250
  115. data/spec/install/gemfile/gemspec_spec.rb +0 -170
  116. data/spec/install/gemfile/git_spec.rb +0 -967
  117. data/spec/install/gemfile/path_spec.rb +0 -500
  118. data/spec/install/gemfile_spec.rb +0 -44
  119. data/spec/install/gems/c_ext_spec.rb +0 -48
  120. data/spec/install/gems/dependency_api_spec.rb +0 -652
  121. data/spec/install/gems/env_spec.rb +0 -107
  122. data/spec/install/gems/flex_spec.rb +0 -314
  123. data/spec/install/gems/groups_spec.rb +0 -308
  124. data/spec/install/gems/mirror_spec.rb +0 -39
  125. data/spec/install/gems/platform_spec.rb +0 -195
  126. data/spec/install/gems/post_install_spec.rb +0 -121
  127. data/spec/install/gems/resolving_spec.rb +0 -124
  128. data/spec/install/gems/simple_case_spec.rb +0 -377
  129. data/spec/install/gems/sources_spec.rb +0 -386
  130. data/spec/install/gems/standalone_spec.rb +0 -260
  131. data/spec/install/gems/sudo_spec.rb +0 -136
  132. data/spec/install/gems/win32_spec.rb +0 -26
  133. data/spec/install/gemspecs_spec.rb +0 -50
  134. data/spec/install/path_spec.rb +0 -150
  135. data/spec/install/post_bundle_message_spec.rb +0 -142
  136. data/spec/install/prereleases_spec.rb +0 -43
  137. data/spec/install/security_policy_spec.rb +0 -77
  138. data/spec/install/upgrade_spec.rb +0 -26
  139. data/spec/lock/git_spec.rb +0 -34
  140. data/spec/lock/lockfile_spec.rb +0 -924
  141. data/spec/other/bundle_ruby_spec.rb +0 -142
  142. data/spec/other/cli_dispatch_spec.rb +0 -21
  143. data/spec/other/ext_spec.rb +0 -60
  144. data/spec/other/platform_spec.rb +0 -1285
  145. data/spec/other/ssl_cert_spec.rb +0 -23
  146. data/spec/quality_spec.rb +0 -88
  147. data/spec/realworld/dependency_api_spec.rb +0 -60
  148. data/spec/realworld/edgecases_spec.rb +0 -212
  149. data/spec/realworld/parallel_spec.rb +0 -71
  150. data/spec/resolver/basic_spec.rb +0 -66
  151. data/spec/resolver/platform_spec.rb +0 -88
  152. data/spec/runtime/executable_spec.rb +0 -149
  153. data/spec/runtime/load_spec.rb +0 -107
  154. data/spec/runtime/platform_spec.rb +0 -90
  155. data/spec/runtime/require_spec.rb +0 -332
  156. data/spec/runtime/setup_spec.rb +0 -853
  157. data/spec/runtime/with_clean_env_spec.rb +0 -91
  158. data/spec/spec_helper.rb +0 -123
  159. data/spec/support/artifice/endopint_marshal_fail_basic_authentication.rb +0 -13
  160. data/spec/support/artifice/endpoint.rb +0 -71
  161. data/spec/support/artifice/endpoint_500.rb +0 -37
  162. data/spec/support/artifice/endpoint_api_forbidden.rb +0 -11
  163. data/spec/support/artifice/endpoint_api_missing.rb +0 -16
  164. data/spec/support/artifice/endpoint_basic_authentication.rb +0 -13
  165. data/spec/support/artifice/endpoint_creds_diff_host.rb +0 -38
  166. data/spec/support/artifice/endpoint_extra.rb +0 -31
  167. data/spec/support/artifice/endpoint_extra_api.rb +0 -32
  168. data/spec/support/artifice/endpoint_extra_missing.rb +0 -15
  169. data/spec/support/artifice/endpoint_fallback.rb +0 -17
  170. data/spec/support/artifice/endpoint_host_redirect.rb +0 -15
  171. data/spec/support/artifice/endpoint_marshal_fail.rb +0 -11
  172. data/spec/support/artifice/endpoint_redirect.rb +0 -15
  173. data/spec/support/artifice/endpoint_strict_basic_authentication.rb +0 -18
  174. data/spec/support/artifice/endpoint_timeout.rb +0 -13
  175. data/spec/support/builders.rb +0 -693
  176. data/spec/support/fakeweb/rack-1.0.0.marshal +0 -2
  177. data/spec/support/fakeweb/windows.rb +0 -23
  178. data/spec/support/hax.rb +0 -22
  179. data/spec/support/helpers.rb +0 -361
  180. data/spec/support/indexes.rb +0 -280
  181. data/spec/support/matchers.rb +0 -77
  182. data/spec/support/path.rb +0 -85
  183. data/spec/support/permissions.rb +0 -10
  184. data/spec/support/platforms.rb +0 -94
  185. data/spec/support/ruby_ext.rb +0 -20
  186. data/spec/support/rubygems_ext.rb +0 -39
  187. data/spec/support/streams.rb +0 -13
  188. data/spec/support/sudo.rb +0 -16
  189. data/spec/update/gems_spec.rb +0 -201
  190. data/spec/update/git_spec.rb +0 -283
  191. data/spec/update/path_spec.rb +0 -18
@@ -1,77 +0,0 @@
1
- module Spec
2
- module Matchers
3
- RSpec::Matchers.define :have_dep do |*args|
4
- dep = Bundler::Dependency.new(*args)
5
-
6
- match do |actual|
7
- actual.length == 1 && actual.all? { |d| d == dep }
8
- end
9
- end
10
-
11
- RSpec::Matchers.define :have_gem do |*args|
12
- match do |actual|
13
- actual.length == args.length && actual.all? { |a| args.include?(a.full_name) }
14
- end
15
- end
16
-
17
- RSpec::Matchers.define :have_rubyopts do |*args|
18
- args = args.flatten
19
- args = args.first.split(/\s+/) if args.size == 1
20
-
21
- #failure_message_for_should "Expected RUBYOPT to have options #{args.join(" ")}. It was #{ENV["RUBYOPT"]}"
22
-
23
- match do |actual|
24
- actual = actual.split(/\s+/) if actual.is_a?(String)
25
- args.all? {|arg| actual.include?(arg) } && actual.uniq.size == actual.size
26
- end
27
- end
28
-
29
- def should_be_installed(*names)
30
- opts = names.last.is_a?(Hash) ? names.pop : {}
31
- groups = Array(opts[:groups])
32
- groups << opts
33
- names.each do |name|
34
- name, version, platform = name.split(/\s+/)
35
- version_const = name == 'bundler' ? 'Bundler::VERSION' : Spec::Builders.constantize(name)
36
- run "require '#{name}.rb'; puts #{version_const}", *groups
37
- actual_version, actual_platform = out.split(/\s+/)
38
- expect(Gem::Version.new(actual_version)).to eq(Gem::Version.new(version))
39
- expect(actual_platform).to eq(platform)
40
- end
41
- end
42
-
43
- alias should_be_available should_be_installed
44
-
45
- def should_not_be_installed(*names)
46
- opts = names.last.is_a?(Hash) ? names.pop : {}
47
- groups = Array(opts[:groups]) || []
48
- names.each do |name|
49
- name, version = name.split(/\s+/)
50
- run <<-R, *(groups + [opts])
51
- begin
52
- require '#{name}'
53
- puts #{Spec::Builders.constantize(name)}
54
- rescue LoadError, NameError
55
- puts "WIN"
56
- end
57
- R
58
- if version.nil? || out == "WIN"
59
- expect(out).to eq("WIN")
60
- else
61
- expect(Gem::Version.new(out)).not_to eq(Gem::Version.new(version))
62
- end
63
- end
64
- end
65
-
66
- def should_be_locked
67
- expect(bundled_app("Gemfile.lock")).to exist
68
- end
69
-
70
- def lockfile_should_be(expected)
71
- should_be_locked
72
- spaces = expected[/\A\s+/, 0] || ""
73
- expected.gsub!(/^#{spaces}/, '')
74
- expect(bundled_app("Gemfile.lock").read).to eq(expected)
75
- end
76
- end
77
- end
@@ -1,85 +0,0 @@
1
- require 'pathname'
2
-
3
- module Spec
4
- module Path
5
- def root
6
- @root ||= Pathname.new(File.expand_path("../../..", __FILE__))
7
- end
8
-
9
- def tmp(*path)
10
- root.join("tmp", *path)
11
- end
12
-
13
- def home(*path)
14
- tmp.join("home", *path)
15
- end
16
-
17
- def default_bundle_path(*path)
18
- system_gem_path(*path)
19
- end
20
-
21
- def bundled_app(*path)
22
- root = tmp.join("bundled_app")
23
- FileUtils.mkdir_p(root)
24
- root.join(*path)
25
- end
26
-
27
- alias bundled_app1 bundled_app
28
-
29
- def bundled_app2(*path)
30
- root = tmp.join("bundled_app2")
31
- FileUtils.mkdir_p(root)
32
- root.join(*path)
33
- end
34
-
35
- def vendored_gems(path = nil)
36
- bundled_app(*["vendor/bundle", Gem.ruby_engine, Gem::ConfigMap[:ruby_version], path].compact)
37
- end
38
-
39
- def cached_gem(path)
40
- bundled_app("vendor/cache/#{path}.gem")
41
- end
42
-
43
- def base_system_gems
44
- tmp.join("gems/base")
45
- end
46
-
47
- def gem_repo1(*args)
48
- tmp("gems/remote1", *args)
49
- end
50
-
51
- def gem_repo_missing(*args)
52
- tmp("gems/missing", *args)
53
- end
54
-
55
- def gem_repo2(*args)
56
- tmp("gems/remote2", *args)
57
- end
58
-
59
- def gem_repo3(*args)
60
- tmp("gems/remote3", *args)
61
- end
62
-
63
- def gem_repo4(*args)
64
- tmp("gems/remote4", *args)
65
- end
66
-
67
- def security_repo(*args)
68
- tmp("gems/security_repo", *args)
69
- end
70
-
71
- def system_gem_path(*path)
72
- tmp("gems/system", *path)
73
- end
74
-
75
- def lib_path(*args)
76
- tmp("libs", *args)
77
- end
78
-
79
- def bundler_path
80
- Pathname.new(File.expand_path('../../../lib', __FILE__))
81
- end
82
-
83
- extend self
84
- end
85
- end
@@ -1,10 +0,0 @@
1
- module Spec
2
- module Permissions
3
- def with_umask(new_umask)
4
- old_umask = File.umask(new_umask)
5
- yield if block_given?
6
- ensure
7
- File.umask(old_umask)
8
- end
9
- end
10
- end
@@ -1,94 +0,0 @@
1
- module Spec
2
- module Platforms
3
- include Bundler::GemHelpers
4
-
5
- def rb
6
- Gem::Platform::RUBY
7
- end
8
-
9
- def mac
10
- Gem::Platform.new('x86-darwin-10')
11
- end
12
-
13
- def java
14
- Gem::Platform.new([nil, "java", nil])
15
- end
16
-
17
- def linux
18
- Gem::Platform.new(['x86', 'linux', nil])
19
- end
20
-
21
- def mswin
22
- Gem::Platform.new(['x86', 'mswin32', nil])
23
- end
24
-
25
- def mingw
26
- Gem::Platform.new(['x86', 'mingw32', nil])
27
- end
28
-
29
- def x64_mingw
30
- Gem::Platform.new(['x64', 'mingw32', nil])
31
- end
32
-
33
- def all_platforms
34
- [rb, java, linux, mswin, mingw, x64_mingw]
35
- end
36
-
37
- def local
38
- generic(Gem::Platform.local)
39
- end
40
-
41
- def not_local
42
- all_platforms.find { |p| p != generic(Gem::Platform.local) }
43
- end
44
-
45
- def local_tag
46
- if RUBY_PLATFORM == "java"
47
- :jruby
48
- else
49
- :ruby
50
- end
51
- end
52
-
53
- def not_local_tag
54
- [:ruby, :jruby].find { |tag| tag != local_tag }
55
- end
56
-
57
- def local_ruby_engine
58
- ENV["BUNDLER_SPEC_RUBY_ENGINE"] || (defined?(RUBY_ENGINE) ? RUBY_ENGINE : "ruby")
59
- end
60
-
61
- def local_engine_version
62
- return ENV["BUNDLER_SPEC_RUBY_ENGINE_VERSION"] if ENV["BUNDLER_SPEC_RUBY_ENGINE_VERSION"]
63
-
64
- case local_ruby_engine
65
- when "ruby"
66
- RUBY_VERSION
67
- when "rbx"
68
- Rubinius::VERSION
69
- when "jruby"
70
- JRUBY_VERSION
71
- else
72
- raise BundlerError, "That RUBY_ENGINE is not recognized"
73
- nil
74
- end
75
- end
76
-
77
- def not_local_engine_version
78
- case not_local_tag
79
- when :ruby
80
- not_local_ruby_version
81
- when :jruby
82
- "1.6.1"
83
- end
84
- end
85
-
86
- def not_local_ruby_version
87
- "1.12"
88
- end
89
-
90
- def not_local_patchlevel
91
- 9999
92
- end
93
- end
94
- end
@@ -1,20 +0,0 @@
1
- class IO
2
- def read_available_bytes(chunk_size = 16384, select_timeout = 0.02)
3
- buffer = []
4
-
5
- return "" if closed? || eof?
6
- # IO.select cannot be used here due to the fact that it
7
- # just does not work on windows
8
- while true
9
- begin
10
- IO.select([self], nil, nil, select_timeout)
11
- break if eof? # stop raising :-(
12
- buffer << self.readpartial(chunk_size)
13
- rescue(EOFError)
14
- break
15
- end
16
- end
17
-
18
- return buffer.join
19
- end
20
- end
@@ -1,39 +0,0 @@
1
- require 'rubygems/user_interaction'
2
- require 'support/path'
3
-
4
- module Spec
5
- module Rubygems
6
- def self.setup
7
- Gem.clear_paths
8
-
9
- ENV['BUNDLE_PATH'] = nil
10
- ENV['GEM_HOME'] = ENV['GEM_PATH'] = Path.base_system_gems.to_s
11
- ENV['PATH'] = ["#{Path.root}/bin", "#{Path.system_gem_path}/bin", ENV['PATH']].join(File::PATH_SEPARATOR)
12
-
13
- unless File.exist?("#{Path.base_system_gems}")
14
- FileUtils.mkdir_p(Path.base_system_gems)
15
- puts "fetching fakeweb, artifice, sinatra, rake, rack, and builder for the tests to use..."
16
- `gem install fakeweb artifice --no-rdoc --no-ri`
17
- `gem install sinatra --version 1.2.7 --no-rdoc --no-ri`
18
- # Rake version has to be consistent for tests to pass
19
- `gem install rake --version 10.0.2 --no-rdoc --no-ri`
20
- # 3.0.0 breaks 1.9.2 specs
21
- `gem install builder --version 2.1.2 --no-rdoc --no-ri`
22
- `gem install rack --no-rdoc --no-ri`
23
- end
24
-
25
- ENV['HOME'] = Path.home.to_s
26
-
27
- Gem::DefaultUserInteraction.ui = Gem::SilentUI.new
28
- end
29
-
30
- def gem_command(command, args = "", options = {})
31
- if command == :exec && !options[:no_quote]
32
- args = args.gsub(/(?=")/, "\\")
33
- args = %["#{args}"]
34
- end
35
- lib = File.join(File.dirname(__FILE__), '..', '..', 'lib')
36
- %x{#{Gem.ruby} -I#{lib} -rubygems -S gem --backtrace #{command} #{args}}.strip
37
- end
38
- end
39
- end
@@ -1,13 +0,0 @@
1
- require 'stringio'
2
-
3
- def capture(*streams)
4
- streams.map! { |stream| stream.to_s }
5
- begin
6
- result = StringIO.new
7
- streams.each { |stream| eval "$#{stream} = result" }
8
- yield
9
- ensure
10
- streams.each { |stream| eval("$#{stream} = #{stream.upcase}") }
11
- end
12
- result.string
13
- end
@@ -1,16 +0,0 @@
1
- module Spec
2
- module Sudo
3
- def self.present?
4
- @which_sudo ||= Bundler.which("sudo")
5
- end
6
-
7
- def sudo(cmd)
8
- raise "sudo not present" unless Sudo.present?
9
- sys_exec("sudo #{cmd}")
10
- end
11
-
12
- def chown_system_gems_to_root
13
- sudo "chown -R root #{system_gem_path}"
14
- end
15
- end
16
- end
@@ -1,201 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe "bundle update" do
4
- before :each do
5
- build_repo2
6
-
7
- install_gemfile <<-G
8
- source "file://#{gem_repo2}"
9
- gem "activesupport"
10
- gem "rack-obama"
11
- G
12
- end
13
-
14
- describe "with no arguments" do
15
- it "updates the entire bundle" do
16
- update_repo2 do
17
- build_gem "activesupport", "3.0"
18
- end
19
-
20
- bundle "update"
21
- should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 3.0"
22
- end
23
-
24
- it "doesn't delete the Gemfile.lock file if something goes wrong" do
25
- gemfile <<-G
26
- source "file://#{gem_repo2}"
27
- gem "activesupport"
28
- gem "rack-obama"
29
- exit!
30
- G
31
- bundle "update"
32
- expect(bundled_app("Gemfile.lock")).to exist
33
- end
34
- end
35
-
36
- describe "--quiet argument" do
37
- it "shows UI messages without --quiet argument" do
38
- bundle "update"
39
- expect(out).to include("Fetching source")
40
- end
41
-
42
- it "does not show UI messages with --quiet argument" do
43
- bundle "update --quiet"
44
- expect(out).not_to include("Fetching source")
45
- end
46
- end
47
-
48
- describe "with a top level dependency" do
49
- it "unlocks all child dependencies that are unrelated to other locked dependencies" do
50
- update_repo2 do
51
- build_gem "activesupport", "3.0"
52
- end
53
-
54
- bundle "update rack-obama"
55
- should_be_installed "rack 1.2", "rack-obama 1.0", "activesupport 2.3.5"
56
- end
57
- end
58
-
59
- describe "with an unknown dependency" do
60
- it "should inform the user" do
61
- bundle "update halting-problem-solver", :expect_err=>true
62
- expect(out).to include "Could not find gem 'halting-problem-solver'"
63
- end
64
- it "should suggest alternatives" do
65
- bundle "update active-support", :expect_err=>true
66
- expect(out).to include "Did you mean activesupport?"
67
- end
68
- end
69
-
70
- describe "with a child dependency" do
71
- it "should update the child dependency" do
72
- update_repo2
73
- bundle "update rack"
74
- should_be_installed "rack 1.2"
75
- end
76
- end
77
-
78
- describe "with --local option" do
79
- it "doesn't hit repo2" do
80
- FileUtils.rm_rf(gem_repo2)
81
-
82
- bundle "update --local"
83
- expect(out).not_to match(/Fetching source index/)
84
- end
85
- end
86
-
87
- describe "with --group option" do
88
- it "should update only specifed group gems" do
89
- install_gemfile <<-G
90
- source "file://#{gem_repo2}"
91
- gem "activesupport", :group => :development
92
- gem "rack"
93
- G
94
- update_repo2 do
95
- build_gem "activesupport", "3.0"
96
- end
97
- bundle "update --group development"
98
- should_be_installed "activesupport 3.0"
99
- should_not_be_installed "rack 1.2"
100
- end
101
- end
102
- end
103
-
104
- describe "bundle update in more complicated situations" do
105
- before :each do
106
- build_repo2
107
- end
108
-
109
- it "will eagerly unlock dependencies of a specified gem" do
110
- install_gemfile <<-G
111
- source "file://#{gem_repo2}"
112
-
113
- gem "thin"
114
- gem "rack-obama"
115
- G
116
-
117
- update_repo2 do
118
- build_gem "thin" , '2.0' do |s|
119
- s.add_dependency "rack"
120
- end
121
- end
122
-
123
- bundle "update thin"
124
- should_be_installed "thin 2.0", "rack 1.2", "rack-obama 1.0"
125
- end
126
- end
127
-
128
- describe "bundle update without a Gemfile.lock" do
129
- it "should not explode" do
130
- build_repo2
131
-
132
- gemfile <<-G
133
- source "file://#{gem_repo2}"
134
-
135
- gem "rack", "1.0"
136
- G
137
-
138
- bundle "update"
139
-
140
- should_be_installed "rack 1.0.0"
141
- end
142
- end
143
-
144
- describe "bundle update when a gem depends on a newer version of bundler" do
145
- before(:each) do
146
- build_repo2 do
147
- build_gem "rails", "3.0.1" do |s|
148
- s.add_dependency "bundler", Bundler::VERSION.succ
149
- end
150
- end
151
-
152
- gemfile <<-G
153
- source "file://#{gem_repo2}"
154
- gem "rails", "3.0.1"
155
- G
156
- end
157
-
158
- it "should not explode" do
159
- bundle "update"
160
- expect(err).to be_empty
161
- end
162
-
163
- it "should explain that bundler conflicted" do
164
- bundle "update"
165
- expect(out).not_to match(/in snapshot/i)
166
- expect(out).to match(/current Bundler version/i)
167
- expect(out).to match(/perhaps you need to update bundler/i)
168
- end
169
- end
170
-
171
- describe "bundle update" do
172
- it "shows the previous version of the gem when updated from rubygems source" do
173
- build_repo2
174
-
175
- install_gemfile <<-G
176
- source "file://#{gem_repo2}"
177
- gem "activesupport"
178
- G
179
-
180
- bundle "update"
181
- expect(out).to include("Using activesupport 2.3.5")
182
-
183
- update_repo2 do
184
- build_gem "activesupport", "3.0"
185
- end
186
-
187
- bundle "update"
188
- expect(out).to include("Installing activesupport 3.0 (was 2.3.5)")
189
- end
190
-
191
- it "shows error message when Gemfile.lock is not preset and gem is specified" do
192
- install_gemfile <<-G
193
- source "file://#{gem_repo2}"
194
- gem "activesupport"
195
- G
196
-
197
- bundle "update nonexisting", :exitstatus => true
198
- expect(out).to include("This Bundle hasn't been installed yet. Run `bundle install` to update and install the bundled gems.")
199
- expect(@exitstatus).to eq(22)
200
- end
201
- end