// 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 }