Mercurial > yakumo_izuru > aya
comparison main_test.go @ 47:0adadd497d23 draft
Forked project
author | prologic |
---|---|
date | Fri, 17 Sep 2021 23:32:14 +0000 |
parents | |
children | befb74a09424 |
comparison
equal
deleted
inserted
replaced
46:afb3280aaf28 | 47:0adadd497d23 |
---|---|
1 package main | |
2 | |
3 import ( | |
4 "io/ioutil" | |
5 "os" | |
6 "path/filepath" | |
7 "testing" | |
8 ) | |
9 | |
10 func TestRenameExt(t *testing.T) { | |
11 if s := renameExt("foo.amber", ".amber", ".html"); s != "foo.html" { | |
12 t.Error(s) | |
13 } | |
14 if s := renameExt("foo.amber", "", ".html"); s != "foo.html" { | |
15 t.Error(s) | |
16 } | |
17 if s := renameExt("foo.amber", ".md", ".html"); s != "foo.amber" { | |
18 t.Error(s) | |
19 } | |
20 if s := renameExt("foo", ".amber", ".html"); s != "foo" { | |
21 t.Error(s) | |
22 } | |
23 if s := renameExt("foo", "", ".html"); s != "foo.html" { | |
24 t.Error(s) | |
25 } | |
26 } | |
27 | |
28 func TestRun(t *testing.T) { | |
29 // external command | |
30 if s, err := run(Vars{}, "echo", "hello"); err != nil || s != "hello\n" { | |
31 t.Error(s, err) | |
32 } | |
33 // passing variables to plugins | |
34 if s, err := run(Vars{"foo": "bar"}, "sh", "-c", "echo $ZS_FOO"); err != nil || s != "bar\n" { | |
35 t.Error(s, err) | |
36 } | |
37 | |
38 // custom plugin overriding external command | |
39 os.Mkdir(ZSDIR, 0755) | |
40 script := `#!/bin/sh | |
41 echo foo | |
42 ` | |
43 ioutil.WriteFile(filepath.Join(ZSDIR, "echo"), []byte(script), 0755) | |
44 if s, err := run(Vars{}, "echo", "hello"); err != nil || s != "foo\n" { | |
45 t.Error(s, err) | |
46 } | |
47 os.Remove(filepath.Join(ZSDIR, "echo")) | |
48 os.Remove(ZSDIR) | |
49 } | |
50 | |
51 func TestVars(t *testing.T) { | |
52 tests := map[string]Vars{ | |
53 ` | |
54 foo: bar | |
55 title: Hello, world! | |
56 --- | |
57 Some content in markdown | |
58 `: Vars{ | |
59 "foo": "bar", | |
60 "title": "Hello, world!", | |
61 "url": "test.html", | |
62 "file": "test.md", | |
63 "output": filepath.Join(PUBDIR, "test.html"), | |
64 "__content": "Some content in markdown\n", | |
65 }, | |
66 ` | |
67 url: "example.com/foo.html" | |
68 --- | |
69 Hello | |
70 `: Vars{ | |
71 "url": "example.com/foo.html", | |
72 "__content": "Hello\n", | |
73 }, | |
74 } | |
75 | |
76 for script, vars := range tests { | |
77 ioutil.WriteFile("test.md", []byte(script), 0644) | |
78 if v, s, err := getVars("test.md", Vars{"baz": "123"}); err != nil { | |
79 t.Error(err) | |
80 } else if s != vars["__content"] { | |
81 t.Error(s, vars["__content"]) | |
82 } else { | |
83 for key, value := range vars { | |
84 if key != "__content" && v[key] != value { | |
85 t.Error(key, v[key], value) | |
86 } | |
87 } | |
88 } | |
89 } | |
90 } | |
91 | |
92 func TestRender(t *testing.T) { | |
93 vars := map[string]string{"foo": "bar"} | |
94 | |
95 if s, _ := render("foo bar", vars); s != "foo bar" { | |
96 t.Error(s) | |
97 } | |
98 if s, _ := render("a {{printf short}} text", vars); s != "a short text" { | |
99 t.Error(s) | |
100 } | |
101 if s, _ := render("{{printf Hello}} x{{foo}}z", vars); s != "Hello xbarz" { | |
102 t.Error(s) | |
103 } | |
104 // Test error case | |
105 if _, err := render("a {{greet text ", vars); err == nil { | |
106 t.Error("error expected") | |
107 } | |
108 } |