added tests for eval command runner

This commit is contained in:
Serge A. Zaitsev 2014-12-05 20:21:42 +02:00
parent a87c8336aa
commit 9df80c20d5
2 changed files with 24 additions and 2 deletions

7
zs.go
View File

@ -110,10 +110,13 @@ func eval(cmd []string, vars map[string]string) (string, error) {
outbuf := bytes.NewBuffer(nil) outbuf := bytes.NewBuffer(nil)
err := run(path.Join(ZSDIR, cmd[0]), cmd[1:], vars, outbuf) err := run(path.Join(ZSDIR, cmd[0]), cmd[1:], vars, outbuf)
if err != nil { if err != nil {
log.Println(err) if _, ok := err.(*exec.ExitError); ok {
return "", err
}
outbuf = bytes.NewBuffer(nil) outbuf = bytes.NewBuffer(nil)
err := run(cmd[0], cmd[1:], vars, outbuf) err := run(cmd[0], cmd[1:], vars, outbuf)
if err != nil { // Return exit errors, but ignore if the command was not found
if _, ok := err.(*exec.ExitError); ok {
return "", err return "", err
} }
} }

View File

@ -5,6 +5,7 @@ import (
"fmt" "fmt"
"log" "log"
"os" "os"
"os/exec"
"strings" "strings"
"testing" "testing"
) )
@ -123,6 +124,24 @@ func TestRun(t *testing.T) {
} }
} }
func TestEvalCommand(t *testing.T) {
s, err := eval([]string{"echo", "hello"}, map[string]string{})
if err != nil {
t.Error(err)
}
if s != "hello\n" {
t.Error(s)
}
_, err = eval([]string{"cat", "bogus/file"}, map[string]string{})
if _, ok := err.(*exec.ExitError); !ok {
t.Error("expected ExitError")
}
_, err = eval([]string{"missing command"}, map[string]string{})
if err != nil {
t.Error("missing command should be ignored")
}
}
func TestHelperProcess(*testing.T) { func TestHelperProcess(*testing.T) {
if os.Getenv("ZS_HELPER") != "1" { if os.Getenv("ZS_HELPER") != "1" {
return return