| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- package debug
- import (
- "fmt"
- "os"
- )
- const (
- envAssertPanic = "GO_PROMPT_ENABLE_ASSERT"
- )
- var (
- enableAssert bool
- )
- func init() {
- if e := os.Getenv(envAssertPanic); e == "true" || e == "1" {
- enableAssert = true
- }
- }
- // Assert ensures expected condition.
- func Assert(cond bool, msg interface{}) {
- if cond {
- return
- }
- if enableAssert {
- panic(msg)
- }
- writeWithSync(2, "[ASSERT] "+toString(msg))
- }
- func toString(v interface{}) string {
- switch a := v.(type) {
- case func() string:
- return a()
- case string:
- return a
- case fmt.Stringer:
- return a.String()
- default:
- return fmt.Sprintf("unexpected type, %t", v)
- }
- }
- // AssertNoError ensures err is nil.
- func AssertNoError(err error) {
- if err == nil {
- return
- }
- if enableAssert {
- panic(err)
- }
- writeWithSync(2, "[ASSERT] "+err.Error())
- }
|