package logging import ( "fmt" "strings" "testing" ) func TestPanicRecorder(t *testing.T) { rec := panics.registerPlugin("test") output := []string{ "panic: test", " stack info", } for _, line := range output { rec(line) } expected := fmt.Sprintf(pluginPanicOutput, "test", strings.Join(output, "\n")) res := PluginPanics() if len(res) == 0 { t.Fatal("no output") } if res[0] != expected { t.Fatalf("expected: %q\ngot: %q", expected, res[0]) } } func TestPanicLimit(t *testing.T) { rec := panics.registerPlugin("test") rec("panic: test") for i := 0; i < 200; i++ { rec(fmt.Sprintf("LINE: %d", i)) } res := PluginPanics() // take the extra content into account max := strings.Count(pluginPanicOutput, "\n") + panics.maxLines for _, out := range res { found := strings.Count(out, "\n") if found > max { t.Fatalf("expected no more than %d lines, got: %d", max, found) } } }