From 1e8d3b15930fc2d97c6b2a53e862bcb52c6d81f9 Mon Sep 17 00:00:00 2001 From: Son Luong Ngoc Date: Mon, 29 Apr 2024 11:35:20 +0200 Subject: [PATCH] bzltestutil: restore timeout signal handler In https://github.com/bazelbuild/rules_go/pull/3920, a new mechanism to handle test timeout was introduced. However this broke existing tests that use SIGTERM inside. Restore the original behavior. --- go/tools/builders/generate_test_main.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/go/tools/builders/generate_test_main.go b/go/tools/builders/generate_test_main.go index f5b5fcce3..b85614ba8 100644 --- a/go/tools/builders/generate_test_main.go +++ b/go/tools/builders/generate_test_main.go @@ -247,7 +247,14 @@ func main() { // period (15s) expires. // If TEST_TIMEOUT is not set (e.g., when the test binary is run by Delve for debugging), we don't // ignore SIGTERM so it can be properly terminated. - signal.Ignore(syscall.SIGTERM) + // We do not panic (like native go test does) because users may legitimately want to use SIGTERM + // in tests. + // See https://github.com/golang/go/blob/e816eb50140841c524fd07ecb4eaa078954eb47c/src/testing/testing.go#L2351 + c := make(chan os.Signal, 1) + signal.Notify(c, syscall.SIGTERM) + go func() { + <-c + }() } {{if not .TestMain}}