Mercurial > yakumo_izuru > aya
annotate zs_test.go @ 30:526ba3c717ba draft
added check for fs walk errors
author | zaitsev.serge |
---|---|
date | Sun, 30 Aug 2015 21:16:51 +0000 |
parents | 40f55059fbfa |
children | e3c902a7380d |
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" |
17 | 6 "io/ioutil" |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
7 "log" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
8 "os" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
9 "strings" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
10 "testing" |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
11 ) |
0 | 12 |
13 func TestSplit2(t *testing.T) { | |
14 if a, b := split2("a:b", ":"); a != "a" || b != "b" { | |
15 t.Fail() | |
16 } | |
17 if a, b := split2(":b", ":"); a != "" || b != "b" { | |
18 t.Fail() | |
19 } | |
20 if a, b := split2("a:", ":"); a != "a" || b != "" { | |
21 t.Fail() | |
22 } | |
23 if a, b := split2(":", ":"); a != "" || b != "" { | |
24 t.Fail() | |
25 } | |
26 if a, b := split2("a", ":"); a != "a" || b != "" { | |
27 t.Fail() | |
28 } | |
29 if a, b := split2("", ":"); a != "" || b != "" { | |
30 t.Fail() | |
31 } | |
32 } | |
33 | |
17 | 34 func tmpfile(path, s string) string { |
35 ioutil.WriteFile(path, []byte(s), 0644) | |
36 return path | |
37 } | |
38 | |
0 | 39 func TestMD(t *testing.T) { |
17 | 40 defer os.Remove("foo.md") |
41 v, body, _ := md(tmpfile("foo.md", ` | |
0 | 42 title: Hello, world! |
43 keywords: foo, bar, baz | |
44 empty: | |
45 bayan: [:|||:] | |
46 | |
19
802b96e67bae
added global variables, added default date for markdown
zaitsev.serge
parents:
18
diff
changeset
|
47 this: is a content`), Vars{}) |
0 | 48 if v["title"] != "Hello, world!" { |
49 t.Error() | |
50 } | |
51 if v["keywords"] != "foo, bar, baz" { | |
52 t.Error() | |
53 } | |
54 if s, ok := v["empty"]; !ok || len(s) != 0 { | |
55 t.Error() | |
56 } | |
57 if v["bayan"] != "[:|||:]" { | |
58 t.Error() | |
59 } | |
60 if body != "this: is a content" { | |
61 t.Error(body) | |
62 } | |
2 | 63 |
64 // Test empty md | |
19
802b96e67bae
added global variables, added default date for markdown
zaitsev.serge
parents:
18
diff
changeset
|
65 v, body, _ = md(tmpfile("foo.md", ""), Vars{}) |
802b96e67bae
added global variables, added default date for markdown
zaitsev.serge
parents:
18
diff
changeset
|
66 if v["url"] != "foo.html" || len(body) != 0 { |
2 | 67 t.Error(v, body) |
68 } | |
69 | |
70 // Test empty header | |
19
802b96e67bae
added global variables, added default date for markdown
zaitsev.serge
parents:
18
diff
changeset
|
71 v, body, _ = md(tmpfile("foo.md", "Hello"), Vars{}) |
802b96e67bae
added global variables, added default date for markdown
zaitsev.serge
parents:
18
diff
changeset
|
72 if v["url"] != "foo.html" || body != "Hello" { |
2 | 73 t.Error(v, body) |
74 } | |
0 | 75 } |
76 | |
77 func TestRender(t *testing.T) { | |
18 | 78 vars := map[string]string{"foo": "bar"} |
23
40f55059fbfa
fixed output file names in html pages, fixed amber function bindings, replaced print command with build, fixed plugin functions, implemented zs and exec functions
zaitsev.serge
parents:
19
diff
changeset
|
79 funcs := Funcs{ |
18 | 80 "greet": func(s ...string) string { |
81 if len(s) == 0 { | |
82 return "hello" | |
83 } else { | |
84 return "hello " + strings.Join(s, " ") | |
85 } | |
86 }, | |
0 | 87 } |
88 | |
18 | 89 if s, err := render("plain text", funcs, vars); err != nil || s != "plain text" { |
90 t.Error(s, err) | |
0 | 91 } |
18 | 92 if s, err := render("a {{greet}} text", funcs, vars); err != nil || s != "a hello text" { |
93 t.Error(s, err) | |
0 | 94 } |
18 | 95 if s, err := render("{{greet}} x{{foo}}z", funcs, vars); err != nil || s != "hello xbarz" { |
96 t.Error(s, err) | |
0 | 97 } |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
98 // Test error case |
18 | 99 if s, err := render("a {{greet text ", funcs, vars); err == nil || len(s) != 0 { |
100 t.Error(s, err) | |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
101 } |
0 | 102 } |
4
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
103 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
104 func TestEnv(t *testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
105 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
|
106 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
|
107 for _, s := range mustHave { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
108 found := false |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
109 for _, v := range e { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
110 if strings.HasPrefix(v, s) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
111 found = true |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
112 break |
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 if !found { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
116 t.Error("Missing", s) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
117 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
118 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
119 } |
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 func TestRun(t *testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
122 out := bytes.NewBuffer(nil) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
123 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
|
124 if err == nil { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
125 t.Error() |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
126 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
127 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
128 out = bytes.NewBuffer(nil) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
129 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
|
130 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
|
131 if err != nil { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
132 t.Error(err) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
133 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
134 if out.String() != "foo\n" { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
135 t.Error(out.String()) |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
136 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
137 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
138 |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
139 func TestHelperProcess(*testing.T) { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
140 if os.Getenv("ZS_HELPER") != "1" { |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
141 return |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
142 } |
05fc24caac37
render uses strings, not bytes; added helpers for env and run
zaitsev.serge
parents:
2
diff
changeset
|
143 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
|
144 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
|
145 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
|
146 } |