diff options
Diffstat (limited to 'src/exercises/runner.go')
-rw-r--r-- | src/exercises/runner.go | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/src/exercises/runner.go b/src/exercises/runner.go index 1490f13..d034093 100644 --- a/src/exercises/runner.go +++ b/src/exercises/runner.go @@ -1,17 +1,29 @@ package exercises import ( + "bytes" "fmt" "os/exec" ) -func Run(name string) (string, error) { +type Result struct { + Exercise Exercise + Out string + Err string +} + +func Run(name string) (Result, error) { exercise, err := Find(name) if err != nil { - return "", err + return Result{}, err } cmd := exec.Command("go", "run", fmt.Sprintf("./%s", exercise.Path)) - cOut, err := cmd.CombinedOutput() - return string(cOut), err + var stdout, stderr bytes.Buffer + cmd.Stdout = &stdout + cmd.Stderr = &stderr + + err = cmd.Run() + + return Result{Exercise: exercise, Out: stdout.String(), Err: stderr.String()}, err } |