bundler 1.0.22 → 1.1.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 (114) hide show
  1. data/CHANGELOG.md +15 -181
  2. data/ISSUES.md +11 -26
  3. data/LICENSE +0 -2
  4. data/Rakefile +67 -116
  5. data/UPGRADING.md +4 -4
  6. data/bin/bundle +10 -10
  7. data/bundler.gemspec +5 -5
  8. data/lib/bundler.rb +15 -25
  9. data/lib/bundler/capistrano.rb +2 -2
  10. data/lib/bundler/cli.rb +41 -72
  11. data/lib/bundler/definition.rb +11 -37
  12. data/lib/bundler/dependency.rb +9 -13
  13. data/lib/bundler/deployment.rb +3 -8
  14. data/lib/bundler/dsl.rb +10 -24
  15. data/lib/bundler/fetcher.rb +101 -0
  16. data/lib/bundler/gem_helper.rb +6 -11
  17. data/lib/bundler/index.rb +8 -15
  18. data/lib/bundler/installer.rb +55 -35
  19. data/lib/bundler/lazy_specification.rb +7 -10
  20. data/lib/bundler/remote_specification.rb +6 -8
  21. data/lib/bundler/resolver.rb +18 -12
  22. data/lib/bundler/rubygems_ext.rb +3 -20
  23. data/lib/bundler/runtime.rb +57 -8
  24. data/lib/bundler/settings.rb +6 -4
  25. data/lib/bundler/setup.rb +5 -12
  26. data/lib/bundler/shared_helpers.rb +100 -4
  27. data/lib/bundler/source.rb +61 -106
  28. data/lib/bundler/spec_set.rb +8 -9
  29. data/lib/bundler/templates/newgem/Rakefile.tt +2 -1
  30. data/lib/bundler/templates/newgem/lib/newgem.rb.tt +0 -2
  31. data/lib/bundler/templates/newgem/newgem.gemspec.tt +3 -6
  32. data/lib/bundler/ui.rb +1 -4
  33. data/lib/bundler/vendor/net/http/faster.rb +27 -0
  34. data/lib/bundler/vendor/net/http/persistent.rb +464 -0
  35. data/lib/bundler/vendor/thor.rb +4 -43
  36. data/lib/bundler/vendor/thor/actions.rb +11 -28
  37. data/lib/bundler/vendor/thor/actions/create_file.rb +2 -2
  38. data/lib/bundler/vendor/thor/actions/directory.rb +2 -2
  39. data/lib/bundler/vendor/thor/actions/empty_directory.rb +0 -0
  40. data/lib/bundler/vendor/thor/actions/file_manipulation.rb +15 -56
  41. data/lib/bundler/vendor/thor/actions/inject_into_file.rb +10 -15
  42. data/lib/bundler/vendor/thor/base.rb +4 -24
  43. data/lib/bundler/vendor/thor/core_ext/file_binary_read.rb +0 -0
  44. data/lib/bundler/vendor/thor/core_ext/hash_with_indifferent_access.rb +0 -0
  45. data/lib/bundler/vendor/thor/core_ext/ordered_hash.rb +0 -0
  46. data/lib/bundler/vendor/thor/error.rb +0 -0
  47. data/lib/bundler/vendor/thor/invocation.rb +0 -0
  48. data/lib/bundler/vendor/thor/parser.rb +0 -0
  49. data/lib/bundler/vendor/thor/parser/argument.rb +0 -0
  50. data/lib/bundler/vendor/thor/parser/arguments.rb +2 -2
  51. data/lib/bundler/vendor/thor/parser/option.rb +1 -1
  52. data/lib/bundler/vendor/thor/parser/options.rb +16 -17
  53. data/lib/bundler/vendor/thor/shell.rb +0 -0
  54. data/lib/bundler/vendor/thor/shell/basic.rb +13 -40
  55. data/lib/bundler/vendor/thor/shell/color.rb +0 -0
  56. data/lib/bundler/vendor/thor/task.rb +4 -3
  57. data/lib/bundler/vendor/thor/util.rb +2 -2
  58. data/lib/bundler/vendor/thor/version.rb +1 -1
  59. data/lib/bundler/version.rb +1 -1
  60. data/lib/bundler/vlad.rb +0 -2
  61. data/man/bundle-install.ronn +3 -6
  62. data/man/gemfile.5.ronn +2 -7
  63. data/spec/cache/gems_spec.rb +0 -11
  64. data/spec/cache/git_spec.rb +2 -5
  65. data/spec/install/deploy_spec.rb +8 -8
  66. data/spec/install/gems/dependency_api_spec.rb +85 -0
  67. data/spec/install/gems/flex_spec.rb +4 -4
  68. data/spec/install/gems/groups_spec.rb +3 -17
  69. data/spec/install/gems/platform_spec.rb +16 -0
  70. data/spec/install/gems/simple_case_spec.rb +24 -88
  71. data/spec/install/gems/standalone_spec.rb +162 -0
  72. data/spec/install/gems/sudo_spec.rb +2 -3
  73. data/spec/install/gemspec_spec.rb +0 -38
  74. data/spec/install/git_spec.rb +4 -3
  75. data/spec/install/invalid_spec.rb +0 -18
  76. data/spec/install/path_spec.rb +1 -53
  77. data/spec/lock/git_spec.rb +1 -1
  78. data/spec/lock/lockfile_spec.rb +16 -72
  79. data/spec/other/check_spec.rb +6 -6
  80. data/spec/other/clean_spec.rb +202 -0
  81. data/spec/other/exec_spec.rb +7 -14
  82. data/spec/other/ext_spec.rb +0 -21
  83. data/spec/{bundler → other}/gem_helper_spec.rb +1 -16
  84. data/spec/other/help_spec.rb +1 -2
  85. data/spec/other/init_spec.rb +3 -3
  86. data/spec/other/newgem_spec.rb +1 -23
  87. data/spec/pack/gems_spec.rb +22 -0
  88. data/spec/quality_spec.rb +2 -6
  89. data/spec/runtime/require_spec.rb +10 -10
  90. data/spec/runtime/setup_spec.rb +12 -54
  91. data/spec/spec_helper.rb +7 -14
  92. data/spec/support/artifice/endpoint.rb +50 -0
  93. data/spec/support/artifice/endpoint_fallback.rb +22 -0
  94. data/spec/support/artifice/endpoint_marshal_fail.rb +11 -0
  95. data/spec/support/artifice/endpoint_redirect.rb +11 -0
  96. data/spec/support/builders.rb +2 -25
  97. data/spec/support/fakeweb/rack-1.0.0.marshal +2 -0
  98. data/spec/support/fakeweb/windows.rb +23 -0
  99. data/spec/support/helpers.rb +12 -5
  100. data/spec/support/matchers.rb +16 -4
  101. data/spec/support/path.rb +2 -0
  102. data/spec/support/rubygems_ext.rb +2 -6
  103. data/spec/update/gems_spec.rb +2 -3
  104. data/spec/update/git_spec.rb +2 -2
  105. metadata +41 -24
  106. data/.travis.yml +0 -31
  107. data/lib/bundler/gem_installer.rb +0 -9
  108. data/lib/bundler/gem_tasks.rb +0 -2
  109. data/lib/bundler/rubygems_integration.rb +0 -344
  110. data/lib/bundler/vendor/thor/actions/create_link.rb +0 -57
  111. data/lib/bundler/vendor/thor/group.rb +0 -273
  112. data/lib/bundler/vendor/thor/rake_compat.rb +0 -66
  113. data/lib/bundler/vendor/thor/runner.rb +0 -309
  114. data/lib/bundler/vendored_thor.rb +0 -7
