33 lines
981 B
Go
33 lines
981 B
Go
// Copyright 2020 The Go Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package testlog
|
|
|
|
import "sync"
|
|
|
|
// PanicOnExit0 reports whether to panic on a call to os.Exit(0).
|
|
// This is in the testlog package because, like other definitions in
|
|
// package testlog, it is a hook between the testing package and the
|
|
// os package. This is used to ensure that an early call to os.Exit(0)
|
|
// does not cause a test to pass.
|
|
func PanicOnExit0() bool {
|
|
panicOnExit0.mu.Lock()
|
|
defer panicOnExit0.mu.Unlock()
|
|
return panicOnExit0.val
|
|
}
|
|
|
|
// panicOnExit0 is the flag used for PanicOnExit0. This uses a lock
|
|
// because the value can be cleared via a timer call that may race
|
|
// with calls to os.Exit
|
|
var panicOnExit0 struct {
|
|
mu sync.Mutex
|
|
val bool
|
|
}
|
|
|
|
// SetPanicOnExit0 sets panicOnExit0 to v.
|
|
func SetPanicOnExit0(v bool) {
|
|
panicOnExit0.mu.Lock()
|
|
defer panicOnExit0.mu.Unlock()
|
|
panicOnExit0.val = v
|
|
}
|