summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/!Nothing_to_test.rb5
-rw-r--r--test/lib/jit_support.rb29
-rw-r--r--test/lib/parser_support.rb20
-rw-r--r--test/lib/with_different_ofs.rb22
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