bundler 1.0.0 → 1.0.2

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 (108) hide show
  1. data/.gitignore +12 -0
  2. data/CHANGELOG.md +28 -6
  3. data/ISSUES.md +1 -1
  4. data/README.md +7 -5
  5. data/Rakefile +173 -0
  6. data/UPGRADING.md +103 -0
  7. data/bundler.gemspec +28 -0
  8. data/lib/bundler.rb +1 -0
  9. data/lib/bundler/capistrano.rb +2 -31
  10. data/lib/bundler/cli.rb +18 -16
  11. data/lib/bundler/deployment.rb +37 -0
  12. data/lib/bundler/dsl.rb +3 -3
  13. data/lib/bundler/gem_helper.rb +4 -7
  14. data/lib/bundler/graph.rb +3 -3
  15. data/lib/bundler/installer.rb +1 -0
  16. data/lib/bundler/lockfile_parser.rb +1 -1
  17. data/lib/bundler/man/bundle +1 -1
  18. data/lib/bundler/man/bundle-config +92 -0
  19. data/lib/bundler/man/bundle-config.txt +72 -30
  20. data/lib/bundler/man/bundle-exec +1 -1
  21. data/lib/bundler/man/bundle-exec.txt +1 -1
  22. data/lib/bundler/man/bundle-install +1 -1
  23. data/lib/bundler/man/bundle-install.txt +1 -1
  24. data/lib/bundler/man/bundle-package +1 -1
  25. data/lib/bundler/man/bundle-package.txt +1 -1
  26. data/lib/bundler/man/bundle-update +1 -1
  27. data/lib/bundler/man/bundle-update.txt +1 -1
  28. data/lib/bundler/man/bundle.txt +1 -1
  29. data/lib/bundler/man/gemfile.5 +2 -2
  30. data/lib/bundler/man/gemfile.5.txt +2 -2
  31. data/lib/bundler/settings.rb +2 -2
  32. data/lib/bundler/source.rb +2 -3
  33. data/lib/bundler/templates/Executable +1 -1
  34. data/lib/bundler/templates/newgem/Gemfile.tt +1 -1
  35. data/lib/bundler/templates/newgem/bin/newgem.tt +3 -0
  36. data/lib/bundler/templates/newgem/newgem.gemspec.tt +11 -12
  37. data/lib/bundler/version.rb +1 -1
  38. data/lib/bundler/vlad.rb +9 -0
  39. data/man/bundle-config.ronn +90 -0
  40. data/man/bundle-exec.ronn +98 -0
  41. data/man/bundle-install.ronn +310 -0
  42. data/man/bundle-package.ronn +59 -0
  43. data/man/bundle-update.ronn +176 -0
  44. data/man/bundle.ronn +77 -0
  45. data/man/gemfile.5.ronn +254 -0
  46. data/man/index.txt +6 -0
  47. data/spec/cache/gems_spec.rb +205 -0
  48. data/spec/cache/git_spec.rb +9 -0
  49. data/spec/cache/path_spec.rb +27 -0
  50. data/spec/cache/platform_spec.rb +57 -0
  51. data/spec/install/deploy_spec.rb +171 -0
  52. data/spec/install/deprecated_spec.rb +43 -0
  53. data/spec/install/gems/c_ext_spec.rb +48 -0
  54. data/spec/install/gems/env_spec.rb +107 -0
  55. data/spec/install/gems/flex_spec.rb +272 -0
  56. data/spec/install/gems/groups_spec.rb +209 -0
  57. data/spec/install/gems/locked_spec.rb +48 -0
  58. data/spec/install/gems/packed_spec.rb +72 -0
  59. data/spec/install/gems/platform_spec.rb +181 -0
  60. data/spec/install/gems/resolving_spec.rb +72 -0
  61. data/spec/install/gems/simple_case_spec.rb +709 -0
  62. data/spec/install/gems/sudo_spec.rb +77 -0
  63. data/spec/install/gems/win32_spec.rb +26 -0
  64. data/spec/install/gemspec_spec.rb +96 -0
  65. data/spec/install/git_spec.rb +552 -0
  66. data/spec/install/invalid_spec.rb +17 -0
  67. data/spec/install/path_spec.rb +335 -0
  68. data/spec/install/upgrade_spec.rb +26 -0
  69. data/spec/lock/flex_spec.rb +625 -0
  70. data/spec/lock/git_spec.rb +35 -0
  71. data/spec/other/check_spec.rb +221 -0
  72. data/spec/other/config_spec.rb +40 -0
  73. data/spec/other/console_spec.rb +102 -0
  74. data/spec/other/exec_spec.rb +241 -0
  75. data/spec/other/ext_spec.rb +16 -0
  76. data/spec/other/gem_helper_spec.rb +116 -0
  77. data/spec/other/help_spec.rb +36 -0
  78. data/spec/other/init_spec.rb +40 -0
  79. data/spec/other/newgem_spec.rb +24 -0
  80. data/spec/other/open_spec.rb +51 -0
  81. data/spec/other/show_spec.rb +99 -0
  82. data/spec/pack/gems_spec.rb +22 -0
  83. data/spec/quality_spec.rb +55 -0
  84. data/spec/resolver/basic_spec.rb +20 -0
  85. data/spec/resolver/platform_spec.rb +57 -0
  86. data/spec/runtime/environment_rb_spec.rb +170 -0
  87. data/spec/runtime/executable_spec.rb +110 -0
  88. data/spec/runtime/load_spec.rb +107 -0
  89. data/spec/runtime/platform_spec.rb +90 -0
  90. data/spec/runtime/require_spec.rb +261 -0
  91. data/spec/runtime/setup_spec.rb +412 -0
  92. data/spec/runtime/with_clean_env_spec.rb +15 -0
  93. data/spec/spec_helper.rb +81 -0
  94. data/spec/support/builders.rb +566 -0
  95. data/spec/support/helpers.rb +243 -0
  96. data/spec/support/indexes.rb +113 -0
  97. data/spec/support/matchers.rb +89 -0
  98. data/spec/support/path.rb +71 -0
  99. data/spec/support/platforms.rb +49 -0
  100. data/spec/support/ruby_ext.rb +19 -0
  101. data/spec/support/rubygems_ext.rb +30 -0
  102. data/spec/support/rubygems_hax/rubygems_plugin.rb +9 -0
  103. data/spec/support/sudo.rb +21 -0
  104. data/spec/update/gems_spec.rb +86 -0
  105. data/spec/update/git_spec.rb +159 -0
  106. data/spec/update/source_spec.rb +50 -0
  107. metadata +170 -32
  108. data/ROADMAP.md +0 -36
@@ -0,0 +1,35 @@
1
+ require "spec_helper"
2
+
3
+ describe "bundle lock with git gems" do
4
+ before :each do
5
+ build_git "foo"
6
+
7
+ install_gemfile <<-G
8
+ gem 'foo', :git => "#{lib_path('foo-1.0')}"
9
+ G
10
+ end
11
+
12
+ it "doesn't break right after running lock" do
13
+ should_be_installed "foo 1.0.0"
14
+ end
15
+
16
+ it "locks a git source to the current ref" do
17
+ update_git "foo"
18
+ bundle :install
19
+
20
+ run <<-RUBY
21
+ require 'foo'
22
+ puts "WIN" unless defined?(FOO_PREV_REF)
23
+ RUBY
24
+
25
+ out.should == "WIN"
26
+ end
27
+
28
+ it "provides correct #full_gem_path" do
29
+ run <<-RUBY
30
+ puts Gem.source_index.find_name('foo').first.full_gem_path
31
+ RUBY
32
+ out.should == bundle("show foo")
33
+ end
34
+
35
+ end
@@ -0,0 +1,221 @@
1
+ require "spec_helper"
2
+
3
+ describe "bundle check" do
4
+ it "returns success when the Gemfile is satisfied" do
5
+ install_gemfile <<-G
6
+ source "file://#{gem_repo1}"
7
+ gem "rails"
8
+ G
9
+
10
+ bundle :check, :exit_status => true
11
+ check @exitstatus.should == 0
12
+ out.should == "The Gemfile's dependencies are satisfied"
13
+ end
14
+
15
+ it "works with the --gemfile flag when not in the directory" do
16
+ install_gemfile <<-G
17
+ source "file://#{gem_repo1}"
18
+ gem "rails"
19
+ G
20
+
21
+ Dir.chdir tmp
22
+ bundle "check --gemfile bundled_app/Gemfile"
23
+ out.should == "The Gemfile's dependencies are satisfied"
24
+ end
25
+
26
+ it "creates a Gemfile.lock if one did not exist" do
27
+ install_gemfile <<-G
28
+ source "file://#{gem_repo1}"
29
+ gem "rails"
30
+ G
31
+
32
+ FileUtils.rm("Gemfile.lock")
33
+
34
+ bundle "check"
35
+
36
+ bundled_app("Gemfile.lock").should exist
37
+ end
38
+
39
+ it "prints a generic error if the missing gems are unresolvable" do
40
+ system_gems ["rails-2.3.2"]
41
+
42
+ gemfile <<-G
43
+ source "file://#{gem_repo1}"
44
+ gem "rails"
45
+ G
46
+
47
+ bundle :check
48
+ out.should include("Your Gemfile's dependencies could not be satisfied")
49
+ end
50
+
51
+ it "prints a generic error if a Gemfile.lock does not exist and a toplevel dependency does not exist" do
52
+ gemfile <<-G
53
+ source "file://#{gem_repo1}"
54
+ gem "rails"
55
+ G
56
+
57
+ bundle :check, :exit_status => true
58
+ check @exitstatus.should > 0
59
+ out.should include("could not be satisfied")
60
+ end
61
+
62
+ it "prints a generic message if you changed your lockfile" do
63
+ install_gemfile <<-G
64
+ source "file://#{gem_repo1}"
65
+ gem 'rails'
66
+ G
67
+ install_gemfile <<-G
68
+ source "file://#{gem_repo1}"
69
+ gem 'rails_fail'
70
+ G
71
+
72
+ gemfile <<-G
73
+ source "file://#{gem_repo1}"
74
+ gem "rails"
75
+ gem "rails_fail"
76
+ G
77
+
78
+ bundle :check
79
+ out.should include("Your Gemfile's dependencies could not be satisfied")
80
+ end
81
+
82
+ it "remembers --without option from install" do
83
+ gemfile <<-G
84
+ source "file://#{gem_repo1}"
85
+ group :foo do
86
+ gem "rack"
87
+ end
88
+ G
89
+
90
+ bundle "install --without foo"
91
+ bundle "check", :exit_status => true
92
+ check @exitstatus.should == 0
93
+ out.should include("The Gemfile's dependencies are satisfied")
94
+ end
95
+
96
+ it "ensures that gems are actually installed and not just cached" do
97
+ gemfile <<-G
98
+ source "file://#{gem_repo1}"
99
+ gem "rack", :group => :foo
100
+ G
101
+
102
+ bundle "install --without foo"
103
+
104
+ gemfile <<-G
105
+ source "file://#{gem_repo1}"
106
+ gem "rack"
107
+ G
108
+
109
+ bundle "check", :exit_status => true
110
+ out.should include("* rack (1.0.0)")
111
+ @exitstatus.should == 1
112
+ end
113
+
114
+ it "ignores missing gems restricted to other platforms" do
115
+ system_gems "rack-1.0.0"
116
+
117
+ gemfile <<-G
118
+ source "file://#{gem_repo1}"
119
+ gem "rack"
120
+ platforms :#{not_local_tag} do
121
+ gem "activesupport"
122
+ end
123
+ G
124
+
125
+ lockfile <<-G
126
+ GEM
127
+ remote: file:#{gem_repo1}/
128
+ specs:
129
+ activesupport (2.3.5)
130
+ rack (1.0.0)
131
+
132
+ PLATFORMS
133
+ #{local}
134
+ #{not_local}
135
+
136
+ DEPENDENCIES
137
+ rack
138
+ activesupport
139
+ G
140
+
141
+ bundle :check
142
+ out.should == "The Gemfile's dependencies are satisfied"
143
+ end
144
+
145
+ it "works with env conditionals" do
146
+ system_gems "rack-1.0.0"
147
+
148
+ gemfile <<-G
149
+ source "file://#{gem_repo1}"
150
+ gem "rack"
151
+ env :NOT_GOING_TO_BE_SET do
152
+ gem "activesupport"
153
+ end
154
+ G
155
+
156
+ lockfile <<-G
157
+ GEM
158
+ remote: file:#{gem_repo1}/
159
+ specs:
160
+ activesupport (2.3.5)
161
+ rack (1.0.0)
162
+
163
+ PLATFORMS
164
+ #{local}
165
+ #{not_local}
166
+
167
+ DEPENDENCIES
168
+ rack
169
+ activesupport
170
+ G
171
+
172
+ bundle :check
173
+ out.should == "The Gemfile's dependencies are satisfied"
174
+ end
175
+
176
+ it "outputs an error when the default Gemfile is not found" do
177
+ bundle :check, :exit_status => true
178
+ check @exitstatus.should == 10
179
+ out.should include("Could not locate Gemfile")
180
+ end
181
+
182
+ it "should not crash when called multiple times on a new machine" do
183
+ gemfile <<-G
184
+ gem 'rails', '3.0.0.beta3'
185
+ gem 'paperclip', :git => 'git://github.com/thoughtbot/paperclip.git'
186
+ G
187
+
188
+ simulate_new_machine
189
+ bundle "check"
190
+ last_out = out
191
+ 3.times do |i|
192
+ bundle :check
193
+ out.should == last_out
194
+ err.should be_empty
195
+ end
196
+ end
197
+
198
+ describe "when locked" do
199
+ before :each do
200
+ system_gems "rack-1.0.0"
201
+ install_gemfile <<-G
202
+ source "file://#{gem_repo1}"
203
+ gem "rack", "1.0"
204
+ G
205
+ end
206
+
207
+ it "returns success when the Gemfile is satisfied" do
208
+ bundle :install
209
+ bundle :check, :exit_status => true
210
+ check @exitstatus.should == 0
211
+ out.should == "The Gemfile's dependencies are satisfied"
212
+ end
213
+
214
+ it "shows what is missing with the current Gemfile if it is not satisfied" do
215
+ simulate_new_machine
216
+ bundle :check
217
+ out.should match(/The following gems are missing/)
218
+ out.should include("* rack (1.0")
219
+ end
220
+ end
221
+ end
@@ -0,0 +1,40 @@
1
+ require "spec_helper"
2
+
3
+ describe ".bundle/config" do
4
+ before :each do
5
+ gemfile <<-G
6
+ source "file://#{gem_repo1}"
7
+ gem "rack", "1.0.0"
8
+ G
9
+ end
10
+
11
+ it "can be moved with an environment variable" do
12
+ ENV['BUNDLE_APP_CONFIG'] = tmp('foo/bar').to_s
13
+ bundle "install vendor"
14
+
15
+ bundled_app('.bundle').should_not exist
16
+ tmp('foo/bar/config').should exist
17
+ should_be_installed "rack 1.0.0"
18
+ end
19
+
20
+ it "can provide a relative path with the environment variable" do
21
+ FileUtils.mkdir_p bundled_app('omg')
22
+ Dir.chdir bundled_app('omg')
23
+
24
+ ENV['BUNDLE_APP_CONFIG'] = "../foo"
25
+ bundle "install vendor"
26
+
27
+ bundled_app(".bundle").should_not exist
28
+ bundled_app("../foo/config").should exist
29
+ should_be_installed "rack 1.0.0"
30
+ end
31
+
32
+ it "removes environment.rb from BUNDLE_APP_CONFIG's path" do
33
+ FileUtils.mkdir_p(tmp('foo/bar'))
34
+ ENV['BUNDLE_APP_CONFIG'] = tmp('foo/bar').to_s
35
+ bundle "install"
36
+ FileUtils.touch tmp('foo/bar/environment.rb')
37
+ should_be_installed "rack 1.0.0"
38
+ tmp('foo/bar/environment.rb').should_not exist
39
+ end
40
+ end
@@ -0,0 +1,102 @@
1
+ require "spec_helper"
2
+
3
+ describe "bundle console" do
4
+ before :each do
5
+ install_gemfile <<-G
6
+ source "file://#{gem_repo1}"
7
+ gem "rack"
8
+ gem "activesupport", :group => :test
9
+ gem "rack_middleware", :group => :development
10
+ G
11
+ end
12
+
13
+ it "starts IRB with the default group loaded" do
14
+ bundle "console" do |input|
15
+ input.puts("puts RACK")
16
+ input.puts("exit")
17
+ end
18
+ out.should include("0.9.1")
19
+ end
20
+
21
+ it "doesn't load any other groups" do
22
+ bundle "console" do |input|
23
+ input.puts("puts ACTIVESUPPORT")
24
+ input.puts("exit")
25
+ end
26
+ out.should include("NameError")
27
+ end
28
+
29
+ describe "when given a group" do
30
+ it "loads the given group" do
31
+ bundle "console test" do |input|
32
+ input.puts("puts ACTIVESUPPORT")
33
+ input.puts("exit")
34
+ end
35
+ out.should include("2.3.5")
36
+ end
37
+
38
+ it "loads the default group" do
39
+ bundle "console test" do |input|
40
+ input.puts("puts RACK")
41
+ input.puts("exit")
42
+ end
43
+ out.should include("0.9.1")
44
+ end
45
+
46
+ it "doesn't load other groups" do
47
+ bundle "console test" do |input|
48
+ input.puts("puts RACK_MIDDLEWARE")
49
+ input.puts("exit")
50
+ end
51
+ out.should include("NameError")
52
+ end
53
+ end
54
+
55
+ describe "when locked" do
56
+ before :each do
57
+ bundle :lock
58
+ end
59
+
60
+ it "starts IRB with the default group loaded" do
61
+ bundle :console do |input|
62
+ input.puts("puts RACK")
63
+ input.puts("exit")
64
+ end
65
+ out.should include("0.9.1")
66
+ end
67
+
68
+ it "doesn't load any other groups" do
69
+ bundle :console do |input|
70
+ input.puts("puts ACTIVESUPPORT")
71
+ input.puts("exit")
72
+ end
73
+ out.should include("NameError")
74
+ end
75
+
76
+ describe "and given a group" do
77
+ it "loads the given group" do
78
+ bundle "console test" do |input|
79
+ input.puts("puts ACTIVESUPPORT")
80
+ input.puts("exit")
81
+ end
82
+ out.should include("2.3.5")
83
+ end
84
+
85
+ it "loads the default group" do
86
+ bundle "console test" do |input|
87
+ input.puts("puts RACK")
88
+ input.puts("exit")
89
+ end
90
+ out.should include("0.9.1")
91
+ end
92
+
93
+ it "doesn't load other groups" do
94
+ bundle "console test" do |input|
95
+ input.puts("puts RACK_MIDDLEWARE")
96
+ input.puts("exit")
97
+ end
98
+ out.should include("NameError")
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,241 @@
1
+ require "spec_helper"
2
+
3
+ describe "bundle exec" do
4
+ before :each do
5
+ system_gems "rack-1.0.0", "rack-0.9.1"
6
+ end
7
+
8
+ it "activates the correct gem" do
9
+ gemfile <<-G
10
+ gem "rack", "0.9.1"
11
+ G
12
+
13
+ bundle "exec rackup"
14
+ out.should == "0.9.1"
15
+ end
16
+
17
+ it "works when the bins are in ~/.bundle" do
18
+ install_gemfile <<-G
19
+ gem "rack"
20
+ G
21
+
22
+ bundle "exec rackup"
23
+ out.should == "1.0.0"
24
+ end
25
+
26
+ it "works when running from a random directory" do
27
+ install_gemfile <<-G
28
+ gem "rack"
29
+ G
30
+
31
+ bundle "exec 'cd #{tmp('gems')} && rackup'"
32
+
33
+ out.should == "1.0.0"
34
+ end
35
+
36
+ it "handles different versions in different bundles" do
37
+ build_repo2 do
38
+ build_gem "rack_two", "1.0.0" do |s|
39
+ s.executables = "rackup"
40
+ end
41
+ end
42
+
43
+ install_gemfile <<-G
44
+ source "file://#{gem_repo1}"
45
+ gem "rack", "0.9.1"
46
+ G
47
+
48
+ Dir.chdir bundled_app2 do
49
+ install_gemfile bundled_app2('Gemfile'), <<-G
50
+ source "file://#{gem_repo2}"
51
+ gem "rack_two", "1.0.0"
52
+ G
53
+ end
54
+
55
+ bundle "exec rackup"
56
+
57
+ check out.should == "0.9.1"
58
+
59
+ Dir.chdir bundled_app2 do
60
+ bundle "exec rackup"
61
+ out.should == "1.0.0"
62
+ end
63
+ end
64
+
65
+ it "handles gems installed with --without" do
66
+ install_gemfile <<-G, :without => :middleware
67
+ source "file://#{gem_repo1}"
68
+ gem "rack" # rack 0.9.1 and 1.0 exist
69
+
70
+ group :middleware do
71
+ gem "rack_middleware" # rack_middleware depends on rack 0.9.1
72
+ end
73
+ G
74
+
75
+ bundle "exec rackup"
76
+
77
+ check out.should == "0.9.1"
78
+ should_not_be_installed "rack_middleware 1.0"
79
+ end
80
+
81
+ it "should not duplicate already exec'ed RUBYOPT or PATH" do
82
+ install_gemfile <<-G
83
+ gem "rack"
84
+ G
85
+
86
+ rubyopt = "-I#{bundler_path} -rbundler/setup"
87
+
88
+ bundle "exec 'echo $RUBYOPT'"
89
+ out.should have_rubyopts(rubyopt)
90
+
91
+ bundle "exec 'echo $RUBYOPT'", :env => {"RUBYOPT" => rubyopt}
92
+ out.should have_rubyopts(rubyopt)
93
+ end
94
+
95
+ it "errors nicely when the argument doesn't exist" do
96
+ install_gemfile <<-G
97
+ gem "rack"
98
+ G
99
+
100
+ bundle "exec foobarbaz", :exit_status => true
101
+ @exitstatus.should == 127
102
+ out.should include("bundler: command not found: foobarbaz")
103
+ out.should include("Install missing gem binaries with `bundle install`")
104
+ end
105
+
106
+ it "errors nicely when the argument is not executable" do
107
+ install_gemfile <<-G
108
+ gem "rack"
109
+ G
110
+
111
+ bundle "exec touch foo"
112
+ bundle "exec ./foo", :exit_status => true
113
+ @exitstatus.should == 126
114
+ out.should include("bundler: not executable: ./foo")
115
+ end
116
+
117
+ describe "with gem binaries" do
118
+ describe "run from a random directory" do
119
+ before(:each) do
120
+ install_gemfile <<-G
121
+ gem "rack"
122
+ G
123
+ end
124
+
125
+ it "works when unlocked" do
126
+ bundle "exec 'cd #{tmp('gems')} && rackup'"
127
+ out.should == "1.0.0"
128
+ end
129
+
130
+ it "works when locked" do
131
+ bundle "lock"
132
+ should_be_locked
133
+ bundle "exec 'cd #{tmp('gems')} && rackup'"
134
+ out.should == "1.0.0"
135
+ end
136
+ end
137
+
138
+ describe "from gems bundled via :path" do
139
+ before(:each) do
140
+ build_lib "fizz", :path => home("fizz") do |s|
141
+ s.executables = "fizz"
142
+ end
143
+
144
+ install_gemfile <<-G
145
+ gem "fizz", :path => "#{File.expand_path(home("fizz"))}"
146
+ G
147
+ end
148
+
149
+ it "works when unlocked" do
150
+ bundle "exec fizz"
151
+ out.should == "1.0"
152
+ end
153
+
154
+ it "works when locked" do
155
+ bundle "lock"
156
+ should_be_locked
157
+
158
+ bundle "exec fizz"
159
+ out.should == "1.0"
160
+ end
161
+ end
162
+
163
+ describe "from gems bundled via :git" do
164
+ before(:each) do
165
+ build_git "fizz_git" do |s|
166
+ s.executables = "fizz_git"
167
+ end
168
+
169
+ install_gemfile <<-G
170
+ gem "fizz_git", :git => "#{lib_path('fizz_git-1.0')}"
171
+ G
172
+ end
173
+
174
+ it "works when unlocked" do
175
+ bundle "exec fizz_git"
176
+ out.should == "1.0"
177
+ end
178
+
179
+ it "works when locked" do
180
+ bundle "lock"
181
+ should_be_locked
182
+ bundle "exec fizz_git"
183
+ out.should == "1.0"
184
+ end
185
+ end
186
+
187
+ describe "from gems bundled via :git with no gemspec" do
188
+ before(:each) do
189
+ build_git "fizz_no_gemspec", :gemspec => false do |s|
190
+ s.executables = "fizz_no_gemspec"
191
+ end
192
+
193
+ install_gemfile <<-G
194
+ gem "fizz_no_gemspec", "1.0", :git => "#{lib_path('fizz_no_gemspec-1.0')}"
195
+ G
196
+ end
197
+
198
+ it "works when unlocked" do
199
+ bundle "exec fizz_no_gemspec"
200
+ out.should == "1.0"
201
+ end
202
+
203
+ it "works when locked" do
204
+ bundle "lock"
205
+ should_be_locked
206
+ bundle "exec fizz_no_gemspec"
207
+ out.should == "1.0"
208
+ end
209
+ end
210
+
211
+ end
212
+
213
+ describe "bundling bundler" do
214
+ before(:each) do
215
+ gemfile <<-G
216
+ source "file://#{gem_repo1}"
217
+ gem "rack"
218
+ G
219
+
220
+ bundle "install vendor --disable-shared-gems"
221
+ end
222
+
223
+ it "does not explode with --disable-shared-gems" do
224
+ bundle "exec bundle check", :exit_status => true
225
+ exitstatus.should == 0
226
+ end
227
+
228
+ it "does not explode when starting with Bundler.setup" do
229
+ ruby <<-R
230
+ require "rubygems"
231
+ require "bundler"
232
+ Bundler.setup
233
+ puts `bundle check`
234
+ puts $?.exitstatus
235
+ R
236
+
237
+ out.should include("satisfied")
238
+ out.should include("\n0")
239
+ end
240
+ end
241
+ end