Skip to content

Commit

Permalink
hugolib: Fix handling of zero-length files
Browse files Browse the repository at this point in the history
This was a regression in Hugo 0.20. This commit makes sure that zeron-length files are not rendered to file.

Fixes #3355
  • Loading branch information
bep committed Apr 23, 2017
1 parent e98f885 commit 0e87b18
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 0 deletions.
4 changes: 4 additions & 0 deletions hugolib/site.go
Expand Up @@ -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)

Expand Down
4 changes: 4 additions & 0 deletions hugolib/site_render.go
Expand Up @@ -340,6 +340,10 @@ func (s *Site) renderRobotsTXT() error {
return nil
}

if outBuffer.Len() == 0 {
return nil
}

return s.publish("robots.txt", outBuffer)
}

Expand Down
14 changes: 14 additions & 0 deletions hugolib/site_test.go
Expand Up @@ -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()
Expand Down
6 changes: 6 additions & 0 deletions hugolib/testhelpers_test.go
Expand Up @@ -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") + "/"
Expand Down

0 comments on commit 0e87b18

Please sign in to comment.