source: code/trunk/main_test.go@ 55

Last change on this file since 55 was 53, checked in by prologic, 4 years ago

Code cleanup

File size: 2.4 KB
Line 
1package main
2
3import (
4 "io/ioutil"
5 "os"
6 "path/filepath"
7 "testing"
8)
9
10func 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
28func 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
41echo 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
51func TestVars(t *testing.T) {
52 tests := map[string]Vars{
53 `
54foo: bar
55title: Hello, world!
56---
57Some content in markdown
58`: {
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 `
67url: "example.com/foo.html"
68---
69Hello
70`: {
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
92func 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}
Note: See TracBrowser for help on using the repository browser.