aboutsummaryrefslogtreecommitdiffstats
path: root/src/exercises/runner.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/exercises/runner.go')
-rw-r--r--src/exercises/runner.go20
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
}