File without changes
File without changes
File without changes
@@ -28,7 +28,7 @@ class Thor
28
28
  @switches = arguments
29
29
 
30
30
  arguments.each do |argument|
31
- if argument.default != nil
31
+ if argument.default
32
32
  @assigns[argument.human_name] = argument.default
33
33
  elsif argument.required?
34
34
  @non_assigned_required << argument
@@ -94,7 +94,7 @@ class Thor
94
94
  hash = {}
95
95
 
96
96
  while current_is_value? && peek.include?(?:)
97
- key, value = shift.split(':',2)
97
+ key, value = shift.split(':')
98
98
  hash[key] = value
99
99
  end
100
100
  hash
@@ -37,7 +37,7 @@ class Thor
37
37
  # string (--foo=value) or booleans (just --foo).
38
38
  #
39
39
  # By default all options are optional, unless :required is given.
40
- #
40
+ #
41
41
  def self.parse(key, value)
42
42
  if key.is_a?(Array)
43
43
  name, *aliases = key
@@ -53,9 +53,7 @@ class Thor
53
53
  @pile = args.dup
54
54
 
55
55
  while peek
56
- match, is_switch = current_is_switch?
57
-
58
- if is_switch
56
+ if current_is_switch?
59
57
  case shift
60
58
  when SHORT_SQ_RE
