Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion internal/commands/launch.go
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ func (l *LaunchCommand) Execute(cfg *config.Config) error {

cmd := exec.CommandContext(ctx, cfg.Runner.Command, cfg.Runner.Args...)
cmd.Env = runnerEnv
cmd.Stdout, cmd.Stderr = logs.GetRunnerWriters()
cmd.Stdout, cmd.Stderr = logs.GetRunnerWriters("javascript")

if err := cmd.Start(); err != nil {
cancelHealthMonitor()
Expand Down
10 changes: 6 additions & 4 deletions internal/logs/runner_writers.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package logs

import (
"bufio"
"fmt"
"io"
"log"
"os"
Expand Down Expand Up @@ -45,10 +46,11 @@ func (w *RunnerWriter) Write(p []byte) (n int, err error) {
return len(p), nil
}

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

return stdout, stderr
}
24 changes: 23 additions & 1 deletion internal/logs/runner_writers_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import (
"testing"

"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

func TestRunnerWriter(t *testing.T) {
Expand Down Expand Up @@ -93,7 +94,7 @@ func TestRunnerWriter(t *testing.T) {
}

func TestGetRunnerWriters(t *testing.T) {
stdout, stderr := GetRunnerWriters()
stdout, stderr := GetRunnerWriters("javascript")

assert.NotNil(t, stdout, "GetRunnerWriters() stdout should not be nil")
assert.NotNil(t, stderr, "GetRunnerWriters() stderr should not be nil")
Expand All @@ -103,3 +104,24 @@ func TestGetRunnerWriters(t *testing.T) {
var _ io.Writer = stdout
var _ io.Writer = stderr
}

func TestGetRunnerWritersWithDifferentTypes(t *testing.T) {
GetRunnerWriters("javascript")
GetRunnerWriters("python")

var jsBuf, pyBuf bytes.Buffer
jsWriter := NewRunnerWriter(&jsBuf, "[runner-javascript] ", "DEBUG", ColorCyan)
pyWriter := NewRunnerWriter(&pyBuf, "[runner-python] ", "DEBUG", ColorCyan)

_, err := jsWriter.Write([]byte("test message"))
require.NoError(t, err)
_, err = pyWriter.Write([]byte("test message"))
require.NoError(t, err)

jsOutput := jsBuf.String()
pyOutput := pyBuf.String()

assert.Contains(t, jsOutput, "[runner-javascript]", "JavaScript runner should have correct prefix")
assert.Contains(t, pyOutput, "[runner-python]", "Python runner should have correct prefix")
assert.NotEqual(t, jsOutput, pyOutput, "Different runner types should have different output")
}
Loading