summaryrefslogtreecommitdiff
path: root/test/lib/parser_support.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/lib/parser_support.rb')
-rw-r--r--test/lib/parser_support.rb20
1 files changed, 20 insertions, 0 deletions
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