summaryrefslogtreecommitdiffstats
path: root/tpl/os
diff options
context:
space:
mode:
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2022-12-30 11:10:49 +0100
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>2023-01-04 18:01:26 +0100
commit3c51625c7152abca7e035fae15fc6807ca21cc86 (patch)
tree7dad29284a3facdbbf9d0751434eb29cef8931f4 /tpl/os
parentdd6d0a6de16c871301d9daf5d749be3989d37526 (diff)
Make readFile return nil when file not found (note)
Fixes #9620
Diffstat (limited to 'tpl/os')
-rw-r--r--tpl/os/integration_test.go26
-rw-r--r--tpl/os/os.go7
2 files changed, 32 insertions, 1 deletions
diff --git a/tpl/os/integration_test.go b/tpl/os/integration_test.go
index fe1bb3d6e..d08374f8f 100644
--- 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
+`)
+}
diff --git a/tpl/os/os.go b/tpl/os/os.go
index e7fd05939..4c7089779 100644
--- 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.