diff options
Diffstat (limited to 'test/lib')
| -rw-r--r-- | test/lib/!Nothing_to_test.rb | 5 | ||||
| -rw-r--r-- | test/lib/jit_support.rb | 29 | ||||
| -rw-r--r-- | test/lib/parser_support.rb | 20 | ||||
| -rw-r--r-- | test/lib/with_different_ofs.rb | 22 |
4 files changed, 76 insertions, 0 deletions
diff --git a/test/lib/!Nothing_to_test.rb b/test/lib/!Nothing_to_test.rb new file mode 100644 index 0000000000..c1f4c439d3 --- /dev/null +++ b/test/lib/!Nothing_to_test.rb @@ -0,0 +1,5 @@ +### Empty test file for chkbuild ### + +# If chkbuild fails with `test-all`, each child file/directory is +# executed individually, but test-unit fails if there are no test +# files in the specified directory. diff --git a/test/lib/jit_support.rb b/test/lib/jit_support.rb new file mode 100644 index 0000000000..386a5a6f1e --- /dev/null +++ b/test/lib/jit_support.rb @@ -0,0 +1,29 @@ +require 'rbconfig' + +module JITSupport + module_function + + def yjit_supported? + return @yjit_supported if defined?(@yjit_supported) + # nil in mswin + @yjit_supported = ![nil, 'no'].include?(RbConfig::CONFIG['YJIT_SUPPORT']) + end + + def yjit_enabled? + defined?(RubyVM::YJIT) && RubyVM::YJIT.enabled? + end + + def yjit_force_enabled? + "#{RbConfig::CONFIG['CFLAGS']} #{RbConfig::CONFIG['CPPFLAGS']}".match?(/(\A|\s)-D ?YJIT_FORCE_ENABLE\b/) + end + + def zjit_supported? + return @zjit_supported if defined?(@zjit_supported) + # nil in mswin + @zjit_supported = ![nil, 'no'].include?(RbConfig::CONFIG['ZJIT_SUPPORT']) + end + + def zjit_enabled? + defined?(RubyVM::ZJIT) && RubyVM::ZJIT.enabled? + end +end diff --git a/test/lib/parser_support.rb b/test/lib/parser_support.rb new file mode 100644 index 0000000000..0daf45e87b --- /dev/null +++ b/test/lib/parser_support.rb @@ -0,0 +1,20 @@ +# frozen_string_literal: true + +module ParserSupport + module_function + + # Determines whether or not Prism is being used in the current process. This + # would have been determined by `--parser=prism` on either the command line or + # from within various environment variables. + def prism_enabled? + RubyVM::InstructionSequence.compile("").to_a[4][:parser] == :prism + end + + # Determines whether or not Prism would be used by a subprocess. This is + # necessary because some tests run in subprocesses, and we need to know if we + # expect Prism to be used by those tests. This happens if Prism is configured + # as the default parser. + def prism_enabled_in_subprocess? + EnvUtil.invoke_ruby(["-v"], "", true, false)[0].include?("+PRISM") + end +end diff --git a/test/lib/with_different_ofs.rb b/test/lib/with_different_ofs.rb new file mode 100644 index 0000000000..559ed6a1d1 --- /dev/null +++ b/test/lib/with_different_ofs.rb @@ -0,0 +1,22 @@ +# frozen_string_literal: true +module DifferentOFS + module WithDifferentOFS + def setup + super + verbose, $VERBOSE = $VERBOSE, nil + @ofs, $, = $,, "-" + $VERBOSE = verbose + end + def teardown + verbose, $VERBOSE = $VERBOSE, nil + $, = @ofs + $VERBOSE = verbose + super + end + end + + def self.extended(klass) + super(klass) + klass.const_set(:DifferentOFS, Class.new(klass).class_eval {include WithDifferentOFS}).name + end +end |
