changeset 5:e0ee0721d34f draft

added tests for eval command runner
author zaitsev.serge
date Fri, 05 Dec 2014 18:21:42 +0000
parents 05fc24caac37
children cb66f5b86616
files zs.go zs_test.go
diffstat 2 files changed, 24 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/zs.go	Fri Dec 05 18:09:03 2014 +0000
+++ b/zs.go	Fri Dec 05 18:21:42 2014 +0000
@@ -110,10 +110,13 @@
 	outbuf := bytes.NewBuffer(nil)
 	err := run(path.Join(ZSDIR, cmd[0]), cmd[1:], vars, outbuf)
 	if err != nil {
-		log.Println(err)
+		if _, ok := err.(*exec.ExitError); ok {
+			return "", err
+		}
 		outbuf = bytes.NewBuffer(nil)
 		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
 		}
 	}
--- a/zs_test.go	Fri Dec 05 18:09:03 2014 +0000
+++ b/zs_test.go	Fri Dec 05 18:21:42 2014 +0000
@@ -5,6 +5,7 @@
 	"fmt"
 	"log"
 	"os"
+	"os/exec"
 	"strings"
 	"testing"
 )
@@ -123,6 +124,24 @@
 	}
 }
 
+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) {
 	if os.Getenv("ZS_HELPER") != "1" {
 		return