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 } |
