aboutsummaryrefslogtreecommitdiff
path: root/plugin/auto/watcher_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/auto/watcher_test.go')
-rw-r--r--plugin/auto/watcher_test.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/plugin/auto/watcher_test.go b/plugin/auto/watcher_test.go
new file mode 100644
index 000000000..329d8dc85
--- /dev/null
+++ b/plugin/auto/watcher_test.go
@@ -0,0 +1,58 @@
+package auto
+
+import (
+ "io/ioutil"
+ "log"
+ "os"
+ "path"
+ "regexp"
+ "testing"
+)
+
+func TestWatcher(t *testing.T) {
+ log.SetOutput(ioutil.Discard)
+
+ tempdir, err := createFiles()
+ if err != nil {
+ if tempdir != "" {
+ os.RemoveAll(tempdir)
+ }
+ t.Fatal(err)
+ }
+ defer os.RemoveAll(tempdir)
+
+ ldr := loader{
+ directory: tempdir,
+ re: regexp.MustCompile(`db\.(.*)`),
+ template: `${1}`,
+ }
+
+ a := Auto{
+ loader: ldr,
+ Zones: &Zones{},
+ }
+
+ a.Walk()
+
+ // example.org and example.com should exist
+ if x := len(a.Zones.Z["example.org."].All()); x != 4 {
+ t.Fatalf("Expected 4 RRs, got %d", x)
+ }
+ if x := len(a.Zones.Z["example.com."].All()); x != 4 {
+ t.Fatalf("Expected 4 RRs, got %d", x)
+ }
+
+ // Now remove one file, rescan and see if it's gone.
+ if err := os.Remove(path.Join(tempdir, "db.example.com")); err != nil {
+ t.Fatal(err)
+ }
+
+ a.Walk()
+
+ if _, ok := a.Zones.Z["example.com."]; ok {
+ t.Errorf("Expected %q to be gone.", "example.com.")
+ }
+ if _, ok := a.Zones.Z["example.org."]; !ok {
+ t.Errorf("Expected %q to still be there.", "example.org.")
+ }
+}