summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-23 22:03:25 +0200
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2017-04-23 22:46:01 +0200
commit0e87b18b66d2c8ba9e2abc429630cb03f5b093d6 (patch)
tree49f58317681a67aae9f90def687e069c1f63cc3a
parente98f885b8af27f5473a89d31d0b1f02e61e8a5ec (diff)
hugolib: Fix handling of zero-length files
This was a regression in Hugo 0.20. This commit makes sure that zeron-length files are not rendered to file. Fixes #3355
-rw-r--r--hugolib/site.go4
-rw-r--r--hugolib/site_render.go4
-rw-r--r--hugolib/site_test.go14
-rw-r--r--hugolib/testhelpers_test.go6
4 files changed, 28 insertions, 0 deletions
diff --git a/hugolib/site.go b/hugolib/site.go
index f2ebee4cc..394549c41 100644
--- a/hugolib/site.go
+++ b/hugolib/site.go
@@ -1939,6 +1939,10 @@ func (s *Site) renderAndWritePage(name string, dest string, p *PageOutput, layou
return nil
}
+ if renderBuffer.Len() == 0 {
+ return nil
+ }
+
outBuffer := bp.GetBuffer()
defer bp.PutBuffer(outBuffer)
diff --git a/hugolib/site_render.go b/hugolib/site_render.go
index d5b16975d..a82c93137 100644
--- a/hugolib/site_render.go
+++ b/hugolib/site_render.go
@@ -340,6 +340,10 @@ func (s *Site) renderRobotsTXT() error {
return nil
}
+ if outBuffer.Len() == 0 {
+ return nil
+ }
+
return s.publish("robots.txt", outBuffer)
}
diff --git a/hugolib/site_test.go b/hugolib/site_test.go
index e18456bf9..1df3c81c7 100644
--- a/hugolib/site_test.go
+++ b/hugolib/site_test.go
@@ -376,6 +376,20 @@ func TestNewSiteDefaultLang(t *testing.T) {
require.Equal(t, hugofs.Os, s.Fs.Destination)
}
+// Issue #3355
+func TestShouldNotWriteZeroLengthFilesToDestination(t *testing.T) {
+ cfg, fs := newTestCfg()
+
+ writeSource(t, fs, filepath.Join("content", "simple.html"), "simple")
+ writeSource(t, fs, filepath.Join("layouts", "_default/single.html"), "{{.Content}}")
+ writeSource(t, fs, filepath.Join("layouts", "_default/list.html"), "")
+
+ s := buildSingleSite(t, deps.DepsCfg{Fs: fs, Cfg: cfg}, BuildCfg{})
+ th := testHelper{s.Cfg, s.Fs, t}
+
+ th.assertFileNotExist(filepath.Join("public", "index.html"))
+}
+
// Issue #1176
func TestSectionNaming(t *testing.T) {
t.Parallel()
diff --git a/hugolib/testhelpers_test.go b/hugolib/testhelpers_test.go
index cb529204a..f82399eef 100644
--- a/hugolib/testhelpers_test.go
+++ b/hugolib/testhelpers_test.go
@@ -61,6 +61,12 @@ func (th testHelper) assertFileContentRegexp(filename string, matches ...string)
}
}
+func (th testHelper) assertFileNotExist(filename string) {
+ exists, err := helpers.Exists(filename, th.Fs.Destination)
+ require.NoError(th.T, err)
+ require.False(th.T, exists)
+}
+
func (th testHelper) replaceDefaultContentLanguageValue(value string) string {
defaultInSubDir := th.Cfg.GetBool("defaultContentLanguageInSubDir")
replace := th.Cfg.GetString("defaultContentLanguage") + "/"