ruby-changes:50417
From: k0kubun <ko1@a...>
Date: Fri, 23 Feb 2018 00:11:18 +0900 (JST)
Subject: [ruby-changes:50417] k0kubun:r62533 (trunk): test_rubyoptions.rb: don't test --jit if not supported
k0kubun 2018-02-23 00:11:12 +0900 (Fri, 23 Feb 2018) New Revision: 62533 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=62533 Log: test_rubyoptions.rb: don't test --jit if not supported test/lib/jit_support.rb: carved out JITSupport test/ruby/test_jit.rb: ditto Added files: trunk/test/lib/jit_support.rb Modified files: trunk/test/ruby/test_jit.rb trunk/test/ruby/test_rubyoptions.rb Index: test/lib/jit_support.rb =================================================================== --- test/lib/jit_support.rb (nonexistent) +++ test/lib/jit_support.rb (revision 62533) @@ -0,0 +1,33 @@ https://github.com/ruby/ruby/blob/trunk/test/lib/jit_support.rb#L1 +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 Index: test/ruby/test_jit.rb =================================================================== --- test/ruby/test_jit.rb (revision 62532) +++ test/ruby/test_jit.rb (revision 62533) @@ -1,48 +1,15 @@ https://github.com/ruby/ruby/blob/trunk/test/ruby/test_jit.rb#L1 # frozen_string_literal: true require 'test/unit' - -module TestJITSupport - 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 = TestJITSupport.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 +require_relative '../lib/jit_support' # Test for --jit option class TestJIT < Test::Unit::TestCase - include TestJITSupport + include JITSupport # Ensure all supported insns can be compiled. Only basic tests are included. # TODO: ensure --dump=insns includes the expected insn def setup - unless TestJITSupport.supported? + unless JITSupport.supported? skip 'JIT seems not supported on this platform' end end Index: test/ruby/test_rubyoptions.rb =================================================================== --- test/ruby/test_rubyoptions.rb (revision 62532) +++ test/ruby/test_rubyoptions.rb (revision 62533) @@ -3,6 +3,7 @@ require 'test/unit' https://github.com/ruby/ruby/blob/trunk/test/ruby/test_rubyoptions.rb#L3 require 'tmpdir' require 'tempfile' +require_relative '../lib/jit_support' class TestRubyOptions < Test::Unit::TestCase def write_file(filename, content) @@ -171,14 +172,16 @@ class TestRubyOptions < Test::Unit::Test https://github.com/ruby/ruby/blob/trunk/test/ruby/test_rubyoptions.rb#L172 end assert_equal([], e) end - assert_in_out_err(%w(--version --jit)) do |r, e| - assert_match(VERSION_PATTERN_WITH_JIT, r[0]) - if RubyVM::MJIT.enabled? - assert_equal(RUBY_DESCRIPTION, r[0]) - else - assert_equal(EnvUtil.invoke_ruby(['--jit', '-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0]) + if JITSupport.supported? + assert_in_out_err(%w(--version --jit)) do |r, e| + assert_match(VERSION_PATTERN_WITH_JIT, r[0]) + if RubyVM::MJIT.enabled? + assert_equal(RUBY_DESCRIPTION, r[0]) + else + assert_equal(EnvUtil.invoke_ruby(['--jit', '-e', 'print RUBY_DESCRIPTION'], '', true).first, r[0]) + end + assert_equal([], e) end - assert_equal([], e) end end -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/