diff options
author | Hiroshi SHIBATA <hsbt@ruby-lang.org> | 2021-08-02 12:07:39 +0900 |
---|---|---|
committer | nagachika <nagachika@ruby-lang.org> | 2021-08-19 15:46:40 +0900 |
commit | 41a28637807bef9b15c404c93a778aaa6266ace7 (patch) | |
tree | 5a85615a3ff7fa753540f095f446babc1b5fe162 /spec | |
parent | 679185d6c87e0f2e4f6a5da5ce50d02c80ab31b1 (diff) |
Merge RubyGems 3.2.25 and Bundler 2.2.25
Diffstat (limited to 'spec')
49 files changed, 585 insertions, 157 deletions
diff --git a/spec/bundler/bundler/cli_spec.rb b/spec/bundler/bundler/cli_spec.rb index cc8949d27d..c9dd101f55 100644 --- a/spec/bundler/bundler/cli_spec.rb +++ b/spec/bundler/bundler/cli_spec.rb @@ -129,18 +129,18 @@ RSpec.describe "bundle executable" do context "with --verbose" do it "prints the running command" do - gemfile "" + gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle "info bundler", :verbose => true expect(out).to start_with("Running `bundle info bundler --verbose` with bundler #{Bundler::VERSION}") end it "doesn't print defaults" do - install_gemfile "", :verbose => true + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"", :verbose => true expect(out).to start_with("Running `bundle install --verbose` with bundler #{Bundler::VERSION}") end it "doesn't print defaults" do - install_gemfile "", :verbose => true + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"", :verbose => true expect(out).to start_with("Running `bundle install --verbose` with bundler #{Bundler::VERSION}") end end diff --git a/spec/bundler/bundler/dsl_spec.rb b/spec/bundler/bundler/dsl_spec.rb index a47dd6e399..e6cd43ab59 100644 --- a/spec/bundler/bundler/dsl_spec.rb +++ b/spec/bundler/bundler/dsl_spec.rb @@ -241,4 +241,21 @@ RSpec.describe Bundler::Dsl do end end end + + describe "#check_primary_source_safety" do + context "when a global source is not defined implicitly" do + it "will raise a major deprecation warning" do + not_a_global_source = double("not-a-global-source", :no_remotes? => true) + allow(Bundler::Source::Rubygems).to receive(:new).and_return(not_a_global_source) + + warning = "This Gemfile does not include an explicit global source. " \ + "Not using an explicit global source may result in a different lockfile being generated depending on " \ + "the gems you have installed locally before bundler is run." \ + "Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\"." + expect(Bundler::SharedHelpers).to receive(:major_deprecation).with(2, warning) + + subject.check_primary_source_safety + end + end + end end diff --git a/spec/bundler/bundler/env_spec.rb b/spec/bundler/bundler/env_spec.rb index ccdfd27276..513c42ac09 100644 --- a/spec/bundler/bundler/env_spec.rb +++ b/spec/bundler/bundler/env_spec.rb @@ -73,7 +73,7 @@ RSpec.describe Bundler::Env do context "when there is a Gemfile and a lockfile and print_gemfile is true" do before do - gemfile "gem 'rack', '1.0.0'" + gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem 'rack', '1.0.0'" lockfile <<-L GEM @@ -137,7 +137,7 @@ RSpec.describe Bundler::Env do end before do - gemfile("gemspec") + gemfile("source \"#{file_uri_for(gem_repo1)}\"; gemspec") File.open(bundled_app.join("foo.gemspec"), "wb") do |f| f.write(gemspec) diff --git a/spec/bundler/bundler/plugin/index_spec.rb b/spec/bundler/bundler/plugin/index_spec.rb index bf32c3e2ba..d34b0de342 100644 --- a/spec/bundler/bundler/plugin/index_spec.rb +++ b/spec/bundler/bundler/plugin/index_spec.rb @@ -5,7 +5,7 @@ RSpec.describe Bundler::Plugin::Index do before do allow(Bundler::SharedHelpers).to receive(:find_gemfile).and_return(bundled_app_gemfile) - gemfile "" + gemfile "source \"#{file_uri_for(gem_repo1)}\"" path = lib_path(plugin_name) index.register_plugin("new-plugin", path.to_s, [path.join("lib").to_s], commands, sources, hooks) end diff --git a/spec/bundler/bundler/source/rubygems_spec.rb b/spec/bundler/bundler/source/rubygems_spec.rb index 7c457a7265..884fa81046 100644 --- a/spec/bundler/bundler/source/rubygems_spec.rb +++ b/spec/bundler/bundler/source/rubygems_spec.rb @@ -30,4 +30,18 @@ RSpec.describe Bundler::Source::Rubygems do end end end + + describe "#no_remotes?" do + context "when no remote provided" do + it "returns a truthy value" do + expect(described_class.new("remotes" => []).no_remotes?).to be_truthy + end + end + + context "when a remote provided" do + it "returns a falsey value" do + expect(described_class.new("remotes" => ["https://rubygems.org"]).no_remotes?).to be_falsey + end + end + end end diff --git a/spec/bundler/bundler/source_list_spec.rb b/spec/bundler/bundler/source_list_spec.rb index c2d1978b29..f860e9ff58 100644 --- a/spec/bundler/bundler/source_list_spec.rb +++ b/spec/bundler/bundler/source_list_spec.rb @@ -441,4 +441,19 @@ RSpec.describe Bundler::SourceList do source_list.remote! end end + + describe "implicit_global_source?" do + context "when a global rubygem source provided" do + it "returns a falsy value" do + source_list.add_global_rubygems_remote("https://rubygems.org") + + expect(source_list.implicit_global_source?).to be_falsey + end + end + context "when no global rubygem source provided" do + it "returns a truthy value" do + expect(source_list.implicit_global_source?).to be_truthy + end + end + end end diff --git a/spec/bundler/bundler/worker_spec.rb b/spec/bundler/bundler/worker_spec.rb index 2e5642709d..e4ebbd2932 100644 --- a/spec/bundler/bundler/worker_spec.rb +++ b/spec/bundler/bundler/worker_spec.rb @@ -19,4 +19,51 @@ RSpec.describe Bundler::Worker do end end end + + describe "handling interrupts" do + let(:status) do + pid = Process.fork do + $stderr.reopen File.new("/dev/null", "w") + Signal.trap "INT", previous_interrupt_handler + subject.enq "a" + subject.stop unless interrupt_before_stopping + Process.kill "INT", Process.pid + end + + Process.wait2(pid).last + end + + before do + skip "requires Process.fork" unless Process.respond_to?(:fork) + end + + context "when interrupted before stopping" do + let(:interrupt_before_stopping) { true } + let(:previous_interrupt_handler) { ->(*) { exit 0 } } + + it "aborts" do + expect(status.exitstatus).to eq(1) + end + end + + context "when interrupted after stopping" do + let(:interrupt_before_stopping) { false } + + context "when the previous interrupt handler was the default" do + let(:previous_interrupt_handler) { "DEFAULT" } + + it "uses the default interrupt handler" do + expect(status).to be_signaled + end + end + + context "when the previous interrupt handler was customized" do + let(:previous_interrupt_handler) { ->(*) { exit 42 } } + + it "restores the custom interrupt handler after stopping" do + expect(status.exitstatus).to eq(42) + end + end + end + end end diff --git a/spec/bundler/cache/gems_spec.rb b/spec/bundler/cache/gems_spec.rb index 161ec64218..72e372fb41 100644 --- a/spec/bundler/cache/gems_spec.rb +++ b/spec/bundler/cache/gems_spec.rb @@ -4,6 +4,7 @@ RSpec.describe "bundle cache" do shared_examples_for "when there are only gemsources" do before :each do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' G @@ -39,6 +40,7 @@ RSpec.describe "bundle cache" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -49,6 +51,7 @@ RSpec.describe "bundle cache" do system_gems "rack-1.0.0", :path => default_bundle_path gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -64,6 +67,7 @@ RSpec.describe "bundle cache" do cache_gems "rack-1.0.0" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -100,7 +104,7 @@ RSpec.describe "bundle cache" do it "uses builtin gems when installing to system gems" do bundle "config set path.system true" - install_gemfile %(gem 'builtin_gem', '1.0.2') + install_gemfile %(source "#{file_uri_for(gem_repo1)}"; gem 'builtin_gem', '1.0.2') expect(the_bundle).to include_gems("builtin_gem 1.0.2") end @@ -134,6 +138,7 @@ RSpec.describe "bundle cache" do bundle "config set path.system true" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'builtin_gem', '1.0.2' G @@ -302,6 +307,7 @@ RSpec.describe "bundle cache" do :path => bundled_app("vendor/cache") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo-bundler" G diff --git a/spec/bundler/cache/git_spec.rb b/spec/bundler/cache/git_spec.rb index 25f12a9e87..b88993e9b1 100644 --- a/spec/bundler/cache/git_spec.rb +++ b/spec/bundler/cache/git_spec.rb @@ -18,6 +18,7 @@ RSpec.describe "bundle cache with git" do ref = git.ref_for("master", 11) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -36,6 +37,7 @@ RSpec.describe "bundle cache with git" do ref = git.ref_for("master", 11) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -55,6 +57,7 @@ RSpec.describe "bundle cache with git" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -72,6 +75,7 @@ RSpec.describe "bundle cache with git" do old_ref = git.ref_for("master", 11) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -102,6 +106,7 @@ RSpec.describe "bundle cache with git" do old_ref = git.ref_for("master", 11) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -130,6 +135,7 @@ RSpec.describe "bundle cache with git" do ref = git.ref_for("master", 11) gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-invalid")}', :branch => :master G @@ -160,6 +166,7 @@ RSpec.describe "bundle cache with git" do sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("has_submodule-1.0")}", :submodules => true do gem "has_submodule" end @@ -183,6 +190,7 @@ RSpec.describe "bundle cache with git" do update_git("foo") {|s| s.write "foo.gemspec", spec_lines.join("\n") } install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G bundle "config set cache_all true" @@ -197,6 +205,7 @@ RSpec.describe "bundle cache with git" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G bundle "config set cache_all true" diff --git a/spec/bundler/cache/path_spec.rb b/spec/bundler/cache/path_spec.rb index c81dda7405..2ad136a008 100644 --- a/spec/bundler/cache/path_spec.rb +++ b/spec/bundler/cache/path_spec.rb @@ -5,6 +5,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo", :path => bundled_app("lib/foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{bundled_app("lib/foo")}' G @@ -18,6 +19,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -36,6 +38,7 @@ RSpec.describe "bundle cache with path" do build_lib libname, :path => libpath install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "#{libname}", :path => '#{libpath}' G @@ -51,6 +54,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -73,6 +77,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -84,6 +89,7 @@ RSpec.describe "bundle cache with path" do build_lib "bar" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "bar", :path => '#{lib_path("bar-1.0")}' G @@ -95,6 +101,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -107,6 +114,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -119,6 +127,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -127,6 +136,7 @@ RSpec.describe "bundle cache with path" do build_lib "bar" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' gem "bar", :path => '#{lib_path("bar-1.0")}' G @@ -139,6 +149,7 @@ RSpec.describe "bundle cache with path" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' G @@ -147,6 +158,7 @@ RSpec.describe "bundle cache with path" do build_lib "baz" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => '#{lib_path("foo-1.0")}' gem "baz", :path => '#{lib_path("baz-1.0")}' G diff --git a/spec/bundler/commands/binstubs_spec.rb b/spec/bundler/commands/binstubs_spec.rb index 3b177b32ea..fb5da98bf3 100644 --- a/spec/bundler/commands/binstubs_spec.rb +++ b/spec/bundler/commands/binstubs_spec.rb @@ -140,8 +140,15 @@ RSpec.describe "bundle binstubs <gem>" do it "runs the correct version of bundler" do sys_exec "bin/bundle install", :env => { "BUNDLER_VERSION" => "999.999.999" }, :raise_on_error => false expect(exitstatus).to eq(42) - expect(err).to include("Activating bundler (~> 999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '~> 999.999'`") + expect(err).to include("Activating bundler (999.999.999) failed:"). + and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") + end + + it "runs the correct version of bundler even if a higher version is installed" do + system_gems "bundler-999.999.998", "bundler-999.999.999" + + sys_exec "bin/bundle install", :env => { "BUNDLER_VERSION" => "999.999.998", "DEBUG" => "1" }, :raise_on_error => false + expect(out).to include %(Using bundler 999.999.998\n) end end @@ -215,8 +222,8 @@ RSpec.describe "bundle binstubs <gem>" do it "calls through to the explicit bundler version" do sys_exec "bin/bundle update --bundler=999.999.999", :raise_on_error => false expect(exitstatus).to eq(42) - expect(err).to include("Activating bundler (~> 999.999) failed:"). - and include("To install the version of bundler this project requires, run `gem install bundler -v '~> 999.999'`") + expect(err).to include("Activating bundler (999.999.999) failed:"). + and include("To install the version of bundler this project requires, run `gem install bundler -v '999.999.999'`") end end @@ -254,6 +261,7 @@ RSpec.describe "bundle binstubs <gem>" do s.executables = %w[foo] end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo")}" G @@ -269,6 +277,7 @@ RSpec.describe "bundle binstubs <gem>" do s.executables = %w[foo] end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo")}" G diff --git a/spec/bundler/commands/check_spec.rb b/spec/bundler/commands/check_spec.rb index 88950cef85..c48220f8df 100644 --- a/spec/bundler/commands/check_spec.rb +++ b/spec/bundler/commands/check_spec.rb @@ -319,6 +319,7 @@ RSpec.describe "bundle check" do describe "when using only scoped rubygems sources" do before do gemfile <<~G + source "#{file_uri_for(gem_repo2)}" source "#{file_uri_for(gem_repo1)}" do gem "rack" end @@ -343,6 +344,7 @@ RSpec.describe "bundle check" do end gemfile <<~G + source "#{file_uri_for(gem_repo1)}" source "#{file_uri_for(gem_repo4)}" do gem "depends_on_rack" end @@ -355,6 +357,7 @@ RSpec.describe "bundle check" do expect(out).to include("The Gemfile's dependencies are satisfied") expect(lockfile).to eq <<~L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: GEM diff --git a/spec/bundler/commands/clean_spec.rb b/spec/bundler/commands/clean_spec.rb index 7c43aaabc4..429fb17d82 100644 --- a/spec/bundler/commands/clean_spec.rb +++ b/spec/bundler/commands/clean_spec.rb @@ -261,6 +261,7 @@ RSpec.describe "bundle clean" do revision = revision_for(lib_path("rails")) gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "activesupport", :git => "#{lib_path("rails")}", :ref => '#{revision}' G @@ -625,21 +626,19 @@ RSpec.describe "bundle clean" do end it "when using --force, it doesn't remove default gem binaries" do - skip "does not work on ruby 3.0 because it changes the path to look for default gems, tsort is a default gem there, and we can't install it either like we do with fiddle because it doesn't yet exist" unless RUBY_VERSION < "3.0.0" + skip "does not work on old rubies because the realworld gems that need to be installed don't support them" if RUBY_VERSION < "2.7.0" skip "does not work on rubygems versions where `--install_dir` doesn't respect --default" unless Gem::Installer.for_spec(loaded_gemspec, :install_dir => "/foo").default_spec_file == "/foo/specifications/default/bundler-#{Bundler::VERSION}.gemspec" # Since rubygems 3.2.0.rc.2 default_irb_version = ruby "gem 'irb', '< 999999'; require 'irb'; puts IRB::VERSION", :raise_on_error => false skip "irb isn't a default gem" if default_irb_version.empty? - build_repo2 do - # simulate executable for default gem - build_gem "irb", default_irb_version, :to_system => true, :default => true do |s| - s.executables = "irb" - end + # simulate executable for default gem + build_gem "irb", default_irb_version, :to_system => true, :default => true do |s| + s.executables = "irb" end - realworld_system_gems "fiddle --version 1.0.0" + realworld_system_gems "fiddle --version 1.0.6", "tsort --version 0.1.0", "pathname --version 0.1.0", "set --version 1.0.1" install_gemfile <<-G source "#{file_uri_for(gem_repo2)}" @@ -869,6 +868,7 @@ RSpec.describe "bundle clean" do expect(very_simple_binary_extensions_dir).to exist gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "very_simple_git_binary", :git => "#{lib_path("very_simple_git_binary-1.0")}", :ref => "#{revision}" G @@ -878,6 +878,7 @@ RSpec.describe "bundle clean" do expect(very_simple_binary_extensions_dir).to exist gemfile <<-G + source "#{file_uri_for(gem_repo1)}" G bundle "install" diff --git a/spec/bundler/commands/config_spec.rb b/spec/bundler/commands/config_spec.rb index 2f4488a552..4e13a7903e 100644 --- a/spec/bundler/commands/config_spec.rb +++ b/spec/bundler/commands/config_spec.rb @@ -76,6 +76,20 @@ RSpec.describe ".bundle/config" do end end + describe "config location" do + let(:bundle_user_config) { File.join(Dir.home, ".config/bundler") } + + before do + Dir.mkdir File.dirname(bundle_user_config) + end + + it "can be configured through BUNDLE_USER_CONFIG" do + bundle "config set path vendor", :env => { "BUNDLE_USER_CONFIG" => bundle_user_config } + bundle "config get path", :env => { "BUNDLE_USER_CONFIG" => bundle_user_config } + expect(out).to include("Set for the current user (#{bundle_user_config}): \"vendor\"") + end + end + describe "global" do before(:each) do install_gemfile <<-G @@ -321,7 +335,7 @@ E end describe "quoting" do - before(:each) { gemfile "# no gems" } + before(:each) { gemfile "source \"#{file_uri_for(gem_repo1)}\"" } let(:long_string) do "--with-xml2-include=/usr/pkg/include/libxml2 --with-xml2-lib=/usr/pkg/lib " \ "--with-xslt-dir=/usr/pkg" diff --git a/spec/bundler/commands/exec_spec.rb b/spec/bundler/commands/exec_spec.rb index 39430d52a4..68c4726608 100644 --- a/spec/bundler/commands/exec_spec.rb +++ b/spec/bundler/commands/exec_spec.rb @@ -8,6 +8,7 @@ RSpec.describe "bundle exec" do it "works with --gemfile flag" do create_file "CustomGemfile", <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "1.0.0" G @@ -17,6 +18,7 @@ RSpec.describe "bundle exec" do it "activates the correct gem" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" G @@ -26,6 +28,7 @@ RSpec.describe "bundle exec" do it "works and prints no warnings when HOME is not writable" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" G @@ -36,6 +39,7 @@ RSpec.describe "bundle exec" do it "works when the bins are in ~/.bundle" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -45,6 +49,7 @@ RSpec.describe "bundle exec" do it "works when running from a random directory" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -54,37 +59,39 @@ RSpec.describe "bundle exec" do end it "works when exec'ing something else" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec echo exec" expect(out).to eq("exec") end it "works when exec'ing to ruby" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec ruby -e 'puts %{hi}'" expect(out).to eq("hi") end it "works when exec'ing to rubygems" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec #{gem_cmd} --version" expect(out).to eq(Gem::VERSION) end it "works when exec'ing to rubygems through sh -c" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec sh -c '#{gem_cmd} --version'" expect(out).to eq(Gem::VERSION) end it "works when exec'ing back to bundler with a lockfile that doesn't include the current platform" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" G # simulate lockfile generated with old version not including specific platform lockfile <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: rack (0.9.1) @@ -110,20 +117,20 @@ RSpec.describe "bundle exec" do Process.setproctitle("1-2-3-4-5-6-7") puts `ps -ocommand= -p#{$$}` RUBY - create_file "Gemfile" + create_file "Gemfile", "source \"#{file_uri_for(gem_repo1)}\"" create_file "a.rb", script_that_changes_its_own_title_and_checks_if_picked_up_by_ps_unix_utility bundle "exec ruby a.rb" expect(out).to eq("1-2-3-4-5-6-7") end it "accepts --verbose" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec --verbose echo foobar" expect(out).to eq("foobar") end it "passes --verbose to command if it is given after the command" do - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" bundle "exec echo --verbose" expect(out).to eq("--verbose") end @@ -147,7 +154,7 @@ RSpec.describe "bundle exec" do end G - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" sys_exec "#{Gem.ruby} #{command.path}" expect(out).to be_empty @@ -155,7 +162,7 @@ RSpec.describe "bundle exec" do end it "accepts --keep-file-descriptors" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle "exec --keep-file-descriptors echo foobar" expect(err).to be_empty @@ -164,7 +171,7 @@ RSpec.describe "bundle exec" do it "can run a command named --verbose" do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? - install_gemfile 'gem "rack"' + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"; gem \"rack\"" File.open(bundled_app("--verbose"), "w") do |f| f.puts "#!/bin/sh" f.puts "echo foobar" @@ -210,7 +217,7 @@ RSpec.describe "bundle exec" do before do skip "irb isn't a default gem" if default_irb_version.empty? - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" end it "uses version provided by ruby" do @@ -325,6 +332,7 @@ RSpec.describe "bundle exec" do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -343,6 +351,7 @@ RSpec.describe "bundle exec" do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -359,6 +368,7 @@ RSpec.describe "bundle exec" do it "errors nicely when the argument doesn't exist" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -370,6 +380,7 @@ RSpec.describe "bundle exec" do it "errors nicely when the argument is not executable" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -381,6 +392,7 @@ RSpec.describe "bundle exec" do it "errors nicely when no arguments are passed" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -412,6 +424,7 @@ RSpec.describe "bundle exec" do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G @@ -496,6 +509,7 @@ RSpec.describe "bundle exec" do describe "run from a random directory" do before(:each) do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G end @@ -519,6 +533,7 @@ RSpec.describe "bundle exec" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "fizz", :path => "#{File.expand_path(home("fizz"))}" G end @@ -543,6 +558,7 @@ RSpec.describe "bundle exec" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "fizz_git", :git => "#{lib_path("fizz_git-1.0")}" G end @@ -566,6 +582,7 @@ RSpec.describe "bundle exec" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "fizz_no_gemspec", "1.0", :git => "#{lib_path("fizz_no_gemspec-1.0")}" G end @@ -612,6 +629,7 @@ RSpec.describe "bundle exec" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -627,6 +645,8 @@ RSpec.describe "bundle exec" do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + module Monkey def bin_path(a,b,c) raise Gem::GemNotFoundException.new('Fail') @@ -660,6 +680,7 @@ RSpec.describe "bundle exec" do bundled_app(path).chmod(0o755) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack" G end @@ -806,6 +827,7 @@ RSpec.describe "bundle exec" do context "when Bundler.setup fails", :bundler => "< 3" do before do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack', '2' G ENV["BUNDLER_FORCE_TTY"] = "true" @@ -814,9 +836,9 @@ RSpec.describe "bundle exec" do let(:exit_code) { Bundler::GemNotFound.new.status_code } let(:expected) { "" } let(:expected_err) { <<-EOS.strip } -\e[31mCould not find gem 'rack (= 2)' in locally installed gems. -The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m -\e[33mRun `bundle install` to install missing gems.\e[0m +Could not find gem 'rack (= 2)' in rubygems repository #{file_uri_for(gem_repo1)}/ or installed locally. +The source contains the following versions of 'rack': 0.9.1, 1.0.0 +Run `bundle install` to install missing gems. EOS it "runs" do @@ -832,6 +854,7 @@ The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m context "when Bundler.setup fails", :bundler => "3" do before do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack', '2' G ENV["BUNDLER_FORCE_TTY"] = "true" @@ -840,9 +863,9 @@ The source contains the following versions of 'rack': 0.9.1, 1.0.0\e[0m let(:exit_code) { Bundler::GemNotFound.new.status_code } let(:expected) { "" } let(:expected_err) { <<-EOS.strip } -\e[31mCould not find gem 'rack (= 2)' in locally installed gems. -The source contains the following versions of 'rack': 1.0.0\e[0m -\e[33mRun `bundle install` to install missing gems.\e[0m +Could not find gem 'rack (= 2)' in rubygems repository #{file_uri_for(gem_repo1)}/ or installed locally. +The source contains the following versions of 'rack': 1.0.0 +Run `bundle install` to install missing gems. EOS it "runs" do @@ -1020,7 +1043,7 @@ __FILE__: #{path.to_s.inspect} before do skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" end it "does not undo the monkeypatches" do @@ -1079,7 +1102,7 @@ __FILE__: #{path.to_s.inspect} RUBY # A Gemfile needs to be in the root to trick bundler's root resolution - create_file(bundled_app("Gemfile")) + create_file(bundled_app("Gemfile"), "source \"#{file_uri_for(gem_repo1)}\"") bundle "install" end @@ -1110,7 +1133,7 @@ __FILE__: #{path.to_s.inspect} skip "https://github.com/rubygems/rubygems/issues/3351" if Gem.win_platform? skip "openssl isn't a default gem" if expected.empty? - install_gemfile "" # must happen before installing the broken system gem + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" # must happen before installing the broken system gem build_repo4 do build_gem "openssl", openssl_version do |s| @@ -1151,6 +1174,7 @@ __FILE__: #{path.to_s.inspect} build_git "simple_git_binary", &:add_c_extension bundle "config set --local path .bundle" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "simple_git_binary", :git => '#{lib_path("simple_git_binary-1.0")}' G end diff --git a/spec/bundler/commands/info_spec.rb b/spec/bundler/commands/info_spec.rb index daed4587d5..906349cacf 100644 --- a/spec/bundler/commands/info_spec.rb +++ b/spec/bundler/commands/info_spec.rb @@ -111,6 +111,7 @@ RSpec.describe "bundle info" do it "prints out git info" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G expect(the_bundle).to include_gems "foo 1.0" @@ -126,6 +127,7 @@ RSpec.describe "bundle info" do @revision = revision_for(lib_path("foo-1.0"))[0...6] install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg" G expect(the_bundle).to include_gems "foo 1.0.omg" @@ -137,6 +139,7 @@ RSpec.describe "bundle info" do it "doesn't print the branch when tied to a ref" do sha = revision_for(lib_path("foo-1.0")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{sha}" G @@ -147,6 +150,7 @@ RSpec.describe "bundle info" do it "handles when a version is a '-' prerelease" do @git = build_git("foo", "1.0.0-beta.1", :path => lib_path("foo")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0.0-beta.1", :git => "#{lib_path("foo")}" G expect(the_bundle).to include_gems "foo 1.0.0.pre.beta.1" diff --git a/spec/bundler/commands/install_spec.rb b/spec/bundler/commands/install_spec.rb index 00a277a826..412000341f 100644 --- a/spec/bundler/commands/install_spec.rb +++ b/spec/bundler/commands/install_spec.rb @@ -334,11 +334,15 @@ RSpec.describe "bundle install with gem sources" do gem "rack" G - expect(err).to include("Your Gemfile has no gem server sources") + expect(err).to include("This Gemfile does not include an explicit global source. " \ + "Not using an explicit global source may result in a different lockfile being generated depending on " \ + "the gems you have installed locally before bundler is run." \ + "Instead, define a global source in your Gemfile like this: source \"https://rubygems.org\".") end it "creates a Gemfile.lock on a blank Gemfile" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" G expect(File.exist?(bundled_app_lock)).to eq(true) @@ -448,7 +452,7 @@ RSpec.describe "bundle install with gem sources" do expect(last_command.stdboth).not_to match(/Error Report/i) expect(err).to include("An error occurred while installing ajp-rails (0.0.0), and Bundler cannot continue."). - and include("Make sure that `gem install ajp-rails -v '0.0.0' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling.") + and include("Bundler::APIResponseInvalidDependenciesError") end it "doesn't blow up when the local .bundle/config is empty" do @@ -482,6 +486,7 @@ RSpec.describe "bundle install with gem sources" do install_gemfile <<-G, :raise_on_error => false ::RUBY_VERSION = '2.0.1' ruby '~> 2.2' + source "#{file_uri_for(gem_repo1)}" G expect(err).to include("Your Ruby version is 2.0.1, but your Gemfile specified ~> 2.2") end @@ -493,12 +498,14 @@ RSpec.describe "bundle install with gem sources" do ::RUBY_VERSION = '2.1.3' ::RUBY_PATCHLEVEL = 100 ruby '~> 2.1.0' + source "#{file_uri_for(gem_repo1)}" G end it "writes current Ruby version to Gemfile.lock" do lockfile_should_be <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -519,10 +526,12 @@ RSpec.describe "bundle install with gem sources" do ::RUBY_VERSION = '2.2.3' ::RUBY_PATCHLEVEL = 100 ruby '~> 2.2.0' + source "#{file_uri_for(gem_repo1)}" G lockfile_should_be <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -540,6 +549,7 @@ RSpec.describe "bundle install with gem sources" do it "does not crash when unlocking" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" ruby '>= 2.1.0' G @@ -558,6 +568,7 @@ RSpec.describe "bundle install with gem sources" do build_lib "foo" gemfile = <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "#{lib_path("foo-1.0")}" G File.open("#{root_dir}/Gemfile", "w") do |file| @@ -574,6 +585,7 @@ RSpec.describe "bundle install with gem sources" do build_lib "foo", :path => root_dir gemfile = <<-G + source "#{file_uri_for(gem_repo1)}" gemspec G File.open("#{root_dir}/Gemfile", "w") do |file| @@ -585,16 +597,48 @@ RSpec.describe "bundle install with gem sources" do end describe "when requesting a quiet install via --quiet" do - it "should be quiet" do + it "should be quiet if there are no warnings" do bundle "config set force_ruby_platform true" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' G - bundle :install, :quiet => true, :raise_on_error => false - expect(err).to include("Could not find gem 'rack'") - expect(err).to_not include("Your Gemfile has no gem server sources") + bundle :install, :quiet => true + expect(out).to be_empty + expect(err).to be_empty + end + + it "should still display warnings and errors" do + bundle "config set force_ruby_platform true" + + create_file("install_with_warning.rb", <<~RUBY) + require "#{lib_dir}/bundler" + require "#{lib_dir}/bundler/cli" + require "#{lib_dir}/bundler/cli/install" + + module RunWithWarning + def run + super + rescue + Bundler.ui.warn "BOOOOO" + raise + end + end + + Bundler::CLI::Install.prepend(RunWithWarning) + RUBY + + gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + gem 'non-existing-gem' + G + + bundle :install, :quiet => true, :raise_on_error => false, :env => { "RUBYOPT" => "-r#{bundled_app("install_with_warning.rb")}" } + expect(out).to be_empty + expect(err).to include("Could not find gem 'non-existing-gem'") + expect(err).to include("BOOOOO") end end diff --git a/spec/bundler/commands/open_spec.rb b/spec/bundler/commands/open_spec.rb index d18e620783..53dc35c2c7 100644 --- a/spec/bundler/commands/open_spec.rb +++ b/spec/bundler/commands/open_spec.rb @@ -105,6 +105,7 @@ RSpec.describe "bundle open" do skip "No default gems available on this test run" if default_gems.empty? install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "json" G end diff --git a/spec/bundler/commands/update_spec.rb b/spec/bundler/commands/update_spec.rb index f9548238e9..14fe3e245b 100644 --- a/spec/bundler/commands/update_spec.rb +++ b/spec/bundler/commands/update_spec.rb @@ -66,7 +66,7 @@ RSpec.describe "bundle update" do end it "doesn't delete the Gemfile.lock file if something goes wrong" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" gemfile <<-G source "#{file_uri_for(gem_repo2)}" @@ -96,19 +96,19 @@ RSpec.describe "bundle update" do before { bundle "config set update_requires_all_flag true" } it "errors when passed nothing" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle :update, :raise_on_error => false expect(err).to eq("To update everything, pass the `--all` flag.") end it "errors when passed --all and another option" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle "update --all foo", :raise_on_error => false expect(err).to eq("Cannot specify --all along with specific options.") end it "updates everything when passed --all" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle "update --all" expect(out).to include("Bundle updated!") end @@ -753,6 +753,7 @@ RSpec.describe "bundle update in more complicated situations" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => '#{lib_path("foo-1.0")}' G @@ -769,6 +770,7 @@ RSpec.describe "bundle update in more complicated situations" do build_git "rack" install_gemfile <<-G + source "#{file_uri_for(gem_repo2)}" gem "rack", :git => '#{lib_path("rack-1.0")}' G @@ -922,6 +924,7 @@ RSpec.describe "bundle update --ruby" do ::RUBY_VERSION = '2.1.3' ::RUBY_PATCHLEVEL = 100 ruby '~> 2.1.0' + source "#{file_uri_for(gem_repo1)}" G end @@ -930,6 +933,7 @@ RSpec.describe "bundle update --ruby" do gemfile <<-G ::RUBY_VERSION = '2.1.4' ::RUBY_PATCHLEVEL = 222 + source "#{file_uri_for(gem_repo1)}" G end it "removes the Ruby from the Gemfile.lock" do @@ -937,6 +941,7 @@ RSpec.describe "bundle update --ruby" do lockfile_should_be <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -956,6 +961,7 @@ RSpec.describe "bundle update --ruby" do ::RUBY_VERSION = '2.1.4' ::RUBY_PATCHLEVEL = 222 ruby '~> 2.1.0' + source "#{file_uri_for(gem_repo1)}" G end it "updates the Gemfile.lock with the latest version" do @@ -963,6 +969,7 @@ RSpec.describe "bundle update --ruby" do lockfile_should_be <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -985,6 +992,7 @@ RSpec.describe "bundle update --ruby" do ::RUBY_VERSION = '2.2.2' ::RUBY_PATCHLEVEL = 505 ruby '~> 2.1.0' + source "#{file_uri_for(gem_repo1)}" G end it "shows a helpful error message" do @@ -1000,6 +1008,7 @@ RSpec.describe "bundle update --ruby" do ::RUBY_VERSION = '1.8.3' ::RUBY_PATCHLEVEL = 55 ruby '~> 1.8.0' + source "#{file_uri_for(gem_repo1)}" G end it "updates the Gemfile.lock with the latest version" do @@ -1007,6 +1016,7 @@ RSpec.describe "bundle update --ruby" do lockfile_should_be <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -1248,7 +1258,7 @@ RSpec.describe "bundle update conservative" do context "error handling" do before do - gemfile "" + gemfile "source \"#{file_uri_for(gem_repo1)}\"" end it "raises if too many flags are provided" do diff --git a/spec/bundler/install/allow_offline_install_spec.rb b/spec/bundler/install/allow_offline_install_spec.rb index d0aa4e4d9e..524363fde5 100644 --- a/spec/bundler/install/allow_offline_install_spec.rb +++ b/spec/bundler/install/allow_offline_install_spec.rb @@ -75,6 +75,7 @@ RSpec.describe "bundle install with :allow_offline_install" do git = build_git "a", "1.0.0", :path => lib_path("a") update_git("a", :path => git.path, :branch => "new_branch") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "a", :git => #{git.path.to_s.dump} G @@ -84,6 +85,7 @@ RSpec.describe "bundle install with :allow_offline_install" do break_git_remote_ops! do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "a", :git => #{git.path.to_s.dump}, :branch => "new_branch" G end diff --git a/spec/bundler/install/deploy_spec.rb b/spec/bundler/install/deploy_spec.rb index 8f6298b301..8f2650a932 100644 --- a/spec/bundler/install/deploy_spec.rb +++ b/spec/bundler/install/deploy_spec.rb @@ -53,6 +53,7 @@ RSpec.describe "install in deployment or frozen mode" do it "works if you exclude a group with a git gem" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" group :test do gem "foo", :git => "#{lib_path("foo-1.0")}" end @@ -76,6 +77,7 @@ RSpec.describe "install in deployment or frozen mode" do build_lib "foo", :path => lib_path("nested/foo") build_lib "bar", :path => lib_path("nested/bar") gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :path => "#{lib_path("nested")}" gem "bar", :path => "#{lib_path("nested")}" G @@ -88,6 +90,7 @@ RSpec.describe "install in deployment or frozen mode" do it "works when path gems are specified twice" do build_lib "foo", :path => lib_path("nested/foo") gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("nested/foo")}" gem "foo", :path => "#{lib_path("nested/foo")}" G @@ -110,6 +113,7 @@ RSpec.describe "install in deployment or frozen mode" do it "works with sources given by a block" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" source "#{file_uri_for(gem_repo1)}" do gem "rack" end @@ -431,6 +435,7 @@ You have deleted from the Gemfile: it "works fine after bundle package and bundle install --local" do build_lib "foo", :path => lib_path("foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo")}" G diff --git a/spec/bundler/install/failure_spec.rb b/spec/bundler/install/failure_spec.rb index d265fafa63..4a9c33754f 100644 --- a/spec/bundler/install/failure_spec.rb +++ b/spec/bundler/install/failure_spec.rb @@ -2,7 +2,7 @@ RSpec.describe "bundle install" do context "installing a gem fails" do - it "prints out why that gem was being installed" do + it "prints out why that gem was being installed and the underlying error" do build_repo2 do build_gem "activesupport", "2.3.2" do |s| s.extensions << "Rakefile" @@ -18,102 +18,9 @@ RSpec.describe "bundle install" do source "#{file_uri_for(gem_repo2)}" gem "rails" G + expect(err).to start_with("Gem::Ext::BuildError: ERROR: Failed to build gem native extension.") expect(err).to end_with(<<-M.strip) An error occurred while installing activesupport (2.3.2), and Bundler cannot continue. -Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling. - -In Gemfile: - rails was resolved to 2.3.2, which depends on - actionmailer was resolved to 2.3.2, which depends on - activesupport - M - end - - context "when installing a git gem" do - it "does not tell the user to run 'gem install'" do - build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s| - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - abort "make installing activesupport-2.3.2 fail" - end - RUBY - end - - install_gemfile <<-G, :raise_on_error => false - source "#{file_uri_for(gem_repo1)}" - gem "rails" - gem "activesupport", :git => "#{lib_path("activesupport")}" - G - - expect(err).to end_with(<<-M.strip) -An error occurred while installing activesupport (2.3.2), and Bundler cannot continue. - -In Gemfile: - rails was resolved to 2.3.2, which depends on - actionmailer was resolved to 2.3.2, which depends on - activesupport - M - end - end - - context "when installing a gem using a git block" do - it "does not tell the user to run 'gem install'" do - build_git "activesupport", "2.3.2", :path => lib_path("activesupport") do |s| - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - abort "make installing activesupport-2.3.2 fail" - end - RUBY - end - - install_gemfile <<-G, :raise_on_error => false - source "#{file_uri_for(gem_repo1)}" - gem "rails" - - git "#{lib_path("activesupport")}" do - gem "activesupport" - end - G - - expect(err).to end_with(<<-M.strip) -An error occurred while installing activesupport (2.3.2), and Bundler cannot continue. - - -In Gemfile: - rails was resolved to 2.3.2, which depends on - actionmailer was resolved to 2.3.2, which depends on - activesupport - M - end - end - - it "prints out the hint for the remote source when available" do - build_repo2 do - build_gem "activesupport", "2.3.2" do |s| - s.extensions << "Rakefile" - s.write "Rakefile", <<-RUBY - task :default do - abort "make installing activesupport-2.3.2 fail" - end - RUBY - end - end - - build_repo4 do - build_gem "a" - end - - install_gemfile <<-G, :raise_on_error => false - source "#{file_uri_for(gem_repo4)}" - source "#{file_uri_for(gem_repo2)}" do - gem "rails" - end - G - expect(err).to end_with(<<-M.strip) -An error occurred while installing activesupport (2.3.2), and Bundler cannot continue. -Make sure that `gem install activesupport -v '2.3.2' --source '#{file_uri_for(gem_repo2)}/'` succeeds before bundling. In Gemfile: rails was resolved to 2.3.2, which depends on diff --git a/spec/bundler/install/gemfile/eval_gemfile_spec.rb b/spec/bundler/install/gemfile/eval_gemfile_spec.rb index 8303e6284e..02283291b4 100644 --- a/spec/bundler/install/gemfile/eval_gemfile_spec.rb +++ b/spec/bundler/install/gemfile/eval_gemfile_spec.rb @@ -11,12 +11,14 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do context "eval-ed Gemfile points to an internal gemspec" do before do create_file "Gemfile-other", <<-G + source "#{file_uri_for(gem_repo1)}" gemspec :path => 'gems/gunks' G end it "installs the gemspec specified gem" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" eval_gemfile 'Gemfile-other' G expect(out).to include("Resolving dependencies") @@ -35,6 +37,8 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do end create_file bundled_app("gems/Gemfile"), <<-G + source "#{file_uri_for(gem_repo2)}" + gemspec :path => "\#{__dir__}/gunks" source "#{file_uri_for(gem_repo2)}" do @@ -62,10 +66,12 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do before do build_lib("a", :path => bundled_app("gems/a")) create_file bundled_app("nested/Gemfile-nested"), <<-G + source "#{file_uri_for(gem_repo1)}" gem "a", :path => "../gems/a" G gemfile <<-G + source "#{file_uri_for(gem_repo1)}" eval_gemfile "nested/Gemfile-nested" G end @@ -89,6 +95,7 @@ RSpec.describe "bundle install with gemfile that uses eval_gemfile" do it "installs the gemspec specified gem" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" eval_gemfile 'other/Gemfile-other' gemspec :path => 'gems/gunks' G diff --git a/spec/bundler/install/gemfile/gemspec_spec.rb b/spec/bundler/install/gemfile/gemspec_spec.rb index 32dd7d24b8..6d9cd2daff 100644 --- a/spec/bundler/install/gemfile/gemspec_spec.rb +++ b/spec/bundler/install/gemfile/gemspec_spec.rb @@ -210,6 +210,7 @@ RSpec.describe "bundle install from an existing gemspec" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gemspec G @@ -263,6 +264,7 @@ RSpec.describe "bundle install from an existing gemspec" do build_lib "omg", "2.0", :path => lib_path("omg") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gemspec :path => "#{lib_path("omg")}" G diff --git a/spec/bundler/install/gemfile/git_spec.rb b/spec/bundler/install/gemfile/git_spec.rb index ba8f253b0e..5ea9eee878 100644 --- a/spec/bundler/install/gemfile/git_spec.rb +++ b/spec/bundler/install/gemfile/git_spec.rb @@ -62,6 +62,7 @@ RSpec.describe "bundle install with git sources" do update_git "foo" install_gemfile bundled_app2("Gemfile"), <<-G, :dir => bundled_app2 + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem 'foo' end @@ -84,6 +85,7 @@ RSpec.describe "bundle install with git sources" do build_git "foo" install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.1", :git => "#{lib_path("foo-1.0")}" G @@ -98,6 +100,7 @@ RSpec.describe "bundle install with git sources" do end install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" platforms :jruby do gem "only_java", "1.2", :git => "#{lib_path("only_java-1.0-java")}" end @@ -119,6 +122,7 @@ RSpec.describe "bundle install with git sources" do end install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" platforms :jruby do gem "only_java", "1.2", :git => "#{lib_path("only_java-1.1-java")}" end @@ -187,6 +191,7 @@ RSpec.describe "bundle install with git sources" do it "works" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :ref => "#{@revision}" do gem "foo" end @@ -202,6 +207,7 @@ RSpec.describe "bundle install with git sources" do it "works when the revision is a symbol" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :ref => #{@revision.to_sym.inspect} do gem "foo" end @@ -230,6 +236,7 @@ RSpec.describe "bundle install with git sources" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do gem "foo" end @@ -246,6 +253,7 @@ RSpec.describe "bundle install with git sources" do it "works when the revision is a non-head ref and it was previously downloaded" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem "foo" end @@ -264,6 +272,7 @@ RSpec.describe "bundle install with git sources" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :ref => "refs/bundler/1" do gem "foo" end @@ -284,6 +293,7 @@ RSpec.describe "bundle install with git sources" do bundle "config set global_gem_cache true" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem "foo" end @@ -306,6 +316,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :branch => branch) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :branch => #{branch.dump} do gem "foo" end @@ -322,6 +333,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :branch => branch) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :branch => #{branch.dump} do gem "foo" end @@ -339,6 +351,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :branch => branch) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :branch => #{branch.dump} do gem "foo" end @@ -357,6 +370,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :tag => tag) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :tag => #{tag.dump} do gem "foo" end @@ -373,6 +387,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :tag => tag) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :tag => #{tag.dump} do gem "foo" end @@ -390,6 +405,7 @@ RSpec.describe "bundle install with git sources" do update_git("foo", :path => repo, :tag => tag) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{repo}", :tag => #{tag.dump} do gem "foo" end @@ -705,6 +721,7 @@ RSpec.describe "bundle install with git sources" do build_lib "hi2u", :path => lib_path("hi2u") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path("hi2u")}" do gem "omg" gem "hi2u" @@ -721,6 +738,7 @@ RSpec.describe "bundle install with git sources" do update_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}", :ref => "#{@revision}" G @@ -785,6 +803,7 @@ RSpec.describe "bundle install with git sources" do build_git "foo", "1.0" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :git => "#{lib_path("foo-1.0")}" G @@ -806,6 +825,7 @@ RSpec.describe "bundle install with git sources" do it "catches git errors and spits out useful output" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :git => "omgomg" G @@ -820,6 +840,7 @@ RSpec.describe "bundle install with git sources" do build_git "foo", :path => lib_path("foo space-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo space-1.0")}" G @@ -830,6 +851,7 @@ RSpec.describe "bundle install with git sources" do build_git "forced", "1.0" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("forced-1.0")}" do gem 'forced' end @@ -858,6 +880,7 @@ RSpec.describe "bundle install with git sources" do sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0") install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("has_submodule-1.0")}" do gem "has_submodule" end @@ -876,6 +899,7 @@ RSpec.describe "bundle install with git sources" do sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("has_submodule-1.0")}", :submodules => true do gem "has_submodule" end @@ -892,6 +916,7 @@ RSpec.describe "bundle install with git sources" do sys_exec "git commit -m \"submodulator\"", :dir => lib_path("has_submodule-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("has_submodule-1.0")}" do gem "has_submodule" end @@ -906,6 +931,7 @@ RSpec.describe "bundle install with git sources" do git = build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem "foo" end @@ -915,6 +941,7 @@ RSpec.describe "bundle install with git sources" do update_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :ref => "#{git.ref_for("HEAD^")}" do gem "foo" end @@ -932,6 +959,7 @@ RSpec.describe "bundle install with git sources" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -945,6 +973,7 @@ RSpec.describe "bundle install with git sources" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -959,6 +988,7 @@ RSpec.describe "bundle install with git sources" do FileUtils.touch(default_bundle_path("bundler")) install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -976,6 +1006,7 @@ RSpec.describe "bundle install with git sources" do build_git "bar", :path => lib_path("nested") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("nested")}" gem "bar", :git => "#{lib_path("nested")}" G @@ -1033,6 +1064,7 @@ RSpec.describe "bundle install with git sources" do build_git "valim" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "valim", :git => "#{file_uri_for(lib_path("valim-1.0"))}" G @@ -1058,11 +1090,13 @@ RSpec.describe "bundle install with git sources" do revision = revision_for(lib_path("foo-1.0")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :ref => "#{revision}" G expect(out).to_not match(/Revision.*does not exist/) install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :ref => "deadbeef" G expect(err).to include("Revision deadbeef does not exist in the repository") @@ -1089,6 +1123,7 @@ RSpec.describe "bundle install with git sources" do it "runs pre-install hooks" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -1108,6 +1143,7 @@ RSpec.describe "bundle install with git sources" do it "runs post-install hooks" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -1127,6 +1163,7 @@ RSpec.describe "bundle install with git sources" do it "complains if the install hook fails" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -1403,6 +1440,7 @@ In Gemfile: build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem 'foo' end @@ -1419,6 +1457,7 @@ In Gemfile: build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem 'foo' end @@ -1448,6 +1487,7 @@ In Gemfile: build_git "foo", "1.0", :path => lib_path("foo") gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo")}", :branch => "master" G @@ -1463,6 +1503,7 @@ In Gemfile: it "does not display the password" do install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" git "https://#{credentials}@github.com/company/private-repo" do gem "foo" end @@ -1478,6 +1519,7 @@ In Gemfile: it "displays the oauth scheme but not the oauth token" do install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" git "https://#{credentials}:x-oauth-basic@github.com/company/private-repo" do gem "foo" end diff --git a/spec/bundler/install/gemfile/path_spec.rb b/spec/bundler/install/gemfile/path_spec.rb index 1c77b3a37e..566fdcf65a 100644 --- a/spec/bundler/install/gemfile/path_spec.rb +++ b/spec/bundler/install/gemfile/path_spec.rb @@ -16,6 +16,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path("foo-1.0")}" do gem 'foo' end @@ -28,6 +29,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "#{lib_path("foo-1.0")}" G @@ -40,6 +42,7 @@ RSpec.describe "bundle install with explicit source paths" do relative_path = lib_path("foo-1.0").relative_path_from(bundled_app) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "#{relative_path}" G @@ -52,6 +55,7 @@ RSpec.describe "bundle install with explicit source paths" do relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("~").expand_path) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "~/#{relative_path}" G @@ -66,6 +70,7 @@ RSpec.describe "bundle install with explicit source paths" do relative_path = lib_path("foo-1.0").relative_path_from(Pathname.new("/home/#{username}").expand_path) install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "~#{username}/#{relative_path}" G expect(err).to match("There was an error while trying to use the path `~#{username}/#{relative_path}`.") @@ -76,6 +81,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo", :path => bundled_app("foo-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "./foo-1.0" G @@ -87,6 +93,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "aaa", :path => lib_path("demo/aaa") gemfile = <<-G + source "#{file_uri_for(gem_repo1)}" gemspec gem "aaa", :path => "./aaa" G @@ -105,6 +112,7 @@ RSpec.describe "bundle install with explicit source paths" do aaa (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -128,6 +136,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo", :path => bundled_app("foo-1.0") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => File.expand_path("../foo-1.0", __FILE__) G @@ -167,6 +176,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo", "1.0.0", :path => lib_path("omg/foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "omg", :path => "#{lib_path("omg")}" G @@ -177,6 +187,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "omg", "2.0", :path => lib_path("omg") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "omg", :path => "#{lib_path("omg")}" G @@ -200,6 +211,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "premailer", :path => "#{lib_path("premailer")}" G @@ -221,6 +233,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -304,6 +317,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gemspec :path => "#{lib_path("foo")}" G @@ -317,6 +331,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gemspec :path => "#{lib_path("foo")}", :name => "foo" G @@ -329,6 +344,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G, :verbose => true + source "#{file_uri_for(gem_repo1)}" path "#{lib_path("foo-1.0")}" do gem 'foo' end @@ -346,6 +362,7 @@ RSpec.describe "bundle install with explicit source paths" do lib_path("foo-1.0").join("bin/performance").mkpath install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', '1.0', :path => "#{lib_path("foo-1.0")}" G expect(err).to be_empty @@ -355,6 +372,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :path => "#{lib_path("foo-1.0")}" G @@ -367,6 +385,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "hi2u" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "omg" gem "hi2u" @@ -385,6 +404,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo")}" gem "omg", :path => "#{lib_path("omg")}" G @@ -396,6 +416,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "foo", :gemspec => false gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :path => "#{lib_path("foo-1.0")}" G @@ -411,12 +432,13 @@ RSpec.describe "bundle install with explicit source paths" do specs: GEM - remote: http://rubygems.org + remote: http://rubygems.org/ L FileUtils.mkdir_p(bundled_app("vendor/bar")) install_gemfile <<-G + source "http://rubygems.org" gem "bar", "1.0.0", path: "vendor/bar", require: "bar/nyard" G end @@ -461,6 +483,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -476,6 +499,7 @@ RSpec.describe "bundle install with explicit source paths" do build_lib "bar", "1.0", :path => lib_path("foo/bar") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo")}" G end @@ -720,6 +744,7 @@ RSpec.describe "bundle install with explicit source paths" do it "runs pre-install hooks" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -739,6 +764,7 @@ RSpec.describe "bundle install with explicit source paths" do it "runs post-install hooks" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -758,6 +784,7 @@ RSpec.describe "bundle install with explicit source paths" do it "complains if the install hook fails" do build_git "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -788,6 +815,7 @@ RSpec.describe "bundle install with explicit source paths" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" gem "bar", :path => "#{lib_path("bar-1.0")}" G diff --git a/spec/bundler/install/gemfile/platform_spec.rb b/spec/bundler/install/gemfile/platform_spec.rb index c49594183e..7cd06b7e08 100644 --- a/spec/bundler/install/gemfile/platform_spec.rb +++ b/spec/bundler/install/gemfile/platform_spec.rb @@ -400,6 +400,7 @@ RSpec.describe "bundle install with platform conditionals" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" platform :#{not_local_tag} do gem "foo", :git => "#{lib_path("foo-1.0")}" end diff --git a/spec/bundler/install/gemfile/sources_spec.rb b/spec/bundler/install/gemfile/sources_spec.rb index 0739285a5d..8c225afb11 100644 --- a/spec/bundler/install/gemfile/sources_spec.rb +++ b/spec/bundler/install/gemfile/sources_spec.rb @@ -1074,6 +1074,7 @@ RSpec.describe "bundle install with gems on multiple sources" do build_lib "foo" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", :source => "https://gem.repo1" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -1309,6 +1310,8 @@ RSpec.describe "bundle install with gems on multiple sources" do end install_gemfile <<-G, :artifice => "compact_index", :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" + source "https://gem.repo4" do gem "depends_on_rack" end @@ -1338,6 +1341,7 @@ RSpec.describe "bundle install with gems on multiple sources" do end install_gemfile <<-G, :artifice => "compact_index", :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" source "https://gem.repo4" do gem "depends_on_rack" end diff --git a/spec/bundler/install/gemfile/specific_platform_spec.rb b/spec/bundler/install/gemfile/specific_platform_spec.rb index a6d8318fe4..4c24f09368 100644 --- a/spec/bundler/install/gemfile/specific_platform_spec.rb +++ b/spec/bundler/install/gemfile/specific_platform_spec.rb @@ -173,6 +173,7 @@ RSpec.describe "bundle install with specific platforms" do git = build_git "pg_array_parser", "1.0" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "pg_array_parser", :git => "#{lib_path("pg_array_parser-1.0")}" G diff --git a/spec/bundler/install/gemfile_spec.rb b/spec/bundler/install/gemfile_spec.rb index ffbb2e3a61..0f8f1ecfa8 100644 --- a/spec/bundler/install/gemfile_spec.rb +++ b/spec/bundler/install/gemfile_spec.rb @@ -4,6 +4,8 @@ RSpec.describe "bundle install" do context "with duplicated gems" do it "will display a warning" do install_gemfile <<-G, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" + gem 'rails', '~> 4.0.0' gem 'rails', '~> 4.0.0' G @@ -54,6 +56,8 @@ RSpec.describe "bundle install" do context "with deprecated features" do it "reports that lib is an invalid option" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + gem "rack", :lib => "rack" G @@ -86,6 +90,8 @@ RSpec.describe "bundle install" do context "with a Gemfile containing non-US-ASCII characters" do it "reads the Gemfile with the UTF-8 encoding by default" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + str = "Il était une fois ..." puts "The source encoding is: " + str.encoding.name G @@ -99,6 +105,8 @@ RSpec.describe "bundle install" do # NOTE: This works thanks to #eval interpreting the magic encoding comment install_gemfile <<-G # encoding: iso-8859-1 + source "#{file_uri_for(gem_repo1)}" + str = "Il #{"\xE9".dup.force_encoding("binary")}tait une fois ..." puts "The source encoding is: " + str.encoding.name G diff --git a/spec/bundler/install/gems/compact_index_spec.rb b/spec/bundler/install/gems/compact_index_spec.rb index 6257cf4f71..0cee69f702 100644 --- a/spec/bundler/install/gems/compact_index_spec.rb +++ b/spec/bundler/install/gems/compact_index_spec.rb @@ -930,6 +930,7 @@ Either installing with `--full-index` or running `bundle update rails` should fi it "does not duplicate specs in the lockfile when updating and a dependency is not installed" do install_gemfile <<-G, :artifice => "compact_index" + source "#{file_uri_for(gem_repo1)}" source "#{source_uri}" do gem "rails" gem "activemerchant" diff --git a/spec/bundler/install/gems/native_extensions_spec.rb b/spec/bundler/install/gems/native_extensions_spec.rb index 8a4de3cf92..d5cafcfc2c 100644 --- a/spec/bundler/install/gems/native_extensions_spec.rb +++ b/spec/bundler/install/gems/native_extensions_spec.rb @@ -78,6 +78,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do bundle "config set build.c_extension --with-c_extension=hello" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "c_extension", :git => #{lib_path("c_extension-1.0").to_s.dump} G @@ -126,11 +127,13 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do # 1st time, require only one gem -- only one of the extensions gets built. install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "c_extension_one", :git => #{lib_path("gems").to_s.dump} G # 2nd time, require both gems -- we need both extensions to be built now. install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "c_extension_one", :git => #{lib_path("gems").to_s.dump} gem "c_extension_two", :git => #{lib_path("gems").to_s.dump} G @@ -171,6 +174,7 @@ RSpec.describe "installing a gem with native extensions", :ruby_repo do bundle "config set build.c_extension --with-c_extension=hello --with-c_extension_bundle-dir=hola" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "c_extension", :git => #{lib_path("c_extension-1.0").to_s.dump} G diff --git a/spec/bundler/install/gems/standalone_spec.rb b/spec/bundler/install/gems/standalone_spec.rb index 08d5276a54..6578997cd6 100644 --- a/spec/bundler/install/gems/standalone_spec.rb +++ b/spec/bundler/install/gems/standalone_spec.rb @@ -108,6 +108,45 @@ RSpec.shared_examples "bundle install --standalone" do include_examples "common functionality" end + describe "with default gems and a lockfile", :ruby_repo do + before do + skip "does not work on rubygems versions where `--install_dir` doesn't respect --default" unless Gem::Installer.for_spec(loaded_gemspec, :install_dir => "/foo").default_spec_file == "/foo/specifications/default/bundler-#{Bundler::VERSION}.gemspec" # Since rubygems 3.2.0.rc.2 + skip "does not work on old rubies because the realworld gems that need to be installed don't support them" if RUBY_VERSION < "2.7.0" + + realworld_system_gems "fiddle --version 1.0.6", "tsort --version 0.1.0" + + necessary_system_gems = ["optparse --version 0.1.1", "psych --version 3.3.2", "yaml --version 0.1.1", "logger --version 1.4.3", "etc --version 1.2.0"] + necessary_system_gems += ["shellwords --version 0.1.0", "base64 --version 0.1.0", "resolv --version 0.2.1"] if Gem.rubygems_version < Gem::Version.new("3.3.3.a") + realworld_system_gems(*necessary_system_gems, :path => scoped_gem_path(bundled_app("bundle"))) + + build_gem "foo", "1.0.0", :to_system => true, :default => true do |s| + s.add_dependency "bar" + end + + build_gem "bar", "1.0.0", :to_system => true, :default => true + + build_repo4 do + build_gem "foo", "1.0.0" do |s| + s.add_dependency "bar" + end + + build_gem "bar", "1.0.0" + end + + gemfile <<-G + source "https://gem.repo4" + gem "foo" + G + + bundle "lock", :dir => cwd, :artifice => "compact_index" + end + + it "works" do + bundle "config set --local path #{bundled_app("bundle")}" + bundle :install, :standalone => true, :dir => cwd, :artifice => "compact_index", :env => { "BUNDLER_GEM_DEFAULT_DIR" => system_gem_path.to_s } + end + end + describe "with gems with native extension", :ruby_repo do before do bundle "config set --local path #{bundled_app("bundle")}" @@ -146,6 +185,7 @@ RSpec.shared_examples "bundle install --standalone" do end bundle "config set --local path #{bundled_app("bundle")}" install_gemfile <<-G, :standalone => true, :dir => cwd, :raise_on_error => false + source "#{file_uri_for(gem_repo1)}" gem "bar", :git => "#{lib_path("bar-1.0")}" G end diff --git a/spec/bundler/install/gemspecs_spec.rb b/spec/bundler/install/gemspecs_spec.rb index dc1934804d..0c4518fe2b 100644 --- a/spec/bundler/install/gemspecs_spec.rb +++ b/spec/bundler/install/gemspecs_spec.rb @@ -21,6 +21,7 @@ RSpec.describe "bundle install" do build_lib "yaml_spec", :gemspec => :yaml install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'yaml_spec', :path => "#{lib_path("yaml_spec-1.0")}" G expect(err).to be_empty @@ -57,6 +58,7 @@ RSpec.describe "bundle install" do G install_gemfile <<-G, :env => { "LANG" => "C" } + source "#{file_uri_for(gem_repo1)}" gemspec G @@ -82,6 +84,7 @@ RSpec.describe "bundle install" do G install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gemspec G @@ -96,6 +99,7 @@ RSpec.describe "bundle install" do install_gemfile <<-G ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby' + source "#{file_uri_for(gem_repo1)}" gemspec G expect(the_bundle).to include_gems "foo 1.0" @@ -109,6 +113,7 @@ RSpec.describe "bundle install" do install_gemfile <<-G, :raise_on_error => false ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{RUBY_PATCHLEVEL}' + source "#{file_uri_for(gem_repo1)}" gemspec G expect(the_bundle).to include_gems "foo 1.0" @@ -123,6 +128,7 @@ RSpec.describe "bundle install" do install_gemfile <<-G, :raise_on_error => false ruby '#{RUBY_VERSION}', :engine_version => '#{RUBY_VERSION}', :engine => 'ruby', :patchlevel => '#{patchlevel}' + source "#{file_uri_for(gem_repo1)}" gemspec G @@ -140,6 +146,7 @@ RSpec.describe "bundle install" do install_gemfile <<-G, :raise_on_error => false ruby '#{version}', :engine_version => '#{version}', :engine => 'ruby' + source "#{file_uri_for(gem_repo1)}" gemspec G diff --git a/spec/bundler/install/git_spec.rb b/spec/bundler/install/git_spec.rb index 4a3827eafd..d43aacee7e 100644 --- a/spec/bundler/install/git_spec.rb +++ b/spec/bundler/install/git_spec.rb @@ -6,6 +6,7 @@ RSpec.describe "bundle install" do build_git "foo", "1.0", :path => lib_path("foo") install_gemfile <<-G, :verbose => true + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo"))}" G @@ -17,6 +18,7 @@ RSpec.describe "bundle install" do build_git "foo", "1.0", :path => lib_path("foo"), :default_branch => "main" install_gemfile <<-G, :verbose => true + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo"))}" G @@ -34,6 +36,7 @@ RSpec.describe "bundle install" do update_git "foo", "3.0", :path => lib_path("foo"), :gemspec => true install_gemfile <<-G, :verbose => true + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo"))}", :ref => "master~2" G @@ -51,6 +54,7 @@ RSpec.describe "bundle install" do revision = build_git("foo").ref_for("HEAD") gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}", :group => :development G diff --git a/spec/bundler/install/redownload_spec.rb b/spec/bundler/install/redownload_spec.rb index 0eae615c59..a936b2b536 100644 --- a/spec/bundler/install/redownload_spec.rb +++ b/spec/bundler/install/redownload_spec.rb @@ -33,6 +33,7 @@ RSpec.describe "bundle install" do before do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G end diff --git a/spec/bundler/install/yanked_spec.rb b/spec/bundler/install/yanked_spec.rb index 6d3065a836..c5f3d788ba 100644 --- a/spec/bundler/install/yanked_spec.rb +++ b/spec/bundler/install/yanked_spec.rb @@ -70,4 +70,35 @@ RSpec.context "when using gem before installing" do expect(err).to_not include("If you haven't changed sources, that means the author of rack (0.9.1) has removed it.") expect(err).to_not include("You'll need to update your bundle to a different version of rack (0.9.1) that hasn't been removed in order to install.") end + + it "does not suggest the author has yanked the gem when using more than one gem, but shows all gems that couldn't be found in the source" do + gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + gem "rack", "0.9.1" + gem "rack_middleware", "1.0" + G + + lockfile <<-L + GEM + remote: #{file_uri_for(gem_repo1)} + specs: + rack (0.9.1) + rack_middleware (1.0) + + PLATFORMS + ruby + + DEPENDENCIES + rack (= 0.9.1) + rack_middleware (1.0) + L + + bundle :list, :raise_on_error => false + + expect(err).to include("Could not find rack-0.9.1, rack_middleware-1.0 in any of the sources") + expect(err).to include("Install missing gems with `bundle install`.") + expect(err).to_not include("Your bundle is locked to rack (0.9.1), but that version could not be found in any of the sources listed in your Gemfile.") + expect(err).to_not include("If you haven't changed sources, that means the author of rack (0.9.1) has removed it.") + expect(err).to_not include("You'll need to update your bundle to a different version of rack (0.9.1) that hasn't been removed in order to install.") + end end diff --git a/spec/bundler/lock/git_spec.rb b/spec/bundler/lock/git_spec.rb index 14b80483ee..56db5d8305 100644 --- a/spec/bundler/lock/git_spec.rb +++ b/spec/bundler/lock/git_spec.rb @@ -5,6 +5,7 @@ RSpec.describe "bundle lock with git gems" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :git => "#{lib_path("foo-1.0")}" G end diff --git a/spec/bundler/lock/lockfile_spec.rb b/spec/bundler/lock/lockfile_spec.rb index 0ab31eabc6..0e2a3a3cd8 100644 --- a/spec/bundler/lock/lockfile_spec.rb +++ b/spec/bundler/lock/lockfile_spec.rb @@ -322,6 +322,8 @@ RSpec.describe "the lockfile format" do bundle "config set http://localgemserver.test/ user:pass" install_gemfile(<<-G, :artifice => "endpoint_strict_basic_authentication", :quiet => true) + source "#{file_uri_for(gem_repo1)}" + source "http://localgemserver.test/" do end @@ -333,6 +335,7 @@ RSpec.describe "the lockfile format" do lockfile_should_be <<-G GEM + remote: #{file_uri_for(gem_repo1)}/ specs: GEM @@ -388,6 +391,7 @@ RSpec.describe "the lockfile format" do git = build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G @@ -399,6 +403,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -455,6 +460,7 @@ RSpec.describe "the lockfile format" do git = build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}" do gem "foo" end @@ -468,6 +474,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -486,6 +493,7 @@ RSpec.describe "the lockfile format" do update_git "foo", :branch => "omg" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}", :branch => "omg" G @@ -498,6 +506,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -516,6 +525,7 @@ RSpec.describe "the lockfile format" do update_git "foo", :tag => "omg" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}", :tag => "omg" G @@ -528,6 +538,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -545,6 +556,7 @@ RSpec.describe "the lockfile format" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -555,6 +567,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -572,6 +585,7 @@ RSpec.describe "the lockfile format" do build_lib "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :path => "#{lib_path("foo-1.0")}" G @@ -586,6 +600,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -821,6 +836,7 @@ RSpec.describe "the lockfile format" do build_lib "foo", :path => bundled_app("foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "foo" do gem "foo" end @@ -833,6 +849,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -850,6 +867,7 @@ RSpec.describe "the lockfile format" do build_lib "foo", :path => bundled_app(File.join("..", "foo")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "../foo" do gem "foo" end @@ -862,6 +880,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -879,6 +898,7 @@ RSpec.describe "the lockfile format" do build_lib "foo", :path => bundled_app("foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path File.expand_path("../foo", __FILE__) do gem "foo" end @@ -891,6 +911,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -908,6 +929,7 @@ RSpec.describe "the lockfile format" do build_lib("foo", :path => tmp.join("foo")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gemspec :path => "../foo" G @@ -918,6 +940,7 @@ RSpec.describe "the lockfile format" do foo (1.0) GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS diff --git a/spec/bundler/other/major_deprecation_spec.rb b/spec/bundler/other/major_deprecation_spec.rb index 494d6a27b5..459d777a8b 100644 --- a/spec/bundler/other/major_deprecation_spec.rb +++ b/spec/bundler/other/major_deprecation_spec.rb @@ -165,6 +165,28 @@ RSpec.describe "major deprecations" do pending "fails with a helpful error", :bundler => "3" end + context "bundle cache --path" do + before do + install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + gem "rack" + G + + bundle "cache --path foo", :raise_on_error => false + end + + it "should print a deprecation warning", :bundler => "< 3" do + expect(deprecations).to include( + "The `--path` flag is deprecated because its semantics are unclear. " \ + "Use `bundle config cache_path` to configure the path of your cache of gems, " \ + "and `bundle config path` to configure the path where your gems are installed, " \ + "and stop using this flag" + ) + end + + pending "fails with a helpful error", :bundler => "3" + end + describe "bundle config" do describe "old list interface" do before do @@ -311,7 +333,7 @@ RSpec.describe "major deprecations" do end it "should print a proper warning, and use gems.rb" do - create_file "gems.rb" + create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\"" install_gemfile <<-G source "#{file_uri_for(gem_repo1)}" gem "rack" @@ -462,7 +484,7 @@ RSpec.describe "major deprecations" do context "when Bundler.setup is run in a ruby script" do before do - create_file "gems.rb" + create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\"" install_gemfile <<-G source "#{file_uri_for(gem_repo1)}" gem "rack", :group => :test @@ -607,7 +629,7 @@ The :gist git source is deprecated, and will be removed in the future. Add this before do graphviz_version = RUBY_VERSION >= "2.4" ? "1.2.5" : "1.2.4" realworld_system_gems "ruby-graphviz --version #{graphviz_version}" - create_file "gems.rb" + create_file "gems.rb", "source \"#{file_uri_for(gem_repo1)}\"" bundle "viz" end diff --git a/spec/bundler/other/platform_spec.rb b/spec/bundler/other/platform_spec.rb index eb3539b412..5693d6bce6 100644 --- a/spec/bundler/other/platform_spec.rb +++ b/spec/bundler/other/platform_spec.rb @@ -213,11 +213,13 @@ G it "handles when there is a locked requirement" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" ruby "< 1.8.7" G lockfile <<-L GEM + remote: #{file_uri_for(gem_repo1)}/ specs: PLATFORMS @@ -238,6 +240,7 @@ G it "handles when there is a requirement in the gemfile" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" ruby ">= 1.8.7" G @@ -247,6 +250,7 @@ G it "handles when there are multiple requirements in the gemfile" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" ruby ">= 1.8.7", "< 2.0.0" G @@ -685,6 +689,7 @@ G it "copies the .gem file to vendor/cache when ruby version matches" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{ruby_version_correct} @@ -708,6 +713,7 @@ G it "fails if the ruby version doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{ruby_version_incorrect} @@ -719,6 +725,7 @@ G it "fails if the engine doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{engine_incorrect} @@ -730,6 +737,7 @@ G it "fails if the engine version doesn't match", :jruby do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{engine_version_incorrect} @@ -762,6 +770,7 @@ G it "copies the .gem file to vendor/cache when ruby version matches" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{ruby_version_correct} @@ -785,6 +794,7 @@ G it "fails if the ruby version doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{ruby_version_incorrect} @@ -796,6 +806,7 @@ G it "fails if the engine doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{engine_incorrect} @@ -807,6 +818,7 @@ G it "fails if the engine version doesn't match", :jruby do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'rack' #{engine_version_incorrect} @@ -837,6 +849,7 @@ G it "activates the correct gem when ruby version matches" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" #{ruby_version_correct} @@ -849,6 +862,7 @@ G it "activates the correct gem when ruby version matches any engine", :jruby do system_gems "rack-1.0.0", "rack-0.9.1", :path => default_bundle_path gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" #{ruby_version_correct_engineless} @@ -860,6 +874,7 @@ G it "fails when the ruby version doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" #{ruby_version_incorrect} @@ -871,6 +886,7 @@ G it "fails when the engine doesn't match" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", "0.9.1" #{engine_incorrect} diff --git a/spec/bundler/plugins/install_spec.rb b/spec/bundler/plugins/install_spec.rb index ef39e75a58..c719e8533e 100644 --- a/spec/bundler/plugins/install_spec.rb +++ b/spec/bundler/plugins/install_spec.rb @@ -214,6 +214,7 @@ RSpec.describe "bundler plugin install" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" plugin 'ga-plugin', :git => "#{lib_path("ga-plugin-1.0")}" G @@ -227,6 +228,7 @@ RSpec.describe "bundler plugin install" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" plugin 'ga-plugin', :path => "#{lib_path("ga-plugin-1.0")}" G diff --git a/spec/bundler/runtime/executable_spec.rb b/spec/bundler/runtime/executable_spec.rb index e39338e425..a11f547648 100644 --- a/spec/bundler/runtime/executable_spec.rb +++ b/spec/bundler/runtime/executable_spec.rb @@ -63,6 +63,7 @@ RSpec.describe "Running bin/* commands" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", :path => "#{lib_path("rack")}" G diff --git a/spec/bundler/runtime/inline_spec.rb b/spec/bundler/runtime/inline_spec.rb index 4c2dff466b..647e6a8bd2 100644 --- a/spec/bundler/runtime/inline_spec.rb +++ b/spec/bundler/runtime/inline_spec.rb @@ -48,6 +48,7 @@ RSpec.describe "bundler/inline#gemfile" do it "requires the gems" do script <<-RUBY gemfile do + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "two" end @@ -58,6 +59,7 @@ RSpec.describe "bundler/inline#gemfile" do script <<-RUBY, :raise_on_error => false gemfile do + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "eleven" end @@ -139,6 +141,7 @@ RSpec.describe "bundler/inline#gemfile" do require '#{entrypoint}' options = { :ui => Bundler::UI::Shell.new } gemfile(false, options) do + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "two" end @@ -168,6 +171,7 @@ RSpec.describe "bundler/inline#gemfile" do baz_ref = build_git("baz", "2.0.0").ref_for("HEAD") script <<-RUBY gemfile do + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => #{lib_path("foo-1.0.0").to_s.dump} gem "baz", :git => #{lib_path("baz-2.0.0").to_s.dump}, :ref => #{baz_ref.dump} end @@ -184,12 +188,14 @@ RSpec.describe "bundler/inline#gemfile" do script <<-RUBY gemfile do path "#{lib_path}" do + source "#{file_uri_for(gem_repo1)}" gem "two" end end gemfile do path "#{lib_path}" do + source "#{file_uri_for(gem_repo1)}" gem "four" end end @@ -367,6 +373,7 @@ RSpec.describe "bundler/inline#gemfile" do script <<-RUBY, :dir => tmp("path_without_gemfile") gemfile do + source "#{file_uri_for(gem_repo2)}" path "#{lib_path}" do gem "foo", require: false end diff --git a/spec/bundler/runtime/require_spec.rb b/spec/bundler/runtime/require_spec.rb index a3fa4fbe47..d91b5f8666 100644 --- a/spec/bundler/runtime/require_spec.rb +++ b/spec/bundler/runtime/require_spec.rb @@ -46,6 +46,7 @@ RSpec.describe "Bundler.require" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "one", :group => :bar, :require => %w[baz qux] gem "two" @@ -112,6 +113,7 @@ RSpec.describe "Bundler.require" do it "raises an exception if a require is specified but the file does not exist" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "two", :require => 'fail' end @@ -130,6 +132,7 @@ RSpec.describe "Bundler.require" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "faulty" end @@ -146,6 +149,7 @@ RSpec.describe "Bundler.require" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "loadfuuu" end @@ -172,6 +176,7 @@ RSpec.describe "Bundler.require" do it "requires gem names that are namespaced" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path '#{lib_path}' do gem 'jquery-rails' end @@ -186,6 +191,8 @@ RSpec.describe "Bundler.require" do s.write "lib/brcrypt.rb", "BCrypt = '1.0.0'" end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" + path "#{lib_path}" do gem "bcrypt-ruby" end @@ -202,6 +209,7 @@ RSpec.describe "Bundler.require" do it "does not mangle explicitly given requires" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem 'jquery-rails', :require => 'jquery-rails' end @@ -219,6 +227,7 @@ RSpec.describe "Bundler.require" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "load-fuuu" end @@ -242,6 +251,7 @@ RSpec.describe "Bundler.require" do end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "load-fuuu" end @@ -300,6 +310,7 @@ RSpec.describe "Bundler.require" do it "works when the gems are in the Gemfile in the correct order" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "two" gem "one" @@ -318,6 +329,7 @@ RSpec.describe "Bundler.require" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "multi_gem", :require => "one", :group => :one gem "multi_gem", :require => "two", :group => :two G @@ -341,6 +353,7 @@ RSpec.describe "Bundler.require" do it "fails when the gems are in the Gemfile in the wrong order" do gemfile <<-G + source "#{file_uri_for(gem_repo1)}" path "#{lib_path}" do gem "one" gem "two" @@ -358,6 +371,7 @@ RSpec.describe "Bundler.require" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "busted_require" G @@ -396,6 +410,7 @@ RSpec.describe "Bundler.require" do build_git "foo" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{lib_path("foo-1.0")}" G diff --git a/spec/bundler/runtime/setup_spec.rb b/spec/bundler/runtime/setup_spec.rb index 380db99136..42bbacea0e 100644 --- a/spec/bundler/runtime/setup_spec.rb +++ b/spec/bundler/runtime/setup_spec.rb @@ -430,6 +430,7 @@ RSpec.describe "Bundler.setup" do build_git "rack", "1.0.0" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rack", :git => "#{lib_path("rack-1.0.0")}" G end @@ -857,7 +858,7 @@ end end it "should not remove itself from the LOAD_PATH and require a different copy of 'bundler/setup'" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" ruby <<-R, :env => { "GEM_PATH" => symlinked_gem_home } TracePoint.trace(:class) do |tp| @@ -906,6 +907,7 @@ end FileUtils.rm(File.join(path, "foo.gemspec")) install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', '1.2.3', :path => 'vendor/foo' G @@ -926,6 +928,7 @@ end FileUtils.rm(File.join(absolute_path, "foo.gemspec")) gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', '1.2.3', :path => '#{relative_path}' G @@ -944,6 +947,7 @@ end build_git "no_gemspec", :gemspec => false install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "no_gemspec", "1.0", :git => "#{lib_path("no_gemspec-1.0")}" G end @@ -1046,6 +1050,7 @@ end end gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "bar", :git => "#{lib_path("bar-1.0")}" G end @@ -1066,7 +1071,6 @@ end expect(err.lines.map(&:chomp)).to include( a_string_starting_with("[!] There was an error while loading `bar.gemspec`:"), - a_string_starting_with("Does it try to require a relative path? That's been removed in Ruby 1.9."), " # from #{default_bundle_path "bundler", "gems", "bar-1.0-#{ref[0, 12]}", "bar.gemspec"}:1", " > require 'foobarbaz'" ) @@ -1093,6 +1097,7 @@ end describe "when Bundler is bundled" do it "doesn't blow up" do install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "bundler", :path => "#{root}" G @@ -1224,7 +1229,7 @@ end describe "with gemified standard libraries" do it "does not load Psych" do - gemfile "" + gemfile "source \"#{file_uri_for(gem_repo1)}\"" ruby <<-RUBY require '#{entrypoint}/setup' puts defined?(Psych::VERSION) ? Psych::VERSION : "undefined" @@ -1237,7 +1242,7 @@ end end it "does not load openssl" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" ruby <<-RUBY require "bundler/setup" puts defined?(OpenSSL) || "undefined" @@ -1296,13 +1301,13 @@ end RUBY it "activates no gems with -rbundler/setup" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" ruby code, :env => { "RUBYOPT" => activation_warning_hack_rubyopt + " -rbundler/setup" } expect(out).to eq("{}") end it "activates no gems with bundle exec" do - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" create_file("script.rb", code) bundle "exec ruby ./script.rb", :env => { "RUBYOPT" => activation_warning_hack_rubyopt } expect(out).to eq("{}") @@ -1311,7 +1316,7 @@ end it "activates no gems with bundle exec that is loaded" do skip "not executable" if Gem.win_platform? - install_gemfile "" + install_gemfile "source \"#{file_uri_for(gem_repo1)}\"" create_file("script.rb", "#!/usr/bin/env ruby\n\n#{code}") FileUtils.chmod(0o777, bundled_app("script.rb")) bundle "exec ./script.rb", :artifice => nil, :env => { "RUBYOPT" => activation_warning_hack_rubyopt } diff --git a/spec/bundler/runtime/with_unbundled_env_spec.rb b/spec/bundler/runtime/with_unbundled_env_spec.rb index 03de830ea0..731a9921a2 100644 --- a/spec/bundler/runtime/with_unbundled_env_spec.rb +++ b/spec/bundler/runtime/with_unbundled_env_spec.rb @@ -8,7 +8,7 @@ RSpec.describe "Bundler.with_env helpers" do def build_bundler_context(options = {}) bundle "config set path vendor/bundle" - gemfile "" + gemfile "source \"#{file_uri_for(gem_repo1)}\"" bundle "install", options end diff --git a/spec/bundler/update/git_spec.rb b/spec/bundler/update/git_spec.rb index bf078fa576..26ad1b45d3 100644 --- a/spec/bundler/update/git_spec.rb +++ b/spec/bundler/update/git_spec.rb @@ -7,6 +7,7 @@ RSpec.describe "bundle update" do update_git "foo", :branch => "omg" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo-1.0")}", :branch => "omg" do gem 'foo' end @@ -28,6 +29,7 @@ RSpec.describe "bundle update" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rails", :git => "#{file_uri_for(lib_path("rails"))}" G @@ -40,6 +42,7 @@ RSpec.describe "bundle update" do update_git "foo", :branch => "omg", :path => lib_path("foo") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" git "#{lib_path("foo")}", :branch => "omg" do gem 'foo' end @@ -61,6 +64,7 @@ RSpec.describe "bundle update" do end install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo"))}" gem "bar" G @@ -79,12 +83,14 @@ RSpec.describe "bundle update" do build_git "foo", :path => lib_path("foo_two") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :git => "#{file_uri_for(lib_path("foo_one"))}" G FileUtils.rm_rf lib_path("foo_one") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", "1.0", :git => "#{file_uri_for(lib_path("foo_two"))}" G @@ -100,6 +106,7 @@ RSpec.describe "bundle update" do update_git "foo", :push => "master" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :git => "#{@remote.path}" G @@ -108,6 +115,7 @@ RSpec.describe "bundle update" do update_git "foo", :push => "fubar" gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem 'foo', :git => "#{@remote.path}", :tag => "fubar" G @@ -183,6 +191,7 @@ RSpec.describe "bundle update" do build_git "foo", "1.0" install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "foo", :git => "#{file_uri_for(lib_path("foo-1.0"))}" G @@ -214,6 +223,7 @@ RSpec.describe "bundle update" do build_git "rails", "2.3.2", :path => lib_path("rails") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "rails", :git => "#{file_uri_for(lib_path("rails"))}" G diff --git a/spec/bundler/update/path_spec.rb b/spec/bundler/update/path_spec.rb index 38c125e04b..756770313b 100644 --- a/spec/bundler/update/path_spec.rb +++ b/spec/bundler/update/path_spec.rb @@ -6,6 +6,7 @@ RSpec.describe "path sources" do build_lib "activesupport", "2.3.5", :path => lib_path("rails/activesupport") install_gemfile <<-G + source "#{file_uri_for(gem_repo1)}" gem "activesupport", :path => "#{lib_path("rails/activesupport")}" G |