From 9c682d3d562a3754a636ca40075dbce59d23a14e Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Wed, 15 Apr 2026 23:51:32 +0200 Subject: [PATCH] Set a default EnvUtil.timeout_scale for TruffleRuby to help avoid transient failures --- tool/lib/envutil.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tool/lib/envutil.rb b/tool/lib/envutil.rb index 60896050567e5c..dcc9148a8407f0 100644 --- a/tool/lib/envutil.rb +++ b/tool/lib/envutil.rb @@ -48,6 +48,14 @@ class << self attr_reader :original_internal_encoding, :original_external_encoding, :original_verbose, :original_warning + if RUBY_ENGINE == "truffleruby" + # Tests relying on timeout have high variance on TruffleRuby due to the highly-optimizing JIT, deoptimization, profiling interpreter, different GC, etc. + # Setting a default timeout scale helps avoid transient failures for tests relying on timeouts. + # We choose 10 because it is the same number used in CRuby CI on macOS: + # https://github.com/ruby/ruby/blob/9d46b0c735877f152a0b4b16b8153c6f395dee28/.github/workflows/macos.yml#L133 + self.timeout_scale = 10 + end + def capture_global_values @original_internal_encoding = Encoding.default_internal @original_external_encoding = Encoding.default_external