Skip to content

Commit cce9353

Browse files
committed
refactor: Support logging for multiple runners
1 parent c0c861a commit cce9353

File tree

3 files changed

+30
-6
lines changed

3 files changed

+30
-6
lines changed

internal/commands/launch.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func (l *LaunchCommand) Execute(cfg *config.Config) error {
9393

9494
cmd := exec.CommandContext(ctx, cfg.Runner.Command, cfg.Runner.Args...)
9595
cmd.Env = runnerEnv
96-
cmd.Stdout, cmd.Stderr = logs.GetRunnerWriters()
96+
cmd.Stdout, cmd.Stderr = logs.GetRunnerWriters("javascript")
9797

9898
if err := cmd.Start(); err != nil {
9999
cancelHealthMonitor()

internal/logs/runner_writers.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package logs
22

33
import (
44
"bufio"
5+
"fmt"
56
"io"
67
"log"
78
"os"
@@ -45,10 +46,11 @@ func (w *RunnerWriter) Write(p []byte) (n int, err error) {
4546
return len(p), nil
4647
}
4748

48-
// GetRunnerWriters returns configured `stdout` and `stderr` writers for a runner.
49-
func GetRunnerWriters() (stdout io.Writer, stderr io.Writer) {
50-
stdout = NewRunnerWriter(os.Stdout, "[Runner] ", "DEBUG", ColorCyan)
51-
stderr = NewRunnerWriter(os.Stderr, "[Runner] ", "ERROR", ColorRed)
49+
// GetRunnerWriters returns configured `stdout` and `stderr` writers for a runner type.
50+
func GetRunnerWriters(runnerType string) (stdout io.Writer, stderr io.Writer) {
51+
prefix := fmt.Sprintf("[runner-%s] ", runnerType)
52+
stdout = NewRunnerWriter(os.Stdout, prefix, "DEBUG", ColorCyan)
53+
stderr = NewRunnerWriter(os.Stderr, prefix, "ERROR", ColorRed)
5254

5355
return stdout, stderr
5456
}

internal/logs/runner_writers_test.go

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import (
66
"testing"
77

88
"github.com/stretchr/testify/assert"
9+
"github.com/stretchr/testify/require"
910
)
1011

1112
func TestRunnerWriter(t *testing.T) {
@@ -93,7 +94,7 @@ func TestRunnerWriter(t *testing.T) {
9394
}
9495

9596
func TestGetRunnerWriters(t *testing.T) {
96-
stdout, stderr := GetRunnerWriters()
97+
stdout, stderr := GetRunnerWriters("javascript")
9798

9899
assert.NotNil(t, stdout, "GetRunnerWriters() stdout should not be nil")
99100
assert.NotNil(t, stderr, "GetRunnerWriters() stderr should not be nil")
@@ -103,3 +104,24 @@ func TestGetRunnerWriters(t *testing.T) {
103104
var _ io.Writer = stdout
104105
var _ io.Writer = stderr
105106
}
107+
108+
func TestGetRunnerWritersWithDifferentTypes(t *testing.T) {
109+
GetRunnerWriters("javascript")
110+
GetRunnerWriters("python")
111+
112+
var jsBuf, pyBuf bytes.Buffer
113+
jsWriter := NewRunnerWriter(&jsBuf, "[runner-javascript] ", "DEBUG", ColorCyan)
114+
pyWriter := NewRunnerWriter(&pyBuf, "[runner-python] ", "DEBUG", ColorCyan)
115+
116+
_, err := jsWriter.Write([]byte("test message"))
117+
require.NoError(t, err)
118+
_, err = pyWriter.Write([]byte("test message"))
119+
require.NoError(t, err)
120+
121+
jsOutput := jsBuf.String()
122+
pyOutput := pyBuf.String()
123+
124+
assert.Contains(t, jsOutput, "[runner-javascript]", "JavaScript runner should have correct prefix")
125+
assert.Contains(t, pyOutput, "[runner-python]", "Python runner should have correct prefix")
126+
assert.NotEqual(t, jsOutput, pyOutput, "Different runner types should have different output")
127+
}

0 commit comments

Comments
 (0)