diff options
author | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-22 15:11:12 +0000 |
---|---|---|
committer | k0kubun <k0kubun@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-02-22 15:11:12 +0000 |
commit | 666cafbeffbb8d9db27b9c4041d9edcc4e745770 (patch) | |
tree | f6a4ea2a6e43c421a5240cc6c6de8212f18304a8 /test/lib/jit_support.rb | |
parent | 073c8cfee453280ad4d57651a823fc02e8a6fb83 (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/jit_support.rb')
-rw-r--r-- | test/lib/jit_support.rb | 33 |
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 |