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)
This commit is contained in:
parent
9b805988f4
commit
ea0a7d0076
1 changed files with 72 additions and 0 deletions
72
test/external_test.go
Normal file
72
test/external_test.go
Normal file
|
@ -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"
|
Loading…
Add table
Add a link
Reference in a new issue