MCPcopy
hub / github.com/rs/zerolog / TestFatal

Function TestFatal

diode/diode_test.go:43–88  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

41}
42
43func TestFatal(t *testing.T) {
44 if os.Getenv("TEST_FATAL") == "1" {
45 w := diode.NewWriter(os.Stderr, 1000, 0, func(missed int) {
46 fmt.Printf("Dropped %d messages\n", missed)
47 })
48 defer w.Close()
49 log := zerolog.New(w)
50 log.Fatal().Msg("test")
51 return
52 }
53
54 cmd := exec.Command(os.Args[0], "-test.run=TestFatal")
55 cmd.Env = append(os.Environ(), "TEST_FATAL=1")
56 stderr, err := cmd.StderrPipe()
57 if err != nil {
58 t.Fatal(err)
59 }
60 err = cmd.Start()
61 if err != nil {
62 t.Fatal(err)
63 }
64
65 var stderrBuf bytes.Buffer
66 var wg sync.WaitGroup
67 wg.Add(1)
68 go func() {
69 defer wg.Done()
70 if _, err := io.Copy(&stderrBuf, stderr); err != nil {
71 t.Errorf("failed to copy stderr: %v", err)
72 }
73 }()
74
75 err = cmd.Wait()
76 if err == nil {
77 t.Error("Expected log.Fatal to exit with non-zero status")
78 }
79
80 wg.Wait() // Wait for the goroutine to finish copying
81 slurp := stderrBuf.Bytes()
82
83 want := "{\"level\":\"fatal\",\"message\":\"test\"}\n"
84 got := cbor.DecodeIfBinaryToString(slurp)
85 if got != want {
86 t.Errorf("Diode Fatal Test failed. got:%s, want:%s!", got, want)
87 }
88}
89
90type SlowWriter struct{}
91

Callers

nothing calls this directly

Calls 9

CloseMethod · 0.95
NewWriterFunction · 0.92
NewFunction · 0.92
DecodeIfBinaryToStringFunction · 0.92
PrintfMethod · 0.80
MsgMethod · 0.80
FatalMethod · 0.80
ErrorMethod · 0.45
BytesMethod · 0.45

Tested by

no test coverage detected