Mercurial > yakumo_izuru > aya
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 } |