diff options
author | 2017-07-29 04:04:12 -0700 | |
---|---|---|
committer | 2017-07-29 04:04:12 -0700 | |
commit | ea0a7d007620e7c1a99b3a9b198f660e4056f105 (patch) | |
tree | 8cbe895b56c394ad85b6f6aef67b88a3772d4e1a /test | |
parent | 9b805988f46f1b5688143f0a2d5835cf027c8d28 (diff) | |
download | coredns-ea0a7d007620e7c1a99b3a9b198f660e4056f105.tar.gz coredns-ea0a7d007620e7c1a99b3a9b198f660e4056f105.tar.zst coredns-ea0a7d007620e7c1a99b3a9b198f660e4056f105.zip |
test: add external compilation test (#803)
Pull down example middleware and compile it in (this should compile)
then check if dns.example is included in the list of plugins
(middlewares)
Diffstat (limited to 'test')
-rw-r--r-- | test/external_test.go | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/test/external_test.go b/test/external_test.go new file mode 100644 index 000000000..e5827a49c --- /dev/null +++ b/test/external_test.go @@ -0,0 +1,72 @@ +package test + +import ( + "fmt" + "os" + "os/exec" + "strings" + "testing" +) + +// Go get external example middleware, compile it into CoreDNS +// and check if it is really there, but running coredns -plugins. + +func TestExternalMiddlewareCompile(t *testing.T) { + if err := addExampleMiddleware(); err != nil { + t.Fatal(err) + } + + if _, err := run(t, goGet); err != nil { + t.Fatal(err) + } + + if _, err := run(t, goGen); err != nil { + t.Fatal(err) + } + + if _, err := run(t, goBuild); err != nil { + t.Fatal(err) + } + + out, err := run(t, coredns) + if err != nil { + t.Fatal(err) + } + + if !strings.Contains(string(out), "dns.example") { + t.Fatal("dns.example middleware should be there") + } +} + +func run(t *testing.T, c *exec.Cmd) ([]byte, error) { + c.Dir = ".." + out, err := c.Output() + if err != nil { + return nil, fmt.Errorf("run: failed to run %s %s: %q", c.Args[0], c.Args[1], err) + } + return out, nil + +} + +func addExampleMiddleware() error { + f, err := os.OpenFile("../middleware.cfg", os.O_APPEND|os.O_WRONLY, os.ModeAppend) + if err != nil { + return err + } + defer f.Close() + + _, err = f.WriteString(example) + if err != nil { + return err + } + return nil +} + +var ( + goBuild = exec.Command("go", "build") + goGen = exec.Command("go", "generate") + goGet = exec.Command("go", "get", "github.com/coredns/example") + coredns = exec.Command("./coredns", "-plugins") +) + +const example = "1001:example:github.com/coredns/example" |