summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2022-07-24 16:35:38 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2022-07-24 16:36:33 +0900
commite0a7e5e13141a06103673b9d4ff21ca864ec38f9 (patch)
treee26fffdbaea56eacd314c438fdd82144bf4e9f8a
parent114f85ecec5ad34531b77c0248f4a3bf070404d1 (diff)
Kill bundled gem tests when interrupted
Notes
Notes: Merged: https://github.com/ruby/ruby/pull/6173
-rw-r--r--common.mk2
-rw-r--r--tool/test-bundled-gems.rb12
2 files changed, 11 insertions, 3 deletions
diff --git a/common.mk b/common.mk
index b4b00bdd46..aeb87dfb55 100644
--- a/common.mk
+++ b/common.mk
@@ -1407,7 +1407,7 @@ no-test-bundled-gems:
BUNDLED_GEMS =
test-bundled-gems-run: $(PREPARE_BUNDLED_GEMS)
- $(Q) $(XRUBY) $(tooldir)/test-bundled-gems.rb $(BUNDLED_GEMS)
+ $(gnumake_recursive)$(Q) $(XRUBY) $(tooldir)/test-bundled-gems.rb $(BUNDLED_GEMS)
test-bundler-precheck: $(TEST_RUNNABLE)-test-bundler-precheck
no-test-bundler-precheck:
diff --git a/tool/test-bundled-gems.rb b/tool/test-bundled-gems.rb
index 6312e1872d..1bdf2fa95a 100644
--- a/tool/test-bundled-gems.rb
+++ b/tool/test-bundled-gems.rb
@@ -71,15 +71,23 @@ File.foreach("#{gem_dir}/bundled_gems") do |line|
break Timeout.timeout(sec) {Process.wait(pid)}
rescue Timeout::Error
end
+ rescue Interrupt
+ exit_code = Signal.list["INT"]
+ Process.kill("-KILL", pid)
+ Process.wait(pid)
+ break
end
unless $?.success?
- puts "Tests failed with exit code #{$?.exitstatus}"
+
+ puts "Tests failed " +
+ ($?.signaled? ? "by SIG#{Signal.signame($?.termsig)}" :
+ "with exit code #{$?.exitstatus}")
if allowed_failures.include?(gem)
puts "Ignoring test failures for #{gem} due to \$TEST_BUNDLED_GEMS_ALLOW_FAILURES"
else
failed << gem
- exit_code = $?.exitstatus
+ exit_code = $?.exitstatus if $?.exitstatus
end
end
print "##[endgroup]\n" if github_actions