summaryrefslogtreecommitdiff
path: root/test/lib
diff options
context:
space:
mode:
authork0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-22 15:11:12 +0000
committerk0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2018-02-22 15:11:12 +0000
commit666cafbeffbb8d9db27b9c4041d9edcc4e745770 (patch)
treef6a4ea2a6e43c421a5240cc6c6de8212f18304a8 /test/lib
parent073c8cfee453280ad4d57651a823fc02e8a6fb83 (diff)
test_rubyoptions.rb: don't test --jit if not supported
test/lib/jit_support.rb: carved out JITSupport test/ruby/test_jit.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@62533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/lib')
-rw-r--r--test/lib/jit_support.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/test/lib/jit_support.rb b/test/lib/jit_support.rb
new file mode 100644
index 0000000000..a6c22165be
--- /dev/null
+++ b/test/lib/jit_support.rb
@@ -0,0 +1,33 @@
+module JITSupport
+ JIT_TIMEOUT = 600 # 10min for each...
+ JIT_SUCCESS_PREFIX = 'JIT success \(\d+\.\dms\)'
+ SUPPORTED_COMPILERS = [
+ 'gcc',
+ 'clang',
+ ]
+
+ module_function
+ def eval_with_jit(script, verbose: 0, min_calls: 5, timeout: JIT_TIMEOUT)
+ EnvUtil.invoke_ruby(
+ ['--disable-gems', '--jit-wait', "--jit-verbose=#{verbose}", "--jit-min-calls=#{min_calls}", '-e', script],
+ '', true, true, timeout: timeout,
+ )
+ end
+
+ def supported?
+ # Experimental. If you want to ensure JIT is working with this test, please set this for now.
+ if ENV.key?('RUBY_FORCE_TEST_JIT')
+ return true
+ end
+
+ # Very pessimistic check. With this check, we can't ensure JIT is working.
+ begin
+ _, err = JITSupport.eval_with_jit('proc {}.call', verbose: 1, min_calls: 1, timeout: 10)
+ rescue Timeout::Error
+ $stderr.puts "TestJIT: #jit_supported? check timed out"
+ false
+ else
+ err.match?(JIT_SUCCESS_PREFIX)
+ end
+ end
+end