MCPcopy Index your code
hub / github.com/coder/coder / TestLogWriter

Function TestLogWriter

scripts/develop/main_test.go:26–121  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

24)
25
26func TestLogWriter(t *testing.T) {
27 t.Parallel()
28
29 t.Run("SingleLine", func(t *testing.T) {
30 t.Parallel()
31 var buf bytes.Buffer
32 logger := slog.Make(sloghuman.Sink(&buf)).Named("test")
33 w := &logWriter{logger: logger}
34 _, err := w.Write([]byte("hello\n"))
35 require.NoError(t, err)
36 out := buf.String()
37 assert.Contains(t, out, "test:")
38 assert.Contains(t, out, "hello")
39 })
40
41 t.Run("MultiLine", func(t *testing.T) {
42 t.Parallel()
43 var buf bytes.Buffer
44 logger := slog.Make(sloghuman.Sink(&buf)).Named("x")
45 w := &logWriter{logger: logger}
46 _, err := w.Write([]byte("a\nb\nc\n"))
47 require.NoError(t, err)
48 out := buf.String()
49 lines := strings.Split(strings.TrimSpace(out), "\n")
50 require.Len(t, lines, 3)
51 for _, line := range lines {
52 assert.Contains(t, line, "x:")
53 }
54 })
55
56 t.Run("PartialLine", func(t *testing.T) {
57 t.Parallel()
58 var buf bytes.Buffer
59 logger := slog.Make(sloghuman.Sink(&buf)).Named("p")
60 w := &logWriter{logger: logger}
61 _, err := w.Write([]byte("no newline"))
62 require.NoError(t, err)
63 // Partial line should be buffered, not logged yet.
64 assert.Empty(t, buf.String())
65 })
66
67 t.Run("PartialThenNewline", func(t *testing.T) {
68 t.Parallel()
69 var buf bytes.Buffer
70 logger := slog.Make(sloghuman.Sink(&buf)).Named("p")
71 w := &logWriter{logger: logger}
72
73 _, err := w.Write([]byte("hello"))
74 require.NoError(t, err)
75 assert.Empty(t, buf.String())
76
77 _, err = w.Write([]byte(" world\n"))
78 require.NoError(t, err)
79 assert.Contains(t, buf.String(), "hello world")
80 })
81
82 t.Run("EmptyLinesSkipped", func(t *testing.T) {
83 t.Parallel()

Callers

nothing calls this directly

Calls 10

WriteMethod · 0.95
NamedMethod · 0.80
RunMethod · 0.65
AddMethod · 0.65
WaitMethod · 0.65
StringMethod · 0.45
ContainsMethod · 0.45
LenMethod · 0.45
EmptyMethod · 0.45
DoneMethod · 0.45

Tested by

no test coverage detected