61
59
  unshift($1.split('').map { |f| "-#{f}" })
@@ -70,7 +68,7 @@ class Thor
70
68
  switch = normalize_switch(switch)
71
69
  option = switch_option(switch)
72
70
  @assigns[option.human_name] = parse_peek(switch, option)
73
- elsif match
71
+ elsif current_is_switch_formatted?
74
72
  @unknown << shift
75
73
  else
76
74
  shift
@@ -85,9 +83,7 @@ class Thor
85
83
  end
86
84
 
87
85
  def check_unknown!
88
- unless ARGV.include?("exec") || ARGV.include?("config")
89
- raise UnknownArgumentError, "Unknown switches '#{@unknown.join(', ')}'" unless @unknown.empty?
90
- end
86
+ raise UnknownArgumentError, "Unknown switches '#{@unknown.join(', ')}'" unless @unknown.empty?
91
87
  end
92
88
 
93
89
  protected
@@ -96,17 +92,15 @@ class Thor
96
92
  #
97
93
  def current_is_switch?
98
94
  case peek
99
- when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM
100
- [true, switch?($1)]
101
- when SHORT_SQ_RE
102
- [true, $1.split('').any? { |f| switch?("-#{f}") }]
103
- else
104
- [false, false]
95
+ when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM
96
+ switch?($1)
97
+ when SHORT_SQ_RE
98
+ $1.split('').any? { |f| switch?("-#{f}") }
105
99
  end
106
100
  end
107
101
 
108
- def current_is_switch_formatted?
109
- case peek
102
+ def switch_formatted?(arg)
103
+ case arg
110
104
  when LONG_RE, SHORT_RE, EQ_RE, SHORT_NUM, SHORT_SQ_RE
111
105
  true
112
106
  else
@@ -114,8 +108,12 @@ class Thor
114
108
  end
115
109
  end
116
110
 
111
+ def current_is_switch_formatted?
112
+ switch_formatted? peek
113
+ end
114
+
117
115
  def switch?(arg)
118
- switch_option(normalize_switch(arg))
116
+ switch_option(arg) || @shorts.key?(arg)
119
117
  end
120
118
 
121
119
  def switch_option(arg)
@@ -129,7 +127,7 @@ class Thor
129
127
  # Check if the given argument is actually a shortcut.
130
128
  #
131
129
  def normalize_switch(arg)
132
- (@shorts[arg] || arg).tr('_', '-')
130
+ @shorts.key?(arg) ? @shorts[arg] : arg
133
131
  end
134
132
 
135
133
  # Parse boolean values which can be given as --foo=true, --foo or --no-foo.
@@ -171,5 +169,6 @@ class Thor
171
169
  @non_assigned_required.delete(option)
172
170
  send(:"parse_#{option.type}", switch)
173
171
  end
172
+
174
173
  end
175
174
  end
File without changes
@@ -11,21 +11,6 @@ class Thor
11
11
  @base, @padding = nil, 0
12
12
  end
13
13
 
14
- # Mute everything that's inside given block
15
- #
16
- def mute
17
- @mute = true
18
- yield
19
- ensure
20
- @mute = false
21
- end
22
-
23
- # Check if base is muted
24
- #
25
- def mute?
26
- @mute
27
- end
28
-
29
14
  # Sets the output padding, not allowing less than zero values.
30
15
  #
31
16
  def padding=(value)
@@ -39,7 +24,7 @@ class Thor
39
24
  #
40
25
  def ask(statement, color=nil)
41
26
  say("#{statement} ", color)
42
- stdin.gets.strip
27
+ $stdin.gets.strip
43
28
  end
44
29
 
45
30
  # Say (print) something to the user. If the sentence ends with a whitespace
@@ -56,11 +41,11 @@ class Thor
56
41
  spaces = " " * padding
57
42
 
58
43
  if force_new_line
59
- stdout.puts(spaces + message)
44
+ $stdout.puts(spaces + message)
60
45
  else
