summaryrefslogtreecommitdiff
path: root/spec/ruby/spec_helper.rb
blob: 527ed4e3a273e30bfcaab9b88357b40a6d6ae825 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
use_realpath = File.respond_to?(:realpath)
root = File.dirname(__FILE__)
dir = "fixtures/code"
CODE_LOADING_DIR = use_realpath ? File.realpath(dir, root) : File.expand_path(dir, root)

# Enable Thread.report_on_exception by default to catch thread errors earlier
if Thread.respond_to? :report_on_exception=
  Thread.report_on_exception = true
else
  class Thread
    def report_on_exception=(value)
      raise "shim Thread#report_on_exception used with true" if value
    end
  end
end

unless GC::INTERNAL_CONSTANTS[:RB_BUG_INSTEAD_OF_RB_MEMERROR]
  MSpec.enable_feature :no_memory_error
end

unless ENV['MSPEC_RUNNER'] # Running directly with ruby some_spec.rb
  mspec_lib = File.expand_path("../../mspec/lib", __FILE__)
  $LOAD_PATH << mspec_lib if File.directory?(mspec_lib)

  begin
    require 'mspec'
    require 'mspec/commands/mspec-run'
  rescue LoadError
    puts "Please add -Ipath/to/mspec/lib or clone mspec as a sibling to run the specs."
    exit 1
  end
end

# Compare with SpecVersion directly here so it works even with --unguarded
if VersionGuard::FULL_RUBY_VERSION < SpecVersion.new('2.7')
  abort "This version of ruby/spec requires Ruby 2.7+"
end

unless ENV['MSPEC_RUNNER'] # Running directly with ruby some_spec.rb
  ARGV.unshift $0
  MSpecRun.main
end