diff options
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_thread.rb | 12 | ||||
| -rw-r--r-- | test/ruby/test_zjit.rb | 40 |
2 files changed, 47 insertions, 5 deletions
diff --git a/test/ruby/test_thread.rb b/test/ruby/test_thread.rb index 60e3aa772a..47a8e94c07 100644 --- a/test/ruby/test_thread.rb +++ b/test/ruby/test_thread.rb @@ -1667,22 +1667,24 @@ q.pop # [Bug #21840] def test_mutex_owner_doesnt_starve_waiters - assert_ruby_status([], "#{<<~"begin;"}\n#{<<~'end;'}") + assert_separately([], "#{<<~"begin;"}\n#{<<~'end;'}") begin; + require "tempfile" + temp = Tempfile.new("temp") m = Mutex.new - fib = lambda { |n| + def fib(n) return n if n <= 1 fib(n - 1) + fib(n - 2) - } + end t1_running = false - t1 = Thread.new do + Thread.new do t1_running = true loop do fib(20) m.synchronize do - File.open(__FILE__) { } # reset timeslice due to blocking operation + File.open(temp.path) { } # reset timeslice due to blocking operation end end end diff --git a/test/ruby/test_zjit.rb b/test/ruby/test_zjit.rb index 2066610cb2..6ad06f9453 100644 --- a/test/ruby/test_zjit.rb +++ b/test/ruby/test_zjit.rb @@ -1496,6 +1496,46 @@ class TestZJIT < Test::Unit::TestCase }, call_threshold: 2 end + def test_invokesuperforward + assert_compiles '[1, 2, 3]', %q{ + class A + def foo(a,b,c) = [a,b,c] + end + + class B < A + def foo(...) = super + end + + def test + B.new.foo(1, 2, 3) + end + + test + test + }, call_threshold: 2 + end + + def test_invokesuperforward_with_args_kwargs_and_block + assert_compiles '[[1, 2], {x: 3}, 4]', %q{ + class A + def foo(*args, **kwargs, &block) + [args, kwargs, block&.call] + end + end + + class B < A + def foo(...) = super + end + + def test + B.new.foo(1, 2, x: 3) { 4 } + end + + test + test + }, call_threshold: 2 + end + def test_send_with_non_constant_keyword_default assert_compiles '[[2, 4, 16], [10, 4, 16], [2, 20, 16], [2, 4, 30], [10, 20, 30]]', %q{ def dbl(x = 1) = x * 2 |