61
- stdout.print(spaces + message)
46
+ $stdout.print(spaces + message)
62
47
  end
63
- stdout.flush
48
+ $stdout.flush
64
49
  end
65
50
 
66
51
  # Say a status with the given color and appends the message. Since this
@@ -76,15 +61,15 @@ class Thor
76
61
  status = status.to_s.rjust(12)
77
62
  status = set_color status, color, true if color
78
63
 
79
- stdout.puts "#{status}#{spaces}#{message}"
80
- stdout.flush
64
+ $stdout.puts "#{status}#{spaces}#{message}"
65
+ $stdout.flush
81
66
  end
82
67
 
83
68
  # Make a question the to user and returns true if the user replies "y" or
84
69
  # "yes".
85
70
  #
86
71
  def yes?(statement, color=nil)
87
- !!(ask(statement, color) =~ is?(:yes))
72
+ ask(statement, color) =~ is?(:yes)
88
73
  end
89
74
 
90
75
  # Make a question the to user and returns true if the user replies "n" or
@@ -128,7 +113,7 @@ class Thor
128
113
  end
129
114
 
130
115
  sentence = truncate(sentence, options[:truncate]) if options[:truncate]
131
- stdout.puts sentence
116
+ $stdout.puts sentence
132
117
  end
133
118
  end
134
119
 
@@ -154,9 +139,9 @@ class Thor
154
139
 
155
140
  paras.each do |para|
156
141
  para.split("\n").each do |line|
157
- stdout.puts line.insert(0, " " * ident)
142
+ $stdout.puts line.insert(0, " " * ident)
158
143
  end
159
- stdout.puts unless para == paras.last
144
+ $stdout.puts unless para == paras.last
160
145
  end
161
146
  end
162
147
 
@@ -195,12 +180,12 @@ class Thor
195
180
  end
196
181
 
197
182
  # Called if something goes wrong during the execution. This is used by Thor
198
- # internally and should not be used inside your scripts. If something went
183
+ # internally and should not be used inside your scripts. If someone went
199
184
  # wrong, you can always raise an exception. If you raise a Thor::Error, it
200
185
  # will be rescued and wrapped in the method below.
201
186
  #
202
187
  def error(statement)
203
- stderr.puts statement
188
+ $stderr.puts statement
204
189
  end
205
190
 
206
191
  # Apply color to the given string with optional bold. Disabled in the
@@ -212,18 +197,6 @@ class Thor
212
197
 
213
198
  protected
214
199
 
215
- def stdout
216
- $stdout
217
- end
218
-
219
- def stdin
220
- $stdin
221
- end
222
-
223
- def stderr
224
- $stderr
225
- end
226
-
227
200
  def is?(value) #:nodoc:
228
201
  value = value.to_s
229
202
 
@@ -256,7 +229,7 @@ HELP
256
229
  end
257
230
 
258
231
  def quiet? #:nodoc:
259
- mute? || (base && base.options[:quiet])
232
+ base && base.options[:quiet]
260
233
  end
261
234
 
262
235
  # This code was copied from Rake, available under MIT-LICENSE
File without changes
@@ -65,9 +65,10 @@ class Thor
65
65
  @required_options ||= options.map{ |_, o| o.usage if o.required? }.compact.sort.join(" ")
66
66
  end
67
67
 
68
- # Given a target, checks if this class name is a public method.
68
+ # Given a target, checks if this class name is not a private/protected method.
69
69
  def public_method?(instance) #:nodoc:
70
- !(instance.public_methods & [name.to_s, name.to_sym]).empty?
70
+ collection = instance.private_methods + instance.protected_methods
71
+ (collection & [name.to_s, name.to_sym]).empty?
71
72
  end
72
73
 
73
74
  def sans_backtrace(backtrace, caller) #:nodoc:
@@ -110,4 +111,4 @@ class Thor
110
111
  end
111
112
  end
112
113
  end
113
- end
114
+ end
@@ -8,11 +8,11 @@ class Thor
8
8
  #
9
9
  # 1) Methods to convert thor namespaces to constants and vice-versa.
10
10
  #
11
- # Thor::Util.namespace_from_thor_class(Foo::Bar::Baz) #=> "foo:bar:baz"
11
+ # Thor::Utils.namespace_from_thor_class(Foo::Bar::Baz) #=> "foo:bar:baz"
12
12
  #
