summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/bundler/shared_helpers.rb13
-rw-r--r--spec/bundler/cli_spec.rb1
-rw-r--r--spec/bundler/settings_spec.rb1
-rw-r--r--spec/bundler/shared_helpers_spec.rb1
-rw-r--r--spec/commands/check_spec.rb1
-rw-r--r--spec/commands/config_spec.rb4
-rw-r--r--spec/other/cli_dispatch_spec.rb2
-rw-r--r--spec/runtime/gem_tasks_spec.rb2
-rw-r--r--spec/runtime/load_spec.rb14
-rw-r--r--spec/spec_helper.rb1
-rw-r--r--spec/support/helpers.rb6
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 }