aboutsummaryrefslogtreecommitdiff
path: root/test/readme_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'test/readme_test.go')
-rw-r--r--test/readme_test.go35
1 files changed, 34 insertions, 1 deletions
diff --git a/test/readme_test.go b/test/readme_test.go
index dcbb56619..f8ae0e346 100644
--- a/test/readme_test.go
+++ b/test/readme_test.go
@@ -14,7 +14,25 @@ import (
"github.com/mholt/caddy"
)
-// TestReadme parses all README.md's of the plugins and checks if every example Corefile
+// As we use the filesystem as-is, these files need to exist ON DISK for the readme test to work. This is especially
+// useful for the *file* and *dnssec* plugins as their Corefiles are now tested as well. We create files in the
+// current dir for all these, meaning the example READMEs MUST use relative path in their READMEs.
+var contents = map[string]string{
+ "Kexample.org.+013+45330.key": examplePub,
+ "Kexample.org.+013+45330.private": examplePriv,
+ "example.org.signed": exampleOrg, // not signed, but does not matter for this test.
+}
+
+const (
+ examplePub = `example.org. IN DNSKEY 256 3 13 eNMYFZYb6e0oJOV47IPo5f/UHy7wY9aBebotvcKakIYLyyGscBmXJQhbKLt/LhrMNDE2Q96hQnI5PdTBeOLzhQ==
+`
+ examplePriv = `Private-key-format: v1.3
+Algorithm: 13 (ECDSAP256SHA256)
+PrivateKey: f03VplaIEA+KHI9uizlemUSbUJH86hPBPjmcUninPoM=
+`
+)
+
+// TestReadme parses all README.mds of the plugins and checks if every example Corefile
// actually works. Each corefile snippet is only used if the language is set to 'corefile':
//
// ~~~ corefile
@@ -27,6 +45,9 @@ func TestReadme(t *testing.T) {
caddy.Quiet = true
dnsserver.Quiet = true
+ create(contents)
+ defer remove(contents)
+
log.SetOutput(ioutil.Discard)
middle := filepath.Join("..", "plugin")
@@ -99,3 +120,15 @@ func corefileFromReadme(readme string) ([]*Input, error) {
}
return input, nil
}
+
+func create(c map[string]string) {
+ for name, content := range c {
+ ioutil.WriteFile(name, []byte(content), 0644)
+ }
+}
+
+func remove(c map[string]string) {
+ for name := range c {
+ os.Remove(name)
+ }
+}