comparison 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
comparison
equal deleted inserted replaced
3:53dea9841cd9 4:05fc24caac37
1 package main 1 package main
2 2
3 import "testing" 3 import (
4 "bytes"
5 "fmt"
6 "log"
7 "os"
8 "strings"
9 "testing"
10 )
4 11
5 func TestSplit2(t *testing.T) { 12 func TestSplit2(t *testing.T) {
6 if a, b := split2("a:b", ":"); a != "a" || b != "b" { 13 if a, b := split2("a:b", ":"); a != "a" || b != "b" {
7 t.Fail() 14 t.Fail()
8 } 15 }
73 t.Error() 80 t.Error()
74 } 81 }
75 if s, err := render("{{greet}} x{{foo}}z", vars, eval); err != nil || s != "hello xbarz" { 82 if s, err := render("{{greet}} x{{foo}}z", vars, eval); err != nil || s != "hello xbarz" {
76 t.Error() 83 t.Error()
77 } 84 }
85 // Test error case
86 if s, err := render("a {{greet text ", vars, eval); err == nil || len(s) != 0 {
87 t.Error()
88 }
78 } 89 }
90
91 func TestEnv(t *testing.T) {
92 e := env(map[string]string{"foo": "bar", "baz": "hello world"})
93 mustHave := []string{"ZS=" + os.Args[0], "ZS_FOO=bar", "ZS_BAZ=hello world", "PATH="}
94 for _, s := range mustHave {
95 found := false
96 for _, v := range e {
97 if strings.HasPrefix(v, s) {
98 found = true
99 break
100 }
101 }
102 if !found {
103 t.Error("Missing", s)
104 }
105 }
106 }
107
108 func TestRun(t *testing.T) {
109 out := bytes.NewBuffer(nil)
110 err := run("some_unbelievable_command_name", []string{}, map[string]string{}, out)
111 if err == nil {
112 t.Error()
113 }
114
115 out = bytes.NewBuffer(nil)
116 err = run(os.Args[0], []string{"-test.run=TestHelperProcess"},
117 map[string]string{"helper": "1", "out": "foo", "err": "bar"}, out)
118 if err != nil {
119 t.Error(err)
120 }
121 if out.String() != "foo\n" {
122 t.Error(out.String())
123 }
124 }
125
126 func TestHelperProcess(*testing.T) {
127 if os.Getenv("ZS_HELPER") != "1" {
128 return
129 }
130 defer os.Exit(0) // TODO check exit code
131 log.Println(os.Getenv("ZS_ERR")) // stderr
132 fmt.Println(os.Getenv("ZS_OUT")) // stdout
133 }