coredns/test/external_test.go
Nguyen Quang Huy 42cf6606fc Fix error string should not be capitalized (#2608)
From [Golang coding convention](https://github.com/golang/go/wiki/CodeReviewComments#error-strings)

Co-Authored-By: Nguyen Van Trung [trungnvfet@outlook.com](mailto:trungnvfet@outlook.com)
Signed-off-by: Nguyen Quang Huy [huynq0911@gmail.com](mailto:huynq0911@gmail.com)
2019-02-27 08:25:02 -05:00

72 lines
1.5 KiB
Go

package test
import (
"fmt"
"os"
"os/exec"
"strings"
"testing"
)
// Go get external example plugin, compile it into CoreDNS
// and check if it is really there, but running coredns -plugins.
// Dangerous test as it messes with your git tree, maybe use tag?
func testExternalPluginCompile(t *testing.T) {
if err := addExamplePlugin(); err != nil {
t.Fatal(err)
}
defer run(t, gitReset)
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("Plugin dns.example 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 addExamplePlugin() error {
f, err := os.OpenFile("../plugin.cfg", os.O_APPEND|os.O_WRONLY, os.ModeAppend)
if err != nil {
return err
}
defer f.Close()
_, err = f.WriteString(example)
return err
}
var (
goBuild = exec.Command("go", "build")
goGen = exec.Command("go", "generate")
goGet = exec.Command("go", "get", "github.com/coredns/example")
gitReset = exec.Command("git", "checkout", "core/*")
coredns = exec.Command("./coredns", "-plugins")
)
const example = "1001:example:github.com/coredns/example"