diff options
-rw-r--r-- | lib/bundler/shared_helpers.rb | 13 | ||||
-rw-r--r-- | spec/bundler/cli_spec.rb | 1 | ||||
-rw-r--r-- | spec/bundler/settings_spec.rb | 1 | ||||
-rw-r--r-- | spec/bundler/shared_helpers_spec.rb | 1 | ||||
-rw-r--r-- | spec/commands/check_spec.rb | 1 | ||||
-rw-r--r-- | spec/commands/config_spec.rb | 4 | ||||
-rw-r--r-- | spec/other/cli_dispatch_spec.rb | 2 | ||||
-rw-r--r-- | spec/runtime/gem_tasks_spec.rb | 2 | ||||
-rw-r--r-- | spec/runtime/load_spec.rb | 14 | ||||
-rw-r--r-- | spec/spec_helper.rb | 1 | ||||
-rw-r--r-- | spec/support/helpers.rb | 6 |
11 files changed, 30 insertions, 16 deletions
diff --git a/lib/bundler/shared_helpers.rb b/lib/bundler/shared_helpers.rb index da2a384d29..d259f20e6b 100644 --- a/lib/bundler/shared_helpers.rb +++ b/lib/bundler/shared_helpers.rb @@ -253,6 +253,19 @@ module Bundler current = File.expand_path(SharedHelpers.pwd).untaint until !File.directory?(current) || current == previous + if ENV["BUNDLE_SPEC_RUN"] + # avoid stepping above the tmp directory when testing + gemspec = if ENV["BUNDLE_RUBY"] && ENV["BUNDLE_GEM"] + # for Ruby Core + "lib/bundler/bundler.gemspec" + else + "bundler.gemspec" + end + + # avoid stepping above the tmp directory when testing + return nil if File.file?(File.join(current, gemspec)) + end + names.each do |name| filename = File.join(current, name) yield filename diff --git a/spec/bundler/cli_spec.rb b/spec/bundler/cli_spec.rb index eca911cc15..2e12fbfc6b 100644 --- a/spec/bundler/cli_spec.rb +++ b/spec/bundler/cli_spec.rb @@ -141,7 +141,6 @@ To install the latest version, run `gem install bundler` bundle! "config get --parseable foo" expect(last_command.stdboth).to eq "" - ensure_no_gemfile bundle "platform --ruby" expect(last_command.stdboth).to eq "Could not locate Gemfile" end diff --git a/spec/bundler/settings_spec.rb b/spec/bundler/settings_spec.rb index f105770c17..339428eb48 100644 --- a/spec/bundler/settings_spec.rb +++ b/spec/bundler/settings_spec.rb @@ -10,7 +10,6 @@ RSpec.describe Bundler::Settings do subject(:settings) { described_class.new(nil) } it "raises a GemfileNotFound error with explanation" do - ensure_no_gemfile expect { subject.set_local("foo", "bar") }. to raise_error(Bundler::GemfileNotFound, "Could not locate Gemfile") end diff --git a/spec/bundler/shared_helpers_spec.rb b/spec/bundler/shared_helpers_spec.rb index a9bf67b0d5..8e82d1b910 100644 --- a/spec/bundler/shared_helpers_spec.rb +++ b/spec/bundler/shared_helpers_spec.rb @@ -25,7 +25,6 @@ RSpec.describe Bundler::SharedHelpers do before { ENV["BUNDLE_GEMFILE"] = nil } it "raises a GemfileNotFound error" do - ensure_no_gemfile expect { subject.default_gemfile }.to raise_error( Bundler::GemfileNotFound, "Could not locate Gemfile" ) diff --git a/spec/commands/check_spec.rb b/spec/commands/check_spec.rb index d724ea79fa..cf88736612 100644 --- a/spec/commands/check_spec.rb +++ b/spec/commands/check_spec.rb @@ -199,7 +199,6 @@ RSpec.describe "bundle check" do end it "outputs an error when the default Gemfile is not found" do - ensure_no_gemfile bundle :check expect(exitstatus).to eq(10) if exitstatus expect(err).to include("Could not locate Gemfile") diff --git a/spec/commands/config_spec.rb b/spec/commands/config_spec.rb index abe31b1955..40fab95803 100644 --- a/spec/commands/config_spec.rb +++ b/spec/commands/config_spec.rb @@ -391,10 +391,10 @@ E describe "subcommands" do it "list", :ruby_repo do bundle! "config list" - expect(out).to eq "Settings are listed in order of priority. The top value will be used." + expect(out).to eq "Settings are listed in order of priority. The top value will be used.\nspec_run\nSet via BUNDLE_SPEC_RUN: \"true\"" bundle! "config list", :parseable => true - expect(out).to be_empty + expect(out).to eq "spec_run=true" end it "get" do diff --git a/spec/other/cli_dispatch_spec.rb b/spec/other/cli_dispatch_spec.rb index 1d4489acc3..548539ac89 100644 --- a/spec/other/cli_dispatch_spec.rb +++ b/spec/other/cli_dispatch_spec.rb @@ -2,14 +2,12 @@ RSpec.describe "bundle command names" do it "work when given fully" do - ensure_no_gemfile bundle "install" expect(err).to eq("Could not locate Gemfile") expect(last_command.stdboth).not_to include("Ambiguous command") end it "work when not ambiguous" do - ensure_no_gemfile bundle "ins" expect(err).to eq("Could not locate Gemfile") expect(last_command.stdboth).not_to include("Ambiguous command") diff --git a/spec/runtime/gem_tasks_spec.rb b/spec/runtime/gem_tasks_spec.rb index f0f48a01ac..eb9db56ead 100644 --- a/spec/runtime/gem_tasks_spec.rb +++ b/spec/runtime/gem_tasks_spec.rb @@ -19,7 +19,7 @@ RSpec.describe "require 'bundler/gem_tasks'" do it "includes the relevant tasks" do with_gem_path_as(Spec::Path.base_system_gems.to_s) do - sys_exec "#{rake} -T" + sys_exec "#{rake} -T", "RUBYOPT" => "-I#{bundler_path}" end expect(err).to eq("") diff --git a/spec/runtime/load_spec.rb b/spec/runtime/load_spec.rb index 05ed076b6d..b74dbde3f6 100644 --- a/spec/runtime/load_spec.rb +++ b/spec/runtime/load_spec.rb @@ -45,7 +45,6 @@ RSpec.describe "Bundler.load" do describe "without a gemfile" do it "raises an exception if the default gemfile is not found" do - ensure_no_gemfile expect do Bundler.load end.to raise_error(Bundler::GemfileNotFound, /could not locate gemfile/i) @@ -57,6 +56,19 @@ RSpec.describe "Bundler.load" do Bundler.load end.to raise_error(Bundler::GemfileNotFound, /omg\.rb/) end + + it "does not find a Gemfile above the testing directory" do + bundler_gemfile = tmp.join("../Gemfile") + unless File.exist?(bundler_gemfile) + FileUtils.touch(bundler_gemfile) + @remove_bundler_gemfile = true + end + begin + expect { Bundler.load }.to raise_error(Bundler::GemfileNotFound) + ensure + bundler_gemfile.rmtree if @remove_bundler_gemfile + end + end end describe "when called twice" do diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 884dbd1f5d..067c8dc070 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -25,6 +25,7 @@ $debug = false Spec::Manpages.setup unless Gem.win_platform? Spec::Rubygems.setup ENV["RUBYOPT"] = "#{ENV["RUBYOPT"]} -r#{Spec::Path.spec_dir}/support/hax.rb" +ENV["BUNDLE_SPEC_RUN"] = "true" # Don't wrap output in tests ENV["THOR_COLUMNS"] = "10000" diff --git a/spec/support/helpers.rb b/spec/support/helpers.rb index 0567b26c01..478fe60822 100644 --- a/spec/support/helpers.rb +++ b/spec/support/helpers.rb @@ -313,12 +313,6 @@ module Spec bundle :lock, opts end - # Makes tests that require absence of any Gemfiles pass, even if the running - # system has a Gemfile further up from the specs folder - def ensure_no_gemfile - allow(Bundler::SharedHelpers).to receive(:search_up).and_return(nil) - end - def install_gems(*gems) options = gems.last.is_a?(Hash) ? gems.pop : {} gem_repo = options.fetch(:gem_repo) { gem_repo1 } |