bundler 1.7.15 → 1.8.0.pre
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bundler might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.gitignore +5 -14
- data/.rspec +1 -0
- data/.travis.yml +22 -15
- data/CHANGELOG.md +43 -13
- data/CODE_OF_CONDUCT.md +40 -0
- data/CONTRIBUTING.md +14 -12
- data/DEVELOPMENT.md +4 -2
- data/ISSUES.md +1 -1
- data/README.md +10 -14
- data/Rakefile +10 -10
- data/bin/bundle +1 -1
- data/bundler.gemspec +5 -4
- data/lib/bundler.rb +22 -3
- data/lib/bundler/anonymizable_uri.rb +24 -8
- data/lib/bundler/cli.rb +103 -66
- data/lib/bundler/cli/cache.rb +1 -0
- data/lib/bundler/cli/clean.rb +11 -4
- data/lib/bundler/cli/common.rb +2 -0
- data/lib/bundler/cli/console.rb +22 -26
- data/lib/bundler/cli/exec.rb +29 -22
- data/lib/bundler/cli/gem.rb +125 -37
- data/lib/bundler/cli/install.rb +22 -9
- data/lib/bundler/cli/outdated.rb +1 -1
- data/lib/bundler/cli/package.rb +8 -1
- data/lib/bundler/cli/show.rb +29 -3
- data/lib/bundler/cli/update.rb +2 -2
- data/lib/bundler/cli/viz.rb +1 -1
- data/lib/bundler/definition.rb +14 -22
- data/lib/bundler/dependency.rb +8 -1
- data/lib/bundler/dsl.rb +17 -4
- data/lib/bundler/endpoint_specification.rb +1 -1
- data/lib/bundler/env.rb +44 -25
- data/lib/bundler/fetcher.rb +33 -25
- data/lib/bundler/friendly_errors.rb +38 -5
- data/lib/bundler/gem_helper.rb +16 -10
- data/lib/bundler/gem_helpers.rb +1 -0
- data/lib/bundler/graph.rb +4 -1
- data/lib/bundler/index.rb +15 -25
- data/lib/bundler/installer.rb +6 -6
- data/lib/bundler/lockfile_parser.rb +7 -7
- data/lib/bundler/resolver.rb +2 -1
- data/lib/bundler/ruby_version.rb +1 -1
- data/lib/bundler/rubygems_ext.rb +1 -0
- data/lib/bundler/rubygems_integration.rb +1 -1
- data/lib/bundler/runtime.rb +22 -40
- data/lib/bundler/settings.rb +14 -5
- data/lib/bundler/setup.rb +2 -1
- data/lib/bundler/shared_helpers.rb +56 -4
- data/lib/bundler/source.rb +8 -9
- data/lib/bundler/source/git.rb +5 -1
- data/lib/bundler/source/git/git_proxy.rb +4 -0
- data/lib/bundler/source/path.rb +8 -11
- data/lib/bundler/source/path/installer.rb +0 -2
- data/lib/bundler/source/rubygems.rb +58 -72
- data/lib/bundler/templates/newgem/CODE_OF_CONDUCT.md.tt +13 -0
- data/lib/bundler/templates/newgem/LICENSE.txt.tt +17 -18
- data/lib/bundler/templates/newgem/README.md.tt +9 -1
- data/lib/bundler/templates/newgem/Rakefile.tt +2 -0
- data/lib/bundler/templates/newgem/bin/console.tt +14 -0
- data/lib/bundler/templates/newgem/bin/setup.tt +7 -0
- data/lib/bundler/templates/newgem/exe/newgem.tt +3 -0
- data/lib/bundler/templates/newgem/gitignore.tt +2 -0
- data/lib/bundler/templates/newgem/lib/newgem/version.rb.tt +1 -1
- data/lib/bundler/templates/newgem/newgem.gemspec.tt +17 -13
- data/lib/bundler/templates/newgem/test/test_newgem.rb.tt +1 -1
- data/lib/bundler/ui/shell.rb +1 -1
- data/lib/bundler/version.rb +1 -1
- data/lib/bundler/worker.rb +73 -0
- data/man/bundle-config.ronn +17 -15
- data/man/bundle-install.ronn +102 -93
- data/man/bundle-update.ronn +39 -30
- data/man/bundle.ronn +6 -0
- data/man/gemfile.5.ronn +74 -13
- metadata +10 -231
- data/lib/bundler/parallel_workers.rb +0 -18
- data/lib/bundler/parallel_workers/thread_worker.rb +0 -30
- data/lib/bundler/parallel_workers/unix_worker.rb +0 -101
- data/lib/bundler/parallel_workers/worker.rb +0 -69
- data/lib/bundler/templates/newgem/bin/newgem.tt +0 -3
- data/spec/bundler/anonymizable_uri_spec.rb +0 -32
- data/spec/bundler/bundler_spec.rb +0 -72
- data/spec/bundler/cli_spec.rb +0 -16
- data/spec/bundler/definition_spec.rb +0 -22
- data/spec/bundler/dsl_spec.rb +0 -82
- data/spec/bundler/friendly_errors_spec.rb +0 -13
- data/spec/bundler/gem_helper_spec.rb +0 -226
- data/spec/bundler/psyched_yaml_spec.rb +0 -8
- data/spec/bundler/retry_spec.rb +0 -59
- data/spec/bundler/settings_spec.rb +0 -13
- data/spec/bundler/source/rubygems_spec.rb +0 -25
- data/spec/bundler/source_list_spec.rb +0 -361
- data/spec/cache/gems_spec.rb +0 -284
- data/spec/cache/git_spec.rb +0 -188
- data/spec/cache/path_spec.rb +0 -121
- data/spec/cache/platform_spec.rb +0 -57
- data/spec/commands/binstubs_spec.rb +0 -219
- data/spec/commands/check_spec.rb +0 -278
- data/spec/commands/clean_spec.rb +0 -592
- data/spec/commands/config_spec.rb +0 -263
- data/spec/commands/console_spec.rb +0 -76
- data/spec/commands/exec_spec.rb +0 -309
- data/spec/commands/help_spec.rb +0 -39
- data/spec/commands/init_spec.rb +0 -39
- data/spec/commands/inject_spec.rb +0 -78
- data/spec/commands/licenses_spec.rb +0 -18
- data/spec/commands/newgem_spec.rb +0 -428
- data/spec/commands/open_spec.rb +0 -68
- data/spec/commands/outdated_spec.rb +0 -156
- data/spec/commands/package_spec.rb +0 -114
- data/spec/commands/show_spec.rb +0 -125
- data/spec/install/binstubs_spec.rb +0 -24
- data/spec/install/bundler_spec.rb +0 -146
- data/spec/install/deploy_spec.rb +0 -250
- data/spec/install/gemfile/gemspec_spec.rb +0 -170
- data/spec/install/gemfile/git_spec.rb +0 -967
- data/spec/install/gemfile/path_spec.rb +0 -500
- data/spec/install/gemfile_spec.rb +0 -44
- data/spec/install/gems/c_ext_spec.rb +0 -48
- data/spec/install/gems/dependency_api_spec.rb +0 -652
- data/spec/install/gems/env_spec.rb +0 -107
- data/spec/install/gems/flex_spec.rb +0 -314
- data/spec/install/gems/groups_spec.rb +0 -308
- data/spec/install/gems/mirror_spec.rb +0 -39
- data/spec/install/gems/platform_spec.rb +0 -195
- data/spec/install/gems/post_install_spec.rb +0 -121
- data/spec/install/gems/resolving_spec.rb +0 -124
- data/spec/install/gems/simple_case_spec.rb +0 -377
- data/spec/install/gems/sources_spec.rb +0 -386
- data/spec/install/gems/standalone_spec.rb +0 -260
- data/spec/install/gems/sudo_spec.rb +0 -136
- data/spec/install/gems/win32_spec.rb +0 -26
- data/spec/install/gemspecs_spec.rb +0 -50
- data/spec/install/path_spec.rb +0 -150
- data/spec/install/post_bundle_message_spec.rb +0 -142
- data/spec/install/prereleases_spec.rb +0 -43
- data/spec/install/security_policy_spec.rb +0 -77
- data/spec/install/upgrade_spec.rb +0 -26
- data/spec/lock/git_spec.rb +0 -34
- data/spec/lock/lockfile_spec.rb +0 -924
- data/spec/other/bundle_ruby_spec.rb +0 -142
- data/spec/other/cli_dispatch_spec.rb +0 -21
- data/spec/other/ext_spec.rb +0 -60
- data/spec/other/platform_spec.rb +0 -1285
- data/spec/other/ssl_cert_spec.rb +0 -23
- data/spec/quality_spec.rb +0 -88
- data/spec/realworld/dependency_api_spec.rb +0 -60
- data/spec/realworld/edgecases_spec.rb +0 -212
- data/spec/realworld/parallel_spec.rb +0 -71
- data/spec/resolver/basic_spec.rb +0 -66
- data/spec/resolver/platform_spec.rb +0 -88
- data/spec/runtime/executable_spec.rb +0 -149
- data/spec/runtime/load_spec.rb +0 -107
- data/spec/runtime/platform_spec.rb +0 -90
- data/spec/runtime/require_spec.rb +0 -332
- data/spec/runtime/setup_spec.rb +0 -853
- data/spec/runtime/with_clean_env_spec.rb +0 -91
- data/spec/spec_helper.rb +0 -123
- data/spec/support/artifice/endopint_marshal_fail_basic_authentication.rb +0 -13
- data/spec/support/artifice/endpoint.rb +0 -71
- data/spec/support/artifice/endpoint_500.rb +0 -37
- data/spec/support/artifice/endpoint_api_forbidden.rb +0 -11
- data/spec/support/artifice/endpoint_api_missing.rb +0 -16
- data/spec/support/artifice/endpoint_basic_authentication.rb +0 -13
- data/spec/support/artifice/endpoint_creds_diff_host.rb +0 -38
- data/spec/support/artifice/endpoint_extra.rb +0 -31
- data/spec/support/artifice/endpoint_extra_api.rb +0 -32
- data/spec/support/artifice/endpoint_extra_missing.rb +0 -15
- data/spec/support/artifice/endpoint_fallback.rb +0 -17
- data/spec/support/artifice/endpoint_host_redirect.rb +0 -15
- data/spec/support/artifice/endpoint_marshal_fail.rb +0 -11
- data/spec/support/artifice/endpoint_redirect.rb +0 -15
- data/spec/support/artifice/endpoint_strict_basic_authentication.rb +0 -18
- data/spec/support/artifice/endpoint_timeout.rb +0 -13
- data/spec/support/builders.rb +0 -693
- data/spec/support/fakeweb/rack-1.0.0.marshal +0 -2
- data/spec/support/fakeweb/windows.rb +0 -23
- data/spec/support/hax.rb +0 -22
- data/spec/support/helpers.rb +0 -361
- data/spec/support/indexes.rb +0 -280
- data/spec/support/matchers.rb +0 -77
- data/spec/support/path.rb +0 -85
- data/spec/support/permissions.rb +0 -10
- data/spec/support/platforms.rb +0 -94
- data/spec/support/ruby_ext.rb +0 -20
- data/spec/support/rubygems_ext.rb +0 -39
- data/spec/support/streams.rb +0 -13
- data/spec/support/sudo.rb +0 -16
- data/spec/update/gems_spec.rb +0 -201
- data/spec/update/git_spec.rb +0 -283
- data/spec/update/path_spec.rb +0 -18
@@ -1,967 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe "bundle install with git sources" do
|
4
|
-
describe "when floating on master" do
|
5
|
-
before :each do
|
6
|
-
build_git "foo" do |s|
|
7
|
-
s.executables = "foobar"
|
8
|
-
end
|
9
|
-
|
10
|
-
install_gemfile <<-G
|
11
|
-
source "file://#{gem_repo1}"
|
12
|
-
git "#{lib_path('foo-1.0')}" do
|
13
|
-
gem 'foo'
|
14
|
-
end
|
15
|
-
G
|
16
|
-
end
|
17
|
-
|
18
|
-
it "fetches gems" do
|
19
|
-
should_be_installed("foo 1.0")
|
20
|
-
|
21
|
-
run <<-RUBY
|
22
|
-
require 'foo'
|
23
|
-
puts "WIN" unless defined?(FOO_PREV_REF)
|
24
|
-
RUBY
|
25
|
-
|
26
|
-
expect(out).to eq("WIN")
|
27
|
-
end
|
28
|
-
|
29
|
-
it "caches the git repo" do
|
30
|
-
expect(Dir["#{default_bundle_path}/cache/bundler/git/foo-1.0-*"].size).to eq(1)
|
31
|
-
end
|
32
|
-
|
33
|
-
it "caches the evaluated gemspec" do
|
34
|
-
git = update_git "foo" do |s|
|
35
|
-
s.executables = ["foobar"] # we added this the first time, so keep it now
|
36
|
-
s.files = ["bin/foobar"] # updating git nukes the files list
|
37
|
-
foospec = s.to_ruby.gsub(/s\.files.*/, 's.files = `git ls-files -z`.split("\x0")')
|
38
|
-
s.write "foo.gemspec", foospec
|
39
|
-
end
|
40
|
-
|
41
|
-
bundle "update foo"
|
42
|
-
|
43
|
-
sha = git.ref_for("master", 11)
|
44
|
-
spec_file = default_bundle_path.join("bundler/gems/foo-1.0-#{sha}/foo.gemspec").to_s
|
45
|
-
ruby_code = Gem::Specification.load(spec_file).to_ruby
|
46
|
-
file_code = File.read(spec_file)
|
47
|
-
expect(file_code).to eq(ruby_code)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "does not update the git source implicitly" do
|
51
|
-
update_git "foo"
|
52
|
-
|
53
|
-
in_app_root2 do
|
54
|
-
install_gemfile bundled_app2("Gemfile"), <<-G
|
55
|
-
git "#{lib_path('foo-1.0')}" do
|
56
|
-
gem 'foo'
|
57
|
-
end
|
58
|
-
G
|
59
|
-
end
|
60
|
-
|
61
|
-
in_app_root do
|
62
|
-
run <<-RUBY
|
63
|
-
require 'foo'
|
64
|
-
puts "fail" if defined?(FOO_PREV_REF)
|
65
|
-
RUBY
|
66
|
-
|
67
|
-
expect(out).to be_empty
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
it "sets up git gem executables on the path" do
|
72
|
-
pending_jruby_shebang_fix
|
73
|
-
bundle "exec foobar"
|
74
|
-
expect(out).to eq("1.0")
|
75
|
-
end
|
76
|
-
|
77
|
-
it "complains if pinned specs don't exist in the git repo" do
|
78
|
-
build_git "foo"
|
79
|
-
|
80
|
-
install_gemfile <<-G
|
81
|
-
gem "foo", "1.1", :git => "#{lib_path('foo-1.0')}"
|
82
|
-
G
|
83
|
-
|
84
|
-
expect(out).to include("Source contains 'foo' at: 1.0")
|
85
|
-
end
|
86
|
-
|
87
|
-
it "still works after moving the application directory" do
|
88
|
-
bundle "install --path vendor/bundle"
|
89
|
-
FileUtils.mv bundled_app, tmp('bundled_app.bck')
|
90
|
-
|
91
|
-
Dir.chdir tmp('bundled_app.bck')
|
92
|
-
should_be_installed "foo 1.0"
|
93
|
-
end
|
94
|
-
|
95
|
-
it "can still install after moving the application directory" do
|
96
|
-
bundle "install --path vendor/bundle"
|
97
|
-
FileUtils.mv bundled_app, tmp('bundled_app.bck')
|
98
|
-
|
99
|
-
update_git "foo", "1.1", :path => lib_path("foo-1.0")
|
100
|
-
|
101
|
-
Dir.chdir tmp('bundled_app.bck')
|
102
|
-
gemfile tmp('bundled_app.bck/Gemfile'), <<-G
|
103
|
-
source "file://#{gem_repo1}"
|
104
|
-
git "#{lib_path('foo-1.0')}" do
|
105
|
-
gem 'foo'
|
106
|
-
end
|
107
|
-
|
108
|
-
gem "rack", "1.0"
|
109
|
-
G
|
110
|
-
|
111
|
-
bundle "update foo"
|
112
|
-
|
113
|
-
should_be_installed "foo 1.1", "rack 1.0"
|
114
|
-
end
|
115
|
-
|
116
|
-
end
|
117
|
-
|
118
|
-
describe "with an empty git block" do
|
119
|
-
before do
|
120
|
-
build_git "foo"
|
121
|
-
gemfile <<-G
|
122
|
-
source "file://#{gem_repo1}"
|
123
|
-
gem "rack"
|
124
|
-
|
125
|
-
git "#{lib_path("foo-1.0")}" do
|
126
|
-
# this page left intentionally blank
|
127
|
-
end
|
128
|
-
G
|
129
|
-
end
|
130
|
-
|
131
|
-
it "does not explode" do
|
132
|
-
bundle "install"
|
133
|
-
should_be_installed "rack 1.0"
|
134
|
-
end
|
135
|
-
end
|
136
|
-
|
137
|
-
describe "when specifying a revision" do
|
138
|
-
before(:each) do
|
139
|
-
build_git "foo"
|
140
|
-
@revision = revision_for(lib_path("foo-1.0"))
|
141
|
-
update_git "foo"
|
142
|
-
end
|
143
|
-
|
144
|
-
it "works" do
|
145
|
-
install_gemfile <<-G
|
146
|
-
git "#{lib_path('foo-1.0')}", :ref => "#{@revision}" do
|
147
|
-
gem "foo"
|
148
|
-
end
|
149
|
-
G
|
150
|
-
|
151
|
-
run <<-RUBY
|
152
|
-
require 'foo'
|
153
|
-
puts "WIN" unless defined?(FOO_PREV_REF)
|
154
|
-
RUBY
|
155
|
-
|
156
|
-
expect(out).to eq("WIN")
|
157
|
-
end
|
158
|
-
|
159
|
-
it "works when the revision is a symbol" do
|
160
|
-
install_gemfile <<-G
|
161
|
-
git "#{lib_path('foo-1.0')}", :ref => #{@revision.to_sym.inspect} do
|
162
|
-
gem "foo"
|
163
|
-
end
|
164
|
-
G
|
165
|
-
expect(err).to eq("")
|
166
|
-
|
167
|
-
run <<-RUBY
|
168
|
-
require 'foo'
|
169
|
-
puts "WIN" unless defined?(FOO_PREV_REF)
|
170
|
-
RUBY
|
171
|
-
|
172
|
-
expect(out).to eq("WIN")
|
173
|
-
end
|
174
|
-
end
|
175
|
-
|
176
|
-
describe "when specifying local override" do
|
177
|
-
it "uses the local repository instead of checking a new one out" do
|
178
|
-
# We don't generate it because we actually don't need it
|
179
|
-
# build_git "rack", "0.8"
|
180
|
-
|
181
|
-
build_git "rack", "0.8", :path => lib_path('local-rack') do |s|
|
182
|
-
s.write "lib/rack.rb", "puts :LOCAL"
|
183
|
-
end
|
184
|
-
|
185
|
-
gemfile <<-G
|
186
|
-
source "file://#{gem_repo1}"
|
187
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
188
|
-
G
|
189
|
-
|
190
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
191
|
-
bundle :install
|
192
|
-
expect(out).to match(/at #{lib_path('local-rack')}/)
|
193
|
-
|
194
|
-
run "require 'rack'"
|
195
|
-
expect(out).to eq("LOCAL")
|
196
|
-
end
|
197
|
-
|
198
|
-
it "chooses the local repository on runtime" do
|
199
|
-
build_git "rack", "0.8"
|
200
|
-
|
201
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
202
|
-
|
203
|
-
update_git "rack", "0.8", :path => lib_path('local-rack') do |s|
|
204
|
-
s.write "lib/rack.rb", "puts :LOCAL"
|
205
|
-
end
|
206
|
-
|
207
|
-
install_gemfile <<-G
|
208
|
-
source "file://#{gem_repo1}"
|
209
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
210
|
-
G
|
211
|
-
|
212
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
213
|
-
run "require 'rack'"
|
214
|
-
expect(out).to eq("LOCAL")
|
215
|
-
end
|
216
|
-
|
217
|
-
it "updates specs on runtime" do
|
218
|
-
system_gems "nokogiri-1.4.2"
|
219
|
-
|
220
|
-
build_git "rack", "0.8"
|
221
|
-
|
222
|
-
install_gemfile <<-G
|
223
|
-
source "file://#{gem_repo1}"
|
224
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
225
|
-
G
|
226
|
-
|
227
|
-
lockfile0 = File.read(bundled_app("Gemfile.lock"))
|
228
|
-
|
229
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
230
|
-
update_git "rack", "0.8", :path => lib_path('local-rack') do |s|
|
231
|
-
s.add_dependency "nokogiri", "1.4.2"
|
232
|
-
end
|
233
|
-
|
234
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
235
|
-
run "require 'rack'"
|
236
|
-
|
237
|
-
lockfile1 = File.read(bundled_app("Gemfile.lock"))
|
238
|
-
expect(lockfile1).not_to eq(lockfile0)
|
239
|
-
end
|
240
|
-
|
241
|
-
it "updates ref on install" do
|
242
|
-
build_git "rack", "0.8"
|
243
|
-
|
244
|
-
install_gemfile <<-G
|
245
|
-
source "file://#{gem_repo1}"
|
246
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
247
|
-
G
|
248
|
-
|
249
|
-
lockfile0 = File.read(bundled_app("Gemfile.lock"))
|
250
|
-
|
251
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
252
|
-
update_git "rack", "0.8", :path => lib_path('local-rack')
|
253
|
-
|
254
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
255
|
-
bundle :install
|
256
|
-
|
257
|
-
lockfile1 = File.read(bundled_app("Gemfile.lock"))
|
258
|
-
expect(lockfile1).not_to eq(lockfile0)
|
259
|
-
end
|
260
|
-
|
261
|
-
it "explodes if given path does not exist on install" do
|
262
|
-
build_git "rack", "0.8"
|
263
|
-
|
264
|
-
install_gemfile <<-G
|
265
|
-
source "file://#{gem_repo1}"
|
266
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
267
|
-
G
|
268
|
-
|
269
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
270
|
-
bundle :install
|
271
|
-
expect(out).to match(/Cannot use local override for rack-0.8 because #{Regexp.escape(lib_path('local-rack').to_s)} does not exist/)
|
272
|
-
end
|
273
|
-
|
274
|
-
it "explodes if branch is not given on install" do
|
275
|
-
build_git "rack", "0.8"
|
276
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
277
|
-
|
278
|
-
install_gemfile <<-G
|
279
|
-
source "file://#{gem_repo1}"
|
280
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}"
|
281
|
-
G
|
282
|
-
|
283
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
284
|
-
bundle :install
|
285
|
-
expect(out).to match(/cannot use local override/i)
|
286
|
-
end
|
287
|
-
|
288
|
-
it "does not explode if disable_local_branch_check is given" do
|
289
|
-
build_git "rack", "0.8"
|
290
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
291
|
-
|
292
|
-
install_gemfile <<-G
|
293
|
-
source "file://#{gem_repo1}"
|
294
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}"
|
295
|
-
G
|
296
|
-
|
297
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
298
|
-
bundle %|config disable_local_branch_check true|
|
299
|
-
bundle :install
|
300
|
-
expect(out).to match(/Your bundle is complete!/)
|
301
|
-
end
|
302
|
-
|
303
|
-
it "explodes on different branches on install" do
|
304
|
-
build_git "rack", "0.8"
|
305
|
-
|
306
|
-
FileUtils.cp_r("#{lib_path('rack-0.8')}/.", lib_path('local-rack'))
|
307
|
-
|
308
|
-
update_git "rack", "0.8", :path => lib_path('local-rack'), :branch => "another" do |s|
|
309
|
-
s.write "lib/rack.rb", "puts :LOCAL"
|
310
|
-
end
|
311
|
-
|
312
|
-
install_gemfile <<-G
|
313
|
-
source "file://#{gem_repo1}"
|
314
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
315
|
-
G
|
316
|
-
|
317
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
318
|
-
bundle :install
|
319
|
-
expect(out).to match(/is using branch another but Gemfile specifies master/)
|
320
|
-
end
|
321
|
-
|
322
|
-
it "explodes on invalid revision on install" do
|
323
|
-
build_git "rack", "0.8"
|
324
|
-
|
325
|
-
build_git "rack", "0.8", :path => lib_path('local-rack') do |s|
|
326
|
-
s.write "lib/rack.rb", "puts :LOCAL"
|
327
|
-
end
|
328
|
-
|
329
|
-
install_gemfile <<-G
|
330
|
-
source "file://#{gem_repo1}"
|
331
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}", :branch => "master"
|
332
|
-
G
|
333
|
-
|
334
|
-
bundle %|config local.rack #{lib_path('local-rack')}|
|
335
|
-
bundle :install
|
336
|
-
expect(out).to match(/The Gemfile lock is pointing to revision \w+/)
|
337
|
-
end
|
338
|
-
end
|
339
|
-
|
340
|
-
describe "specified inline" do
|
341
|
-
# TODO: Figure out how to write this test so that it is not flaky depending
|
342
|
-
# on the current network situation.
|
343
|
-
# it "supports private git URLs" do
|
344
|
-
# gemfile <<-G
|
345
|
-
# gem "thingy", :git => "git@notthere.fallingsnow.net:somebody/thingy.git"
|
346
|
-
# G
|
347
|
-
#
|
348
|
-
# bundle :install, :expect_err => true
|
349
|
-
#
|
350
|
-
# # p out
|
351
|
-
# # p err
|
352
|
-
# puts err unless err.empty? # This spec fails randomly every so often
|
353
|
-
# err.should include("notthere.fallingsnow.net")
|
354
|
-
# err.should include("ssh")
|
355
|
-
# end
|
356
|
-
|
357
|
-
it "installs from git even if a newer gem is available elsewhere" do
|
358
|
-
build_git "rack", "0.8"
|
359
|
-
|
360
|
-
install_gemfile <<-G
|
361
|
-
source "file://#{gem_repo1}"
|
362
|
-
gem "rack", :git => "#{lib_path('rack-0.8')}"
|
363
|
-
G
|
364
|
-
|
365
|
-
should_be_installed "rack 0.8"
|
366
|
-
end
|
367
|
-
|
368
|
-
it "installs dependencies from git even if a newer gem is available elsewhere" do
|
369
|
-
system_gems "rack-1.0.0"
|
370
|
-
|
371
|
-
build_lib "rack", "1.0", :path => lib_path('nested/bar') do |s|
|
372
|
-
s.write "lib/rack.rb", "puts 'WIN OVERRIDE'"
|
373
|
-
end
|
374
|
-
|
375
|
-
build_git "foo", :path => lib_path('nested') do |s|
|
376
|
-
s.add_dependency "rack", "= 1.0"
|
377
|
-
end
|
378
|
-
|
379
|
-
install_gemfile <<-G
|
380
|
-
source "file://#{gem_repo1}"
|
381
|
-
gem "foo", :git => "#{lib_path('nested')}"
|
382
|
-
G
|
383
|
-
|
384
|
-
run "require 'rack'"
|
385
|
-
expect(out).to eq('WIN OVERRIDE')
|
386
|
-
end
|
387
|
-
|
388
|
-
it "correctly unlocks when changing to a git source" do
|
389
|
-
install_gemfile <<-G
|
390
|
-
source "file://#{gem_repo1}"
|
391
|
-
gem "rack", "0.9.1"
|
392
|
-
G
|
393
|
-
|
394
|
-
build_git "rack", :path => lib_path("rack")
|
395
|
-
|
396
|
-
install_gemfile <<-G
|
397
|
-
source "file://#{gem_repo1}"
|
398
|
-
gem "rack", "1.0.0", :git => "#{lib_path('rack')}"
|
399
|
-
G
|
400
|
-
|
401
|
-
should_be_installed "rack 1.0.0"
|
402
|
-
end
|
403
|
-
|
404
|
-
it "correctly unlocks when changing to a git source without versions" do
|
405
|
-
install_gemfile <<-G
|
406
|
-
source "file://#{gem_repo1}"
|
407
|
-
gem "rack"
|
408
|
-
G
|
409
|
-
|
410
|
-
build_git "rack", "1.2", :path => lib_path("rack")
|
411
|
-
|
412
|
-
install_gemfile <<-G
|
413
|
-
source "file://#{gem_repo1}"
|
414
|
-
gem "rack", :git => "#{lib_path('rack')}"
|
415
|
-
G
|
416
|
-
|
417
|
-
should_be_installed "rack 1.2"
|
418
|
-
end
|
419
|
-
end
|
420
|
-
|
421
|
-
describe "block syntax" do
|
422
|
-
it "pulls all gems from a git block" do
|
423
|
-
build_lib "omg", :path => lib_path('hi2u/omg')
|
424
|
-
build_lib "hi2u", :path => lib_path('hi2u')
|
425
|
-
|
426
|
-
install_gemfile <<-G
|
427
|
-
path "#{lib_path('hi2u')}" do
|
428
|
-
gem "omg"
|
429
|
-
gem "hi2u"
|
430
|
-
end
|
431
|
-
G
|
432
|
-
|
433
|
-
should_be_installed "omg 1.0", "hi2u 1.0"
|
434
|
-
end
|
435
|
-
end
|
436
|
-
|
437
|
-
it "uses a ref if specified" do
|
438
|
-
build_git "foo"
|
439
|
-
@revision = revision_for(lib_path("foo-1.0"))
|
440
|
-
update_git "foo"
|
441
|
-
|
442
|
-
install_gemfile <<-G
|
443
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}", :ref => "#{@revision}"
|
444
|
-
G
|
445
|
-
|
446
|
-
run <<-RUBY
|
447
|
-
require 'foo'
|
448
|
-
puts "WIN" unless defined?(FOO_PREV_REF)
|
449
|
-
RUBY
|
450
|
-
|
451
|
-
expect(out).to eq("WIN")
|
452
|
-
end
|
453
|
-
|
454
|
-
it "correctly handles cases with invalid gemspecs" do
|
455
|
-
build_git "foo" do |s|
|
456
|
-
s.summary = nil
|
457
|
-
end
|
458
|
-
|
459
|
-
install_gemfile <<-G
|
460
|
-
source "file://#{gem_repo1}"
|
461
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
462
|
-
gem "rails", "2.3.2"
|
463
|
-
G
|
464
|
-
|
465
|
-
should_be_installed "foo 1.0"
|
466
|
-
should_be_installed "rails 2.3.2"
|
467
|
-
end
|
468
|
-
|
469
|
-
it "runs the gemspec in the context of its parent directory" do
|
470
|
-
build_lib "bar", :path => lib_path("foo/bar"), :gemspec => false do |s|
|
471
|
-
s.write lib_path("foo/bar/lib/version.rb"), %{BAR_VERSION = '1.0'}
|
472
|
-
s.write "bar.gemspec", <<-G
|
473
|
-
$:.unshift Dir.pwd # For 1.9
|
474
|
-
require 'lib/version'
|
475
|
-
Gem::Specification.new do |s|
|
476
|
-
s.name = 'bar'
|
477
|
-
s.version = BAR_VERSION
|
478
|
-
s.summary = 'Bar'
|
479
|
-
s.files = Dir["lib/**/*.rb"]
|
480
|
-
end
|
481
|
-
G
|
482
|
-
end
|
483
|
-
|
484
|
-
build_git "foo", :path => lib_path("foo") do |s|
|
485
|
-
s.write "bin/foo", ""
|
486
|
-
end
|
487
|
-
|
488
|
-
install_gemfile <<-G
|
489
|
-
source "file://#{gem_repo1}"
|
490
|
-
gem "bar", :git => "#{lib_path("foo")}"
|
491
|
-
gem "rails", "2.3.2"
|
492
|
-
G
|
493
|
-
|
494
|
-
should_be_installed "bar 1.0"
|
495
|
-
should_be_installed "rails 2.3.2"
|
496
|
-
end
|
497
|
-
|
498
|
-
it "installs from git even if a rubygems gem is present" do
|
499
|
-
build_gem "foo", "1.0", :path => lib_path('fake_foo'), :to_system => true do |s|
|
500
|
-
s.write "lib/foo.rb", "raise 'FAIL'"
|
501
|
-
end
|
502
|
-
|
503
|
-
build_git "foo", "1.0"
|
504
|
-
|
505
|
-
install_gemfile <<-G
|
506
|
-
gem "foo", "1.0", :git => "#{lib_path('foo-1.0')}"
|
507
|
-
G
|
508
|
-
|
509
|
-
should_be_installed "foo 1.0"
|
510
|
-
end
|
511
|
-
|
512
|
-
it "fakes the gem out if there is no gemspec" do
|
513
|
-
build_git "foo", :gemspec => false
|
514
|
-
|
515
|
-
install_gemfile <<-G
|
516
|
-
source "file://#{gem_repo1}"
|
517
|
-
gem "foo", "1.0", :git => "#{lib_path('foo-1.0')}"
|
518
|
-
gem "rails", "2.3.2"
|
519
|
-
G
|
520
|
-
|
521
|
-
should_be_installed("foo 1.0")
|
522
|
-
should_be_installed("rails 2.3.2")
|
523
|
-
end
|
524
|
-
|
525
|
-
it "catches git errors and spits out useful output" do
|
526
|
-
gemfile <<-G
|
527
|
-
gem "foo", "1.0", :git => "omgomg"
|
528
|
-
G
|
529
|
-
|
530
|
-
bundle :install, :expect_err => true
|
531
|
-
|
532
|
-
expect(out).to include("Git error:")
|
533
|
-
expect(err).to include("fatal")
|
534
|
-
expect(err).to include("omgomg")
|
535
|
-
end
|
536
|
-
|
537
|
-
it "works when the gem path has spaces in it" do
|
538
|
-
build_git "foo", :path => lib_path('foo space-1.0')
|
539
|
-
|
540
|
-
install_gemfile <<-G
|
541
|
-
gem "foo", :git => "#{lib_path('foo space-1.0')}"
|
542
|
-
G
|
543
|
-
|
544
|
-
should_be_installed "foo 1.0"
|
545
|
-
end
|
546
|
-
|
547
|
-
it "handles repos that have been force-pushed" do
|
548
|
-
build_git "forced", "1.0"
|
549
|
-
|
550
|
-
install_gemfile <<-G
|
551
|
-
git "#{lib_path('forced-1.0')}" do
|
552
|
-
gem 'forced'
|
553
|
-
end
|
554
|
-
G
|
555
|
-
should_be_installed "forced 1.0"
|
556
|
-
|
557
|
-
update_git "forced" do |s|
|
558
|
-
s.write "lib/forced.rb", "FORCED = '1.1'"
|
559
|
-
end
|
560
|
-
|
561
|
-
bundle "update"
|
562
|
-
should_be_installed "forced 1.1"
|
563
|
-
|
564
|
-
Dir.chdir(lib_path('forced-1.0')) do
|
565
|
-
`git reset --hard HEAD^`
|
566
|
-
end
|
567
|
-
|
568
|
-
bundle "update"
|
569
|
-
should_be_installed "forced 1.0"
|
570
|
-
end
|
571
|
-
|
572
|
-
it "ignores submodules if :submodule is not passed" do
|
573
|
-
build_git "submodule", "1.0"
|
574
|
-
build_git "has_submodule", "1.0" do |s|
|
575
|
-
s.add_dependency "submodule"
|
576
|
-
end
|
577
|
-
Dir.chdir(lib_path('has_submodule-1.0')) do
|
578
|
-
`git submodule add #{lib_path('submodule-1.0')} submodule-1.0`
|
579
|
-
`git commit -m "submodulator"`
|
580
|
-
end
|
581
|
-
|
582
|
-
install_gemfile <<-G, :expect_err => true
|
583
|
-
git "#{lib_path('has_submodule-1.0')}" do
|
584
|
-
gem "has_submodule"
|
585
|
-
end
|
586
|
-
G
|
587
|
-
expect(out).to match(/could not find gem 'submodule/i)
|
588
|
-
|
589
|
-
should_not_be_installed "has_submodule 1.0", :expect_err => true
|
590
|
-
end
|
591
|
-
|
592
|
-
it "handles repos with submodules" do
|
593
|
-
build_git "submodule", "1.0"
|
594
|
-
build_git "has_submodule", "1.0" do |s|
|
595
|
-
s.add_dependency "submodule"
|
596
|
-
end
|
597
|
-
Dir.chdir(lib_path('has_submodule-1.0')) do
|
598
|
-
`git submodule add #{lib_path('submodule-1.0')} submodule-1.0`
|
599
|
-
`git commit -m "submodulator"`
|
600
|
-
end
|
601
|
-
|
602
|
-
install_gemfile <<-G
|
603
|
-
git "#{lib_path('has_submodule-1.0')}", :submodules => true do
|
604
|
-
gem "has_submodule"
|
605
|
-
end
|
606
|
-
G
|
607
|
-
|
608
|
-
should_be_installed "has_submodule 1.0"
|
609
|
-
end
|
610
|
-
|
611
|
-
it "handles implicit updates when modifying the source info" do
|
612
|
-
git = build_git "foo"
|
613
|
-
|
614
|
-
install_gemfile <<-G
|
615
|
-
git "#{lib_path('foo-1.0')}" do
|
616
|
-
gem "foo"
|
617
|
-
end
|
618
|
-
G
|
619
|
-
|
620
|
-
update_git "foo"
|
621
|
-
update_git "foo"
|
622
|
-
|
623
|
-
install_gemfile <<-G
|
624
|
-
git "#{lib_path('foo-1.0')}", :ref => "#{git.ref_for('HEAD^')}" do
|
625
|
-
gem "foo"
|
626
|
-
end
|
627
|
-
G
|
628
|
-
|
629
|
-
run <<-RUBY
|
630
|
-
require 'foo'
|
631
|
-
puts "WIN" if FOO_PREV_REF == '#{git.ref_for("HEAD^^")}'
|
632
|
-
RUBY
|
633
|
-
|
634
|
-
expect(out).to eq("WIN")
|
635
|
-
end
|
636
|
-
|
637
|
-
it "does not to a remote fetch if the revision is cached locally" do
|
638
|
-
build_git "foo"
|
639
|
-
|
640
|
-
install_gemfile <<-G
|
641
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
642
|
-
G
|
643
|
-
|
644
|
-
FileUtils.rm_rf(lib_path('foo-1.0'))
|
645
|
-
|
646
|
-
bundle "install"
|
647
|
-
expect(out).not_to match(/updating/i)
|
648
|
-
end
|
649
|
-
|
650
|
-
it "doesn't blow up if bundle install is run twice in a row" do
|
651
|
-
build_git "foo"
|
652
|
-
|
653
|
-
gemfile <<-G
|
654
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
655
|
-
G
|
656
|
-
|
657
|
-
bundle "install"
|
658
|
-
bundle "install", :exitstatus => true
|
659
|
-
expect(exitstatus).to eq(0)
|
660
|
-
end
|
661
|
-
|
662
|
-
it "does not duplicate git gem sources" do
|
663
|
-
build_lib "foo", :path => lib_path('nested/foo')
|
664
|
-
build_lib "bar", :path => lib_path('nested/bar')
|
665
|
-
|
666
|
-
build_git "foo", :path => lib_path('nested')
|
667
|
-
build_git "bar", :path => lib_path('nested')
|
668
|
-
|
669
|
-
gemfile <<-G
|
670
|
-
gem "foo", :git => "#{lib_path('nested')}"
|
671
|
-
gem "bar", :git => "#{lib_path('nested')}"
|
672
|
-
G
|
673
|
-
|
674
|
-
bundle "install"
|
675
|
-
expect(File.read(bundled_app("Gemfile.lock")).scan('GIT').size).to eq(1)
|
676
|
-
end
|
677
|
-
|
678
|
-
describe "switching sources" do
|
679
|
-
it "doesn't explode when switching Path to Git sources" do
|
680
|
-
build_gem "foo", "1.0", :to_system => true do |s|
|
681
|
-
s.write "lib/foo.rb", "raise 'fail'"
|
682
|
-
end
|
683
|
-
build_lib "foo", "1.0", :path => lib_path('bar/foo')
|
684
|
-
build_git "bar", "1.0", :path => lib_path('bar') do |s|
|
685
|
-
s.add_dependency 'foo'
|
686
|
-
end
|
687
|
-
|
688
|
-
install_gemfile <<-G
|
689
|
-
source "file://#{gem_repo1}"
|
690
|
-
gem "bar", :path => "#{lib_path('bar')}"
|
691
|
-
G
|
692
|
-
|
693
|
-
install_gemfile <<-G
|
694
|
-
source "file://#{gem_repo1}"
|
695
|
-
gem "bar", :git => "#{lib_path('bar')}"
|
696
|
-
G
|
697
|
-
|
698
|
-
should_be_installed "foo 1.0", "bar 1.0"
|
699
|
-
end
|
700
|
-
|
701
|
-
it "doesn't explode when switching Gem to Git source" do
|
702
|
-
install_gemfile <<-G
|
703
|
-
source "file://#{gem_repo1}"
|
704
|
-
gem "rack-obama"
|
705
|
-
gem "rack", "1.0.0"
|
706
|
-
G
|
707
|
-
|
708
|
-
build_git "rack", "1.0" do |s|
|
709
|
-
s.write "lib/new_file.rb", "puts 'USING GIT'"
|
710
|
-
end
|
711
|
-
|
712
|
-
install_gemfile <<-G
|
713
|
-
source "file://#{gem_repo1}"
|
714
|
-
gem "rack-obama"
|
715
|
-
gem "rack", "1.0.0", :git => "#{lib_path("rack-1.0")}"
|
716
|
-
G
|
717
|
-
|
718
|
-
run "require 'new_file'"
|
719
|
-
expect(out).to eq("USING GIT")
|
720
|
-
end
|
721
|
-
end
|
722
|
-
|
723
|
-
describe "bundle install after the remote has been updated" do
|
724
|
-
it "installs" do
|
725
|
-
build_git "valim"
|
726
|
-
|
727
|
-
install_gemfile <<-G
|
728
|
-
gem "valim", :git => "file://#{lib_path("valim-1.0")}"
|
729
|
-
G
|
730
|
-
|
731
|
-
old_revision = revision_for(lib_path("valim-1.0"))
|
732
|
-
update_git "valim"
|
733
|
-
new_revision = revision_for(lib_path("valim-1.0"))
|
734
|
-
|
735
|
-
lockfile = File.read(bundled_app("Gemfile.lock"))
|
736
|
-
File.open(bundled_app("Gemfile.lock"), "w") do |file|
|
737
|
-
file.puts lockfile.gsub(/revision: #{old_revision}/, "revision: #{new_revision}")
|
738
|
-
end
|
739
|
-
|
740
|
-
bundle "install"
|
741
|
-
|
742
|
-
run <<-R
|
743
|
-
require "valim"
|
744
|
-
puts VALIM_PREV_REF
|
745
|
-
R
|
746
|
-
|
747
|
-
expect(out).to eq(old_revision)
|
748
|
-
end
|
749
|
-
end
|
750
|
-
|
751
|
-
describe "bundle install --deployment with git sources" do
|
752
|
-
it "works" do
|
753
|
-
build_git "valim", :path => lib_path('valim')
|
754
|
-
|
755
|
-
install_gemfile <<-G
|
756
|
-
source "file://#{gem_repo1}"
|
757
|
-
gem "valim", "= 1.0", :git => "#{lib_path('valim')}"
|
758
|
-
G
|
759
|
-
|
760
|
-
simulate_new_machine
|
761
|
-
|
762
|
-
bundle "install --deployment", :exitstatus => true
|
763
|
-
expect(exitstatus).to eq(0)
|
764
|
-
end
|
765
|
-
end
|
766
|
-
|
767
|
-
describe "gem install hooks" do
|
768
|
-
it "runs pre-install hooks" do
|
769
|
-
build_git "foo"
|
770
|
-
gemfile <<-G
|
771
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
772
|
-
G
|
773
|
-
|
774
|
-
File.open(lib_path("install_hooks.rb"), "w") do |h|
|
775
|
-
h.write <<-H
|
776
|
-
require 'rubygems'
|
777
|
-
Gem.pre_install_hooks << lambda do |inst|
|
778
|
-
STDERR.puts "Ran pre-install hook: \#{inst.spec.full_name}"
|
779
|
-
end
|
780
|
-
H
|
781
|
-
end
|
782
|
-
|
783
|
-
bundle :install, :expect_err => true,
|
784
|
-
:requires => [lib_path('install_hooks.rb')]
|
785
|
-
expect(err).to eq("Ran pre-install hook: foo-1.0")
|
786
|
-
end
|
787
|
-
|
788
|
-
it "runs post-install hooks" do
|
789
|
-
build_git "foo"
|
790
|
-
gemfile <<-G
|
791
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
792
|
-
G
|
793
|
-
|
794
|
-
File.open(lib_path("install_hooks.rb"), "w") do |h|
|
795
|
-
h.write <<-H
|
796
|
-
require 'rubygems'
|
797
|
-
Gem.post_install_hooks << lambda do |inst|
|
798
|
-
STDERR.puts "Ran post-install hook: \#{inst.spec.full_name}"
|
799
|
-
end
|
800
|
-
H
|
801
|
-
end
|
802
|
-
|
803
|
-
bundle :install, :expect_err => true,
|
804
|
-
:requires => [lib_path('install_hooks.rb')]
|
805
|
-
expect(err).to eq("Ran post-install hook: foo-1.0")
|
806
|
-
end
|
807
|
-
|
808
|
-
it "complains if the install hook fails" do
|
809
|
-
build_git "foo"
|
810
|
-
gemfile <<-G
|
811
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
812
|
-
G
|
813
|
-
|
814
|
-
File.open(lib_path("install_hooks.rb"), "w") do |h|
|
815
|
-
h.write <<-H
|
816
|
-
require 'rubygems'
|
817
|
-
Gem.pre_install_hooks << lambda do |inst|
|
818
|
-
false
|
819
|
-
end
|
820
|
-
H
|
821
|
-
end
|
822
|
-
|
823
|
-
bundle :install, :expect_err => true,
|
824
|
-
:requires => [lib_path('install_hooks.rb')]
|
825
|
-
expect(out).to include("failed for foo-1.0")
|
826
|
-
end
|
827
|
-
end
|
828
|
-
|
829
|
-
context "with an extension" do
|
830
|
-
it "installs the extension" do
|
831
|
-
build_git "foo" do |s|
|
832
|
-
s.add_dependency "rake"
|
833
|
-
s.extensions << "Rakefile"
|
834
|
-
s.write "Rakefile", <<-RUBY
|
835
|
-
task :default do
|
836
|
-
path = File.expand_path("../lib", __FILE__)
|
837
|
-
FileUtils.mkdir_p(path)
|
838
|
-
File.open("\#{path}/foo.rb", "w") do |f|
|
839
|
-
f.puts "FOO = 'YES'"
|
840
|
-
end
|
841
|
-
end
|
842
|
-
RUBY
|
843
|
-
end
|
844
|
-
|
845
|
-
install_gemfile <<-G
|
846
|
-
source "file://#{gem_repo1}"
|
847
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
848
|
-
G
|
849
|
-
|
850
|
-
run <<-R
|
851
|
-
require 'foo'
|
852
|
-
puts FOO
|
853
|
-
R
|
854
|
-
expect(out).to eq("YES")
|
855
|
-
end
|
856
|
-
|
857
|
-
it "does not use old extension after ref changes" do
|
858
|
-
git_reader = build_git "foo", :no_default => true do |s|
|
859
|
-
s.extensions = ["ext/extconf.rb"]
|
860
|
-
s.write "ext/extconf.rb", <<-RUBY
|
861
|
-
require "mkmf"
|
862
|
-
create_makefile("foo")
|
863
|
-
RUBY
|
864
|
-
s.write "ext/foo.c", "void Init_foo() {}"
|
865
|
-
end
|
866
|
-
|
867
|
-
2.times do |i|
|
868
|
-
Dir.chdir(git_reader.path) do
|
869
|
-
File.open("ext/foo.c", "w") do |file|
|
870
|
-
file.write <<-C
|
871
|
-
#include "ruby.h"
|
872
|
-
VALUE foo() { return INT2FIX(#{i}); }
|
873
|
-
void Init_foo() { rb_define_global_function("foo", &foo, 0); }
|
874
|
-
C
|
875
|
-
end
|
876
|
-
`git commit -m 'commit for iteration #{i}' ext/foo.c`
|
877
|
-
end
|
878
|
-
git_sha = git_reader.ref_for("HEAD")
|
879
|
-
|
880
|
-
install_gemfile <<-G
|
881
|
-
source "file://#{gem_repo1}"
|
882
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}", :ref => "#{git_sha}"
|
883
|
-
G
|
884
|
-
|
885
|
-
run <<-R
|
886
|
-
require 'foo'
|
887
|
-
puts foo
|
888
|
-
R
|
889
|
-
|
890
|
-
expect(out).to eq(i.to_s)
|
891
|
-
end
|
892
|
-
end
|
893
|
-
|
894
|
-
it "does not prompt to gem install if extension fails" do
|
895
|
-
build_git "foo" do |s|
|
896
|
-
s.add_dependency "rake"
|
897
|
-
s.extensions << "Rakefile"
|
898
|
-
s.write "Rakefile", <<-RUBY
|
899
|
-
task :default do
|
900
|
-
raise
|
901
|
-
end
|
902
|
-
RUBY
|
903
|
-
end
|
904
|
-
|
905
|
-
install_gemfile <<-G
|
906
|
-
source "file://#{gem_repo1}"
|
907
|
-
gem "foo", :git => "#{lib_path('foo-1.0')}"
|
908
|
-
G
|
909
|
-
|
910
|
-
expect(out).to include("An error occurred while installing foo (1.0)")
|
911
|
-
expect(out).not_to include("gem install foo")
|
912
|
-
end
|
913
|
-
end
|
914
|
-
|
915
|
-
it "ignores git environment variables" do
|
916
|
-
build_git "xxxxxx" do |s|
|
917
|
-
s.executables = "xxxxxxbar"
|
918
|
-
end
|
919
|
-
|
920
|
-
Bundler::SharedHelpers.with_clean_git_env do
|
921
|
-
ENV['GIT_DIR'] = 'bar'
|
922
|
-
ENV['GIT_WORK_TREE'] = 'bar'
|
923
|
-
|
924
|
-
install_gemfile <<-G, :exitstatus => true
|
925
|
-
source "file://#{gem_repo1}"
|
926
|
-
git "#{lib_path('xxxxxx-1.0')}" do
|
927
|
-
gem 'xxxxxx'
|
928
|
-
end
|
929
|
-
G
|
930
|
-
|
931
|
-
expect(exitstatus).to eq(0)
|
932
|
-
expect(ENV['GIT_DIR']).to eq('bar')
|
933
|
-
expect(ENV['GIT_WORK_TREE']).to eq('bar')
|
934
|
-
end
|
935
|
-
end
|
936
|
-
|
937
|
-
describe "without git installed" do
|
938
|
-
it "prints a better error message" do
|
939
|
-
build_git "foo"
|
940
|
-
|
941
|
-
install_gemfile <<-G
|
942
|
-
git "#{lib_path('foo-1.0')}" do
|
943
|
-
gem 'foo'
|
944
|
-
end
|
945
|
-
G
|
946
|
-
|
947
|
-
bundle "update", :env => {"PATH" => ""}
|
948
|
-
expect(out).to include("You need to install git to be able to use gems from git repositories. For help installing git, please refer to GitHub's tutorial at https://help.github.com/articles/set-up-git")
|
949
|
-
end
|
950
|
-
|
951
|
-
it "installs a packaged git gem successfully" do
|
952
|
-
build_git "foo"
|
953
|
-
|
954
|
-
install_gemfile <<-G
|
955
|
-
git "#{lib_path('foo-1.0')}" do
|
956
|
-
gem 'foo'
|
957
|
-
end
|
958
|
-
G
|
959
|
-
bundle "package --all"
|
960
|
-
simulate_new_machine
|
961
|
-
|
962
|
-
bundle "install", :env => {"PATH" => ""}, :exitstatus => true
|
963
|
-
expect(out).to_not include("You need to install git to be able to use gems from git repositories.")
|
964
|
-
expect(exitstatus).to be_zero
|
965
|
-
end
|
966
|
-
end
|
967
|
-
end
|