13
13
  # 2) Loading thor files and sandboxing:
14
14
  #
15
- # Thor::Util.load_thorfile("~/.thor/foo")
15
+ # Thor::Utils.load_thorfile("~/.thor/foo")
16
16
  #
17
17
  module Util
18
18
 
@@ -1,3 +1,3 @@
1
1
  class Thor
2
- VERSION = "0.14.6".freeze
2
+ VERSION = "0.14.0".freeze
3
3
  end
@@ -2,5 +2,5 @@ module Bundler
2
2
  # We're doing this because we might write tests that deal
3
3
  # with other versions of bundler and we are unsure how to
4
4
  # handle this better.
5
- VERSION = "1.0.22" unless defined?(::Bundler::VERSION)
5
+ VERSION = "1.1.pre" unless defined?(::Bundler::VERSION)
6
6
  end
@@ -4,8 +4,6 @@
4
4
  # include the vlad:bundle:install task in your vlad:deploy task.
5
5
  require 'bundler/deployment'
6
6
 
7
- include Rake::DSL if defined? Rake::DSL
8
-
9
7
  namespace :vlad do
10
8
  Bundler::Deployment.define_task(Rake::RemoteTask, :remote_task, :roles => :app)
11
9
  end
@@ -54,13 +54,12 @@ update process below under [CONSERVATIVE UPDATING][].
54
54
 
55
55
  * `--local`:
56
56
  Do not attempt to connect to `rubygems.org`, instead using just
57
- the gems already present in Rubygems' cache or in `vendor/cache`.
58
- Note that if a more appropriate platform-specific gem exists on
59
- `rubygems.org`, it will not be found.
57
+ the gems located in `vendor/cache`. Note that if a more
58
+ appropriate platform-specific gem exists on `rubygems.org`,
59
+ this will bypass the normal lookup.
60
60
 
61
61
  * `--deployment`:
62
62
  Switches bundler's defaults into [deployment mode][DEPLOYMENT MODE].
63
- Do not use this flag on development machines.
64
63
 
65
64
  * `--binstubs[=<directory>]`:
66
65
  Create a directory (defaults to `bin`) containing an executable
@@ -73,8 +72,6 @@ update process below under [CONSERVATIVE UPDATING][].
73
72
 
74
73
  Bundler's defaults are optimized for development. To switch to
75
74
  defaults optimized for deployment, use the `--deployment` flag.
76
- Do not activate deployment mode on development machines, as it
77
- will cause in an error when the Gemfile is modified.
78
75
 
79
76
  1. A `Gemfile.lock` is required.
80
77
 
@@ -55,9 +55,6 @@ This defaults to the name of the gem itself. For instance, these are identical:
55
55
  gem "nokogiri"
56
56
  gem "nokogiri", :require => "nokogiri"
57
57
 
58
- Specify `:require => false` to prevent bundler from requiring the gem, but still
59
- install it and maintain dependencies.
60
-
61
58
  ### GROUPS (:group or :groups)
62
59
 
63
60
  Each _gem_ `MAY` specify membership in one or more groups. Any _gem_ that does
@@ -123,8 +120,6 @@ There are a number of `Gemfile` platforms:
123
120
  _mri_ `AND` version 1.8
124
121
  * `mri_19`:
125
122
  _mri_ `AND` version 1.9
126
- * `rbx`:
127
- Same as _ruby_, but only Rubinius (not MRI)
128
123
  * `jruby`:
129
124
  JRuby
130
125
  * `mswin`:
@@ -280,5 +275,5 @@ bundler uses the following priority order:
280
275
  repository otherwise declared. This results in bundler prioritizing the
281
276
  ActiveSupport gem from the Rails git repository over ones from
282
277
  `rubygems.org`
283
- 3. The sources specified via `source`, searching each source in your `Gemfile`
284
- from last added to first added.
278
+ 3. The sources specified via `source`, in the order in which they were
279
+ declared in the `Gemfile`.
@@ -214,17 +214,6 @@ describe "bundle cache" do
214
214
  bundle "install"
215
215
  out.should_not =~ /removing/i
216
216
  end
