kubernetes/test/utils/ktesting/main_test.go
Patrick Ohly 7421eea877 ktesting: install signal handler on demand
The ktesting package is meant to be usable in E2E suites and then must not
affect signal handling in Ginkgo.
2026-01-16 07:51:29 +01:00

49 lines
1.2 KiB
Go

/*
Copyright 2024 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package ktesting
import (
"flag"
"fmt"
"os"
"testing"
"go.uber.org/goleak"
)
func TestMain(m *testing.M) {
// Bail out early when -help was given as parameter.
flag.Parse()
// The unit tests assume that they run as a unit test, with progress reporting enabled.
// This leaks a goroutine, so we have to do it before IgnoreCurrent.
initSignals()
// Must be called *before* creating new goroutines.
goleakOpts := []goleak.Option{
goleak.IgnoreCurrent(),
}
result := m.Run()
if err := goleak.Find(goleakOpts...); err != nil {
fmt.Fprintf(os.Stderr, "leaked Goroutines: %v", err)
os.Exit(1)
}
os.Exit(result)
}