diff options
Diffstat (limited to 'test/readme_test.go')
-rw-r--r-- | test/readme_test.go | 35 |
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) + } +} |