mirror of
				https://github.com/coredns/coredns.git
				synced 2025-11-03 18:53:13 -05:00 
			
		
		
		
	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)
		
			
				
	
	
		
			73 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			73 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"
 |