Make readFile return nil when file not found (note) - hugo - [fork] hugo port for 9front
HTML git clone git@git.drkhsh.at/hugo.git
DIR Log
DIR Files
DIR Refs
DIR Submodules
DIR README
DIR LICENSE
---
DIR commit 3c51625c7152abca7e035fae15fc6807ca21cc86
DIR parent dd6d0a6de16c871301d9daf5d749be3989d37526
HTML Author: Bjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Date: Fri, 30 Dec 2022 11:10:49 +0100
Make readFile return nil when file not found (note)
Fixes #9620
Diffstat:
M tpl/os/integration_test.go | 26 ++++++++++++++++++++++++++
M tpl/os/os.go | 7 ++++++-
2 files changed, 32 insertions(+), 1 deletion(-)
---
DIR diff --git a/tpl/os/integration_test.go b/tpl/os/integration_test.go
@@ -49,3 +49,29 @@ START:|{{ range $entry := $entries }}{{ if not $entry.IsDir }}{{ $entry.Name }}|
START:|config.toml|myproject.txt|:END:
`)
}
+
+// Issue 9620
+func TestReadFileNotExists(t *testing.T) {
+ t.Parallel()
+
+ files := `
+-- config.toml --
+-- layouts/index.html --
+{{ $fi := (readFile "doesnotexist") }}
+{{ if $fi }}Failed{{ else }}OK{{ end }}
+
+
+ `
+
+ b := hugolib.NewIntegrationTestBuilder(
+ hugolib.IntegrationTestConfig{
+ T: t,
+ TxtarString: files,
+ NeedsOsFS: true,
+ },
+ ).Build()
+
+ b.AssertFileContent("public/index.html", `
+OK
+`)
+}
DIR diff --git a/tpl/os/os.go b/tpl/os/os.go
@@ -22,6 +22,7 @@ import (
"path/filepath"
"github.com/bep/overlayfs"
+ "github.com/gohugoio/hugo/common/herrors"
"github.com/gohugoio/hugo/deps"
"github.com/spf13/afero"
"github.com/spf13/cast"
@@ -101,7 +102,11 @@ func (ns *Namespace) ReadFile(i any) (string, error) {
s = ns.deps.PathSpec.RelPathify(s)
}
- return readFile(ns.readFileFs, s)
+ s, err = readFile(ns.readFileFs, s)
+ if err != nil && herrors.IsNotExist(err) {
+ return "", nil
+ }
+ return s, err
}
// ReadDir lists the directory contents relative to the configured WorkingDir.