From 1a416920f19acccaa7600a6c1e841a198decb50e Mon Sep 17 00:00:00 2001 From: Hiroshi SHIBATA Date: Mon, 18 Nov 2024 16:50:12 +0900 Subject: Load required helpers from bundler examples and invoke bundled_gems_spec.rb at test-bundled-gems --- common.mk | 7 ++++--- spec/bundled_gems_spec.rb | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 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 = {}) -- cgit v1.2.3