Merge pull request #32290 from mahesh-sadupalli/fix/files-lines-empty-panic

fix(engine): prevent Files.Lines panic on empty file
This commit is contained in:
Terry Howe
2026-07-16 03:27:58 -06:00
committed by GitHub
2 changed files with 31 additions and 1 deletions

View File

@@ -154,7 +154,7 @@ func (f files) AsSecrets() string {
// {{ range .Files.Lines "foo/bar.html" }}
// {{ . }}{{ end }}
func (f files) Lines(path string) []string {
if f == nil || f[path] == nil {
if f == nil || len(f[path]) == 0 {
return []string{}
}
s := string(f[path])

View File

@@ -30,6 +30,8 @@ var cases = []struct {
{"story/author.txt", "Joseph Conrad"},
{"multiline/test.txt", "bar\nfoo\n"},
{"multiline/test_with_blank_lines.txt", "bar\nfoo\n\n\n"},
{"empty/empty.txt", ""},
{"empty/newline_only.txt", "\n"},
}
func getTestFiles() files {
@@ -109,3 +111,31 @@ func TestBlankLines(t *testing.T) {
as.Equal("bar", out[0])
as.Empty(out[3])
}
func TestLinesEmptyFile(t *testing.T) {
as := assert.New(t)
f := getTestFiles()
out := f.Lines("empty/empty.txt")
as.Empty(out)
}
func TestLinesNewlineOnlyFile(t *testing.T) {
as := assert.New(t)
f := getTestFiles()
out := f.Lines("empty/newline_only.txt")
as.Len(out, 1)
as.Empty(out[0])
}
func TestLinesMissingFile(t *testing.T) {
as := assert.New(t)
f := getTestFiles()
out := f.Lines("nonexistent.txt")
as.Empty(out)
}