annotate main_test.go @ 48:d004c7c4ddf4 draft

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