217
-
218
- it "should install gems with the name bundler in them (that aren't bundler)" do
219
- build_gem "foo-bundler", "1.0",
220
- :path => bundled_app('vendor/cache')
221
-
222
- install_gemfile <<-G
223
- gem "foo-bundler"
224
- G
225
-
226
- should_be_installed "foo-bundler 1.0"
227
- end
228
217
  end
229
218
 
230
219
  end
@@ -4,9 +4,6 @@ describe "bundle cache with git" do
4
4
  source = Bundler::Source::Git.new("uri" => "git@github.com:bundler.git")
5
5
  source.send(:base_name).should == "bundler"
6
6
  end
7
+ end
8
+
7
9
 
8
- it "base_name should strip network share paths" do
9
- source = Bundler::Source::Git.new("uri" => "//MachineName/ShareFolder")
10
- source.send(:base_name).should == "ShareFolder"
11
- end
12
- end
@@ -21,7 +21,7 @@ describe "install with --deployment or --frozen" do
21
21
  it "works after you try to deploy without a lock" do
22
22
  bundle "install --deployment"
23
23
  bundle :install, :exitstatus => true
24
- exitstatus.should eq(0)
24
+ check exitstatus.should == 0
25
25
  should_be_installed "rack 1.0"
26
26
  end
27
27
 
@@ -76,7 +76,7 @@ describe "install with --deployment or --frozen" do
76
76
  G
77
77
 
78
78
  bundle "install --deployment"
79
- out.should include("deployment mode")
79
+ out.should include("You have modified your Gemfile")
80
80
  out.should include("You have added to the Gemfile")
81
81
  out.should include("* rack-obama")
82
82
  out.should_not include("You have deleted from the Gemfile")
@@ -92,7 +92,7 @@ describe "install with --deployment or --frozen" do
92
92
 
93
93
  ENV['BUNDLE_FROZEN'] = '1'
94
94
  bundle "install"
95
- out.should include("deployment mode")
95
+ out.should include("You have modified your Gemfile")
96
96
  out.should include("You have added to the Gemfile")
97
97
  out.should include("* rack-obama")
98
98
  out.should_not include("You have deleted from the Gemfile")
@@ -107,7 +107,7 @@ describe "install with --deployment or --frozen" do
107
107
  G
108
108
 
109
109
  bundle "install --frozen"
110
- out.should include("deployment mode")
110
+ out.should include("You have modified your Gemfile")
111
111
  out.should include("You have added to the Gemfile")
112
112
  out.should include("* rack-obama")
113
113
  out.should_not include("You have deleted from the Gemfile")
@@ -121,7 +121,7 @@ describe "install with --deployment or --frozen" do
121
121
  G
122
122
 
123
123
  bundle "install --deployment"
124
- out.should include("deployment mode")
124
+ out.should include("You have modified your Gemfile")
125
125
  out.should include("You have added to the Gemfile:\n* activesupport\n\n")
126
126
  out.should include("You have deleted from the Gemfile:\n* rack")
127
127
  out.should_not include("You have changed in the Gemfile")
@@ -134,7 +134,7 @@ describe "install with --deployment or --frozen" do
134
134
  G
135
135
 
136
136
  bundle "install --deployment"
137
- out.should include("deployment mode")
137
+ out.should include("You have modified your Gemfile")
138
138
  out.should include("You have added to the Gemfile:\n* source: git://hubz.com (at master)")
139
139
  out.should_not include("You have changed in the Gemfile")
140
140
  end
@@ -153,7 +153,7 @@ describe "install with --deployment or --frozen" do
153
153
  G
154
154
 
155
155
  bundle "install --deployment"
156
- out.should include("deployment mode")
156
+ out.should include("You have modified your Gemfile")
157
157
  out.should include("You have deleted from the Gemfile:\n* source: #{lib_path("rack-1.0")} (at master)")
158
158
  out.should_not include("You have added to the Gemfile")
159
159
  out.should_not include("You have changed in the Gemfile")
@@ -176,7 +176,7 @@ describe "install with --deployment or --frozen" do
176
176
  G
177
177
 
178
178
  bundle "install --deployment"
179
- out.should include("deployment mode")
179
+ out.should include("You have modified your Gemfile")
180
180
  out.should include("You have changed in the Gemfile:\n* rack from `no specified source` to `#{lib_path("rack")} (at master)`")
181
181
  out.should_not include("You have added to the Gemfile")
182
182
  out.should_not include("You have deleted from the Gemfile")