Mercurial > yakumo_izuru > aya
annotate 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 |
rev | line source |
---|---|
0 | 1 package main |
2 | |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
3 import ( |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
4 "bytes" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
5 "fmt" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
6 "log" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
7 "os" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
8 "strings" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
9 "testing" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
10 ) |
0 | 11 |
12 func TestSplit2(t *testing.T) { | |
13 if a, b := split2("a:b", ":"); a != "a" || b != "b" { | |
14 t.Fail() | |
15 } | |
16 if a, b := split2(":b", ":"); a != "" || b != "b" { | |
17 t.Fail() | |
18 } | |
19 if a, b := split2("a:", ":"); a != "a" || b != "" { | |
20 t.Fail() | |
21 } | |
22 if a, b := split2(":", ":"); a != "" || b != "" { | |
23 t.Fail() | |
24 } | |
25 if a, b := split2("a", ":"); a != "a" || b != "" { | |
26 t.Fail() | |
27 } | |
28 if a, b := split2("", ":"); a != "" || b != "" { | |
29 t.Fail() | |
30 } | |
31 } | |
32 | |
33 func TestMD(t *testing.T) { | |
34 v, body := md(` | |
35 title: Hello, world! | |
36 keywords: foo, bar, baz | |
37 empty: | |
38 bayan: [:|||:] | |
39 | |
40 this: is a content`) | |
41 if v["title"] != "Hello, world!" { | |
42 t.Error() | |
43 } | |
44 if v["keywords"] != "foo, bar, baz" { | |
45 t.Error() | |
46 } | |
47 if s, ok := v["empty"]; !ok || len(s) != 0 { | |
48 t.Error() | |
49 } | |
50 if v["bayan"] != "[:|||:]" { | |
51 t.Error() | |
52 } | |
53 if body != "this: is a content" { | |
54 t.Error(body) | |
55 } | |
2 | 56 |
57 // Test empty md | |
58 v, body = md("") | |
59 if len(v) != 0 || len(body) != 0 { | |
60 t.Error(v, body) | |
61 } | |
62 | |
63 // Test empty header | |
64 v, body = md("Hello") | |
65 if len(v) != 0 || body != "Hello" { | |
66 t.Error(v, body) | |
67 } | |
0 | 68 } |
69 | |
70 func TestRender(t *testing.T) { | |
1 | 71 eval := func(a []string, vars map[string]string) (string, error) { |
72 return "hello", nil | |
0 | 73 } |
74 vars := map[string]string{"foo": "bar"} | |
75 | |
76 if s, err := render("plain text", vars, eval); err != nil || s != "plain text" { | |
77 t.Error() | |
78 } | |
79 if s, err := render("a {{greet}} text", vars, eval); err != nil || s != "a hello text" { | |
80 t.Error() | |
81 } | |
82 if s, err := render("{{greet}} x{{foo}}z", vars, eval); err != nil || s != "hello xbarz" { | |
83 t.Error() | |
84 } | |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
85 // Test error case |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
86 if s, err := render("a {{greet text ", vars, eval); err == nil || len(s) != 0 { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
87 t.Error() |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
88 } |
0 | 89 } |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
90 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
91 func TestEnv(t *testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
92 e := env(map[string]string{"foo": "bar", "baz": "hello world"}) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
93 mustHave := []string{"ZS=" + os.Args[0], "ZS_FOO=bar", "ZS_BAZ=hello world", "PATH="} |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
94 for _, s := range mustHave { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
95 found := false |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
96 for _, v := range e { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
97 if strings.HasPrefix(v, s) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
98 found = true |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
99 break |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
100 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
101 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
102 if !found { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
103 t.Error("Missing", s) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
104 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
105 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
106 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
107 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
108 func TestRun(t *testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
109 out := bytes.NewBuffer(nil) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
110 err := run("some_unbelievable_command_name", []string{}, map[string]string{}, out) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
111 if err == nil { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
112 t.Error() |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
113 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
114 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
115 out = bytes.NewBuffer(nil) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
116 err = run(os.Args[0], []string{"-test.run=TestHelperProcess"}, |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
117 map[string]string{"helper": "1", "out": "foo", "err": "bar"}, out) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
118 if err != nil { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
119 t.Error(err) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
120 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
121 if out.String() != "foo\n" { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
122 t.Error(out.String()) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
123 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
124 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
125 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
126 func TestHelperProcess(*testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
127 if os.Getenv("ZS_HELPER") != "1" { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
128 return |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
129 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
130 defer os.Exit(0) // TODO check exit code |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
131 log.Println(os.Getenv("ZS_ERR")) // stderr |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
132 fmt.Println(os.Getenv("ZS_OUT")) // stdout |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
133 } |