Mercurial > yakumo_izuru > aya
diff zs_test.go @ 4:05fc24caac37 draft
render uses strings, not bytes; added helpers for env and run
author | zaitsev.serge |
---|---|
date | Fri, 05 Dec 2014 18:09:03 +0000 |
parents | fd79b3a90bef |
children | e0ee0721d34f |
line wrap: on
line diff
--- a/zs_test.go Fri Dec 05 17:26:59 2014 +0000 +++ b/zs_test.go Fri Dec 05 18:09:03 2014 +0000 @@ -1,6 +1,13 @@ package main -import "testing" +import ( + "bytes" + "fmt" + "log" + "os" + "strings" + "testing" +) func TestSplit2(t *testing.T) { if a, b := split2("a:b", ":"); a != "a" || b != "b" { @@ -75,4 +82,52 @@ if s, err := render("{{greet}} x{{foo}}z", vars, eval); err != nil || s != "hello xbarz" { t.Error() } + // Test error case + if s, err := render("a {{greet text ", vars, eval); err == nil || len(s) != 0 { + t.Error() + } } + +func TestEnv(t *testing.T) { + e := env(map[string]string{"foo": "bar", "baz": "hello world"}) + mustHave := []string{"ZS=" + os.Args[0], "ZS_FOO=bar", "ZS_BAZ=hello world", "PATH="} + for _, s := range mustHave { + found := false + for _, v := range e { + if strings.HasPrefix(v, s) { + found = true + break + } + } + if !found { + t.Error("Missing", s) + } + } +} + +func TestRun(t *testing.T) { + out := bytes.NewBuffer(nil) + err := run("some_unbelievable_command_name", []string{}, map[string]string{}, out) + if err == nil { + t.Error() + } + + out = bytes.NewBuffer(nil) + err = run(os.Args[0], []string{"-test.run=TestHelperProcess"}, + map[string]string{"helper": "1", "out": "foo", "err": "bar"}, out) + if err != nil { + t.Error(err) + } + if out.String() != "foo\n" { + t.Error(out.String()) + } +} + +func TestHelperProcess(*testing.T) { + if os.Getenv("ZS_HELPER") != "1" { + return + } + defer os.Exit(0) // TODO check exit code + log.Println(os.Getenv("ZS_ERR")) // stderr + fmt.Println(os.Getenv("ZS_OUT")) // stdout +}