Mercurial > yakumo_izuru > aya
diff main_test.go @ 47:0adadd497d23 draft
Forked project
author | prologic |
---|---|
date | Fri, 17 Sep 2021 23:32:14 +0000 |
parents | |
children | befb74a09424 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main_test.go Fri Sep 17 23:32:14 2021 +0000 @@ -0,0 +1,108 @@ +package main + +import ( + "io/ioutil" + "os" + "path/filepath" + "testing" +) + +func TestRenameExt(t *testing.T) { + if s := renameExt("foo.amber", ".amber", ".html"); s != "foo.html" { + t.Error(s) + } + if s := renameExt("foo.amber", "", ".html"); s != "foo.html" { + t.Error(s) + } + if s := renameExt("foo.amber", ".md", ".html"); s != "foo.amber" { + t.Error(s) + } + if s := renameExt("foo", ".amber", ".html"); s != "foo" { + t.Error(s) + } + if s := renameExt("foo", "", ".html"); s != "foo.html" { + t.Error(s) + } +} + +func TestRun(t *testing.T) { + // external command + if s, err := run(Vars{}, "echo", "hello"); err != nil || s != "hello\n" { + t.Error(s, err) + } + // passing variables to plugins + if s, err := run(Vars{"foo": "bar"}, "sh", "-c", "echo $ZS_FOO"); err != nil || s != "bar\n" { + t.Error(s, err) + } + + // custom plugin overriding external command + os.Mkdir(ZSDIR, 0755) + script := `#!/bin/sh +echo foo +` + ioutil.WriteFile(filepath.Join(ZSDIR, "echo"), []byte(script), 0755) + if s, err := run(Vars{}, "echo", "hello"); err != nil || s != "foo\n" { + t.Error(s, err) + } + os.Remove(filepath.Join(ZSDIR, "echo")) + os.Remove(ZSDIR) +} + +func TestVars(t *testing.T) { + tests := map[string]Vars{ + ` +foo: bar +title: Hello, world! +--- +Some content in markdown +`: Vars{ + "foo": "bar", + "title": "Hello, world!", + "url": "test.html", + "file": "test.md", + "output": filepath.Join(PUBDIR, "test.html"), + "__content": "Some content in markdown\n", + }, + ` +url: "example.com/foo.html" +--- +Hello +`: Vars{ + "url": "example.com/foo.html", + "__content": "Hello\n", + }, + } + + for script, vars := range tests { + ioutil.WriteFile("test.md", []byte(script), 0644) + if v, s, err := getVars("test.md", Vars{"baz": "123"}); err != nil { + t.Error(err) + } else if s != vars["__content"] { + t.Error(s, vars["__content"]) + } else { + for key, value := range vars { + if key != "__content" && v[key] != value { + t.Error(key, v[key], value) + } + } + } + } +} + +func TestRender(t *testing.T) { + vars := map[string]string{"foo": "bar"} + + if s, _ := render("foo bar", vars); s != "foo bar" { + t.Error(s) + } + if s, _ := render("a {{printf short}} text", vars); s != "a short text" { + t.Error(s) + } + if s, _ := render("{{printf Hello}} x{{foo}}z", vars); s != "Hello xbarz" { + t.Error(s) + } + // Test error case + if _, err := render("a {{greet text ", vars); err == nil { + t.Error("error expected") + } +}