MCPcopy
hub / github.com/github/github-mcp-server / TestLoggedReadWriter

Function TestLoggedReadWriter

pkg/log/io_test.go:13–58  ·  view source on GitHub ↗
(t *testing.T)

Source from the content-addressed store, hash-verified

11)
12
13func TestLoggedReadWriter(t *testing.T) {
14 t.Run("Read method logs and passes data", func(t *testing.T) {
15 // Setup
16 inputData := "test input data"
17 reader := strings.NewReader(inputData)
18
19 // Create logger with buffer to capture output
20 var logBuffer bytes.Buffer
21 logger := slog.New(slog.NewTextHandler(&logBuffer, &slog.HandlerOptions{ReplaceAttr: removeTimeAttr}))
22
23 lrw := NewIOLogger(reader, nil, logger)
24
25 // Test Read
26 buf := make([]byte, 100)
27 n, err := lrw.Read(buf)
28
29 // Assertions
30 assert.NoError(t, err)
31 assert.Equal(t, len(inputData), n)
32 assert.Equal(t, inputData, string(buf[:n]))
33 assert.Contains(t, logBuffer.String(), "[stdin]")
34 assert.Contains(t, logBuffer.String(), inputData)
35 })
36
37 t.Run("Write method logs and passes data", func(t *testing.T) {
38 // Setup
39 outputData := "test output data"
40 var writeBuffer bytes.Buffer
41
42 // Create logger with buffer to capture output
43 var logBuffer bytes.Buffer
44 logger := slog.New(slog.NewTextHandler(&logBuffer, &slog.HandlerOptions{ReplaceAttr: removeTimeAttr}))
45
46 lrw := NewIOLogger(nil, &writeBuffer, logger)
47
48 // Test Write
49 n, err := lrw.Write([]byte(outputData))
50
51 // Assertions
52 assert.NoError(t, err)
53 assert.Equal(t, len(outputData), n)
54 assert.Equal(t, outputData, writeBuffer.String())
55 assert.Contains(t, logBuffer.String(), "[stdout]")
56 assert.Contains(t, logBuffer.String(), outputData)
57 })
58}
59
60func removeTimeAttr(groups []string, a slog.Attr) slog.Attr {
61 if a.Key == slog.TimeKey && len(groups) == 0 {

Callers

nothing calls this directly

Calls 4

ReadMethod · 0.95
WriteMethod · 0.95
NewIOLoggerFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected