From d3dae8d77f8be0800dc261c7982c53a34c9fb744 Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Sun, 6 Nov 2016 19:37:43 +0000 Subject: middleware/auto: handle non-existent directory (#385) Don't panic on a non-existent directory. Add test for it as well. Fixes #384 --- middleware/auto/walk.go | 2 +- middleware/auto/walk_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/middleware/auto/walk.go b/middleware/auto/walk.go index 8c3370e16..3f7ebb19f 100644 --- a/middleware/auto/walk.go +++ b/middleware/auto/walk.go @@ -23,7 +23,7 @@ func (a Auto) Walk() error { } filepath.Walk(a.loader.directory, func(path string, info os.FileInfo, err error) error { - if info.IsDir() { + if info == nil || info.IsDir() { return nil } diff --git a/middleware/auto/walk_test.go b/middleware/auto/walk_test.go index f15548dba..29b9dbb55 100644 --- a/middleware/auto/walk_test.go +++ b/middleware/auto/walk_test.go @@ -52,6 +52,25 @@ func TestWalk(t *testing.T) { } } +func TestWalkNonExistent(t *testing.T) { + log.SetOutput(ioutil.Discard) + + nonExistingDir := "highly_unlikely_to_exist_dir" + + ldr := loader{ + directory: nonExistingDir, + re: regexp.MustCompile(`db\.(.*)`), + template: `${1}`, + } + + a := Auto{ + loader: ldr, + Zones: &Zones{}, + } + + a.Walk() +} + func createFiles() (string, error) { dir, err := ioutil.TempDir(os.TempDir(), "coredns") if err != nil { -- cgit v1.2.3