aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorGravatar Miek Gieben <miek@miek.nl> 2017-07-29 04:04:12 -0700
committerGravatar GitHub <noreply@github.com> 2017-07-29 04:04:12 -0700
commitea0a7d007620e7c1a99b3a9b198f660e4056f105 (patch)
tree8cbe895b56c394ad85b6f6aef67b88a3772d4e1a /test
parent9b805988f46f1b5688143f0a2d5835cf027c8d28 (diff)
downloadcoredns-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.go72
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"