diff zs_test.go @ 4:05fc24caac37 draft

render uses strings, not bytes; added helpers for env and run
author zaitsev.serge
date Fri, 05 Dec 2014 18:09:03 +0000
parents fd79b3a90bef
children e0ee0721d34f
line wrap: on
line diff
--- a/zs_test.go	Fri Dec 05 17:26:59 2014 +0000
+++ b/zs_test.go	Fri Dec 05 18:09:03 2014 +0000
@@ -1,6 +1,13 @@
 package main
 
-import "testing"
+import (
+	"bytes"
+	"fmt"
+	"log"
+	"os"
+	"strings"
+	"testing"
+)
 
 func TestSplit2(t *testing.T) {
 	if a, b := split2("a:b", ":"); a != "a" || b != "b" {
@@ -75,4 +82,52 @@
 	if s, err := render("{{greet}} x{{foo}}z", vars, eval); err != nil || s != "hello xbarz" {
 		t.Error()
 	}
+	// Test error case
+	if s, err := render("a {{greet text ", vars, eval); err == nil || len(s) != 0 {
+		t.Error()
+	}
 }
+
+func TestEnv(t *testing.T) {
+	e := env(map[string]string{"foo": "bar", "baz": "hello world"})
+	mustHave := []string{"ZS=" + os.Args[0], "ZS_FOO=bar", "ZS_BAZ=hello world", "PATH="}
+	for _, s := range mustHave {
+		found := false
+		for _, v := range e {
+			if strings.HasPrefix(v, s) {
+				found = true
+				break
+			}
+		}
+		if !found {
+			t.Error("Missing", s)
+		}
+	}
+}
+
+func TestRun(t *testing.T) {
+	out := bytes.NewBuffer(nil)
+	err := run("some_unbelievable_command_name", []string{}, map[string]string{}, out)
+	if err == nil {
+		t.Error()
+	}
+
+	out = bytes.NewBuffer(nil)
+	err = run(os.Args[0], []string{"-test.run=TestHelperProcess"},
+		map[string]string{"helper": "1", "out": "foo", "err": "bar"}, out)
+	if err != nil {
+		t.Error(err)
+	}
+	if out.String() != "foo\n" {
+		t.Error(out.String())
+	}
+}
+
+func TestHelperProcess(*testing.T) {
+	if os.Getenv("ZS_HELPER") != "1" {
+		return
+	}
+	defer os.Exit(0)                 // TODO check exit code
+	log.Println(os.Getenv("ZS_ERR")) // stderr
+	fmt.Println(os.Getenv("ZS_OUT")) // stdout
+}