diff --git a/hugolib/content_directory_test.go b/hugolib/content_directory_test.go new file mode 100644 index 000000000..8b8d7c4f6 --- /dev/null +++ b/hugolib/content_directory_test.go @@ -0,0 +1,25 @@ +package hugolib + +import ( + "testing" +) + +func TestIgnoreDotFiles(t *testing.T) { + tests := []struct { + path string + ignore bool + } { + {"barfoo.md", false}, + {"foobar/barfoo.md", false}, + {"foobar/.barfoo.md", true}, + {".barfoo.md", true}, + {".md", true}, + {"", true}, + } + + for _, test := range tests { + if ignored := ignoreDotFile(test.path); test.ignore != ignored { + t.Errorf("File not ignored. Expected: %t, got: %t", test.ignore, ignored) + } + } +} diff --git a/hugolib/path_seperators_test.go b/hugolib/path_seperators_test.go index f13eea1ef..9e112f82d 100644 --- a/hugolib/path_seperators_test.go +++ b/hugolib/path_seperators_test.go @@ -23,10 +23,10 @@ func TestDegenerateMissingFolderInPageFilename(t *testing.T) { } func TestNewPageWithFilePath(t *testing.T) { - toCheck := []struct{ - input string + toCheck := []struct { + input string section string - layout string + layout string }{ {filepath.Join("sub", "foobar.html"), "sub", "sub/single.html"}, {filepath.Join("content", "sub", "foobar.html"), "sub", "sub/single.html"}, @@ -47,5 +47,3 @@ func TestNewPageWithFilePath(t *testing.T) { } } } - - diff --git a/hugolib/path_seperators_windows_test.go b/hugolib/path_seperators_windows_test.go index 85b97222b..c6df7f61e 100644 --- a/hugolib/path_seperators_windows_test.go +++ b/hugolib/path_seperators_windows_test.go @@ -7,7 +7,7 @@ import ( func TestTemplatePathSeperator(t *testing.T) { config := Config{ LayoutDir: "c:\\a\\windows\\path\\layout", - Path: "c:\\a\\windows\\path", + Path: "c:\\a\\windows\\path", } s := &Site{Config: config} if name := s.generateTemplateNameFrom("c:\\a\\windows\\path\\layout\\sub1\\index.html"); name != "sub1/index.html" { diff --git a/hugolib/site.go b/hugolib/site.go index 770a14fc1..ef23632e1 100644 --- a/hugolib/site.go +++ b/hugolib/site.go @@ -106,7 +106,9 @@ func (site *Site) Render() (err error) { site.timerStep("render shortcodes") site.AbsUrlify() site.timerStep("absolute URLify") - site.RenderIndexes() + if err = site.RenderIndexes(); err != nil { + return + } site.RenderIndexesIndexes() site.timerStep("render and write indexes") site.RenderLists() @@ -199,12 +201,15 @@ func (s *Site) initialize() { site.Directories = append(site.Directories, path) return nil } else { + if ignoreDotFile(path) { + return nil + } site.Files = append(site.Files, path) return nil } } - filepath.Walk(s.Config.GetAbsPath(s.Config.ContentDir), walker) + filepath.Walk(s.absContentDir(), walker) s.Info = SiteInfo{ BaseUrl: template.URL(s.Config.BaseUrl), @@ -216,6 +221,10 @@ func (s *Site) initialize() { s.Shortcodes = make(map[string]ShortcodeFunc) } +func ignoreDotFile(path string) bool { + return filepath.Base(path)[0] == '.' +} + func (s *Site) absLayoutDir() string { return s.Config.GetAbsPath(s.Config.LayoutDir) }