1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/spec/bundler/spec_helper.rb
David Rodríguez b2668248b6 [rubygems/rubygems] Make sure RSpec diffs don't omit the different part
We sometimes check assertions on lockfile contents, which involves
comparing a reasonably long string. Sometimes RSpec is not able to show
the part of the string that's actually different, making it hard to
figure out the issue.

Configuring this setting should fix the issue in most cases.

https://github.com/rubygems/rubygems/commit/5ad8ee499e
2022-10-04 06:22:50 +09:00

121 lines
3.1 KiB
Ruby

# frozen_string_literal: true
require "psych"
require "bundler/vendored_fileutils"
require "bundler/vendored_uri"
require "digest"
if File.expand_path(__FILE__) =~ %r{([^\w/\.:\-])}
abort "The bundler specs cannot be run from a path that contains special characters (particularly #{$1.inspect})"
end
require "bundler"
require "rspec/core"
require "rspec/expectations"
require "rspec/mocks"
require "rspec/support/differ"
require_relative "support/builders"
require_relative "support/build_metadata"
require_relative "support/filters"
require_relative "support/helpers"
require_relative "support/indexes"
require_relative "support/matchers"
require_relative "support/permissions"
require_relative "support/platforms"
$debug = false
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::Indexes
config.include Spec::Matchers
config.include Spec::Path
config.include Spec::Platforms
config.include Spec::Permissions
# Enable flags like --only-failures and --next-failure
config.example_status_persistence_file_path = ".rspec_status"
config.silence_filter_announcements = !ENV["TEST_ENV_NUMBER"].nil?
config.disable_monkey_patching!
# Since failures cause us to keep a bunch of long strings in memory, stop
# once we have a large number of failures (indicative of core pieces of
# bundler being broken) so that running the full test suite doesn't take
# forever due to memory constraints
config.fail_fast ||= 25 if ENV["CI"]
config.bisect_runner = :shell
config.expect_with :rspec do |c|
c.syntax = :expect
c.max_formatted_output_length = 1000
end
config.mock_with :rspec do |mocks|
mocks.allow_message_expectations_on_nil = false
end
config.before :suite do
Gem.ruby = ENV["RUBY"] if ENV["RUBY"]
require_relative "support/rubygems_ext"
Spec::Rubygems.test_setup
ENV["BUNDLER_SPEC_RUN"] = "true"
ENV["BUNDLER_NO_OLD_RUBYGEMS_WARNING"] = "true"
ENV["BUNDLE_USER_CONFIG"] = ENV["BUNDLE_USER_CACHE"] = ENV["BUNDLE_USER_PLUGIN"] = nil
ENV["BUNDLE_APP_CONFIG"] = nil
ENV["BUNDLE_SILENCE_ROOT_WARNING"] = nil
ENV["RUBYGEMS_GEMDEPS"] = nil
ENV["XDG_CONFIG_HOME"] = nil
ENV["GEMRC"] = nil
# Don't wrap output in tests
ENV["THOR_COLUMNS"] = "10000"
extend(Spec::Helpers)
system_gems :bundler, :path => pristine_system_gem_path
end
config.before :all do
check_test_gems!
build_repo1
reset_paths!
end
config.around :each do |example|
begin
FileUtils.cp_r pristine_system_gem_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
end
config.after :suite do
FileUtils.rm_r Spec::Path.pristine_system_gem_path
end
end