summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--common.mk7
-rw-r--r--spec/bundled_gems_spec.rb50
2 files changed, 54 insertions, 3 deletions
diff --git a/common.mk b/common.mk
index 07bb8c3f3e..aabae4ddfe 100644
--- a/common.mk
+++ b/common.mk
@@ -1601,7 +1601,7 @@ no-install-for-test-bundled-gems: no-update-default-gemspecs
yes-install-for-test-bundled-gems: yes-update-default-gemspecs
$(XRUBY) -C "$(srcdir)" -r./tool/lib/gem_env.rb bin/gem \
install --no-document --conservative \
- "hoe" "json-schema" "test-unit-rr" "simplecov" "simplecov-html" "simplecov-json"
+ "hoe" "json-schema" "test-unit-rr" "simplecov" "simplecov-html" "simplecov-json" "rspec"
test-bundled-gems-fetch: yes-test-bundled-gems-fetch
yes-test-bundled-gems-fetch:
@@ -1621,9 +1621,10 @@ yes-test-bundled-gems-precheck: Preparing-test-bundled-gems
yes-install-for-test-bundled-gems: Preparing-test-bundled-gems
yes-test-bundled-gems-fetch: Preparing-test-bundled-gems
-
PREPARE_BUNDLED_GEMS = test-bundled-gems-prepare
-test-bundled-gems: $(TEST_RUNNABLE)-test-bundled-gems $(DOT_WAIT) $(TEST_RUNNABLE)-test-bundled-gems-spec
+test-bundled-gems:
+ $(XRUBY) -C $(srcdir) .bundle/bin/rspec $(RSPECOPTS) spec/bundled_gems_spec.rb
+ $(TEST_RUNNABLE)-test-bundled-gems $(DOT_WAIT) $(TEST_RUNNABLE)-test-bundled-gems-spec
yes-test-bundled-gems: test-bundled-gems-run
no-test-bundled-gems:
diff --git a/spec/bundled_gems_spec.rb b/spec/bundled_gems_spec.rb
index 67a6cbe18c..8062ccf1bc 100644
--- a/spec/bundled_gems_spec.rb
+++ b/spec/bundled_gems_spec.rb
@@ -1,6 +1,56 @@
require "bundled_gems"
+require "bundler"
+require "fileutils"
+
+require_relative "bundler/support/builders"
+require_relative "bundler/support/build_metadata"
+require_relative "bundler/support/helpers"
+require_relative "bundler/support/path"
+
+module Gem
+ def self.ruby=(ruby)
+ @ruby = ruby
+ end
+end
+
+RSpec.configure do |config|
+ config.include Spec::Builders
+ config.include Spec::Helpers
+ config.include Spec::Path
+
+ config.before(:suite) do
+ require_relative "bundler/support/rubygems_ext"
+ Spec::Rubygems.test_setup
+ Spec::Helpers.install_dev_bundler
+ end
+
+ config.around(:each) do |example|
+ FileUtils.cp_r Spec::Path.pristine_system_gem_path, Spec::Path.system_gem_path
+
+ with_gem_path_as(system_gem_path) do
+ Bundler.ui.silence { example.run }
+
+ all_output = all_commands_output
+ if example.exception && !all_output.empty?
+ message = all_output + "\n" + example.exception.message
+ (class << example.exception; self; end).send(:define_method, :message) do
+ message
+ end
+ end
+ end
+ ensure
+ reset!
+ end
+
+ config.after :suite do
+ FileUtils.rm_rf Spec::Path.pristine_system_gem_path
+ end
+end
+
RSpec.describe "bundled_gems.rb" do
+
+ Gem.ruby = ENV["RUBY"] if ENV["RUBY"]
ENV["TEST_BUNDLED_GEMS"] = "true"
def script(code, options = {})