fix: apply TrimSuffix to pkg/cmd/template.go and fix test to actually verify the regression

Signed-off-by: Cloud-Architect-Emma <emmanuela_prince@yahoo.com>
pull/32170/head
Cloud-Architect-Emma 3 months ago
parent b9b535c218
commit e95221e4b1

@ -1299,33 +1299,30 @@ func TestInstallRelease_WaitOptionsPassedDownstream(t *testing.T) {
} }
func TestWriteToFileNoTrailingNewline(t *testing.T) { func TestWriteToFileNoTrailingNewline(t *testing.T) {
// Use a template whose output already ends with \n to expose the regression.
// Without the fix, writeToFile appends another \n producing double newline at EOF.
templates := []*common.File{
{Name: "templates/test.yaml", Data: []byte("key: value\n")},
}
chart := buildChartWithTemplates(templates)
instAction := installAction(t) instAction := installAction(t)
vals := map[string]any{} vals := map[string]any{}
dir := t.TempDir() dir := t.TempDir()
instAction.OutputDir = dir instAction.OutputDir = dir
_, err := instAction.Run(chart, vals)
_, err := instAction.Run(buildChart(withSampleTemplates()), vals)
if err != nil { if err != nil {
t.Fatalf("Failed install: %s", err) t.Fatalf("Failed install: %s", err)
} }
path := filepath.Join(dir, "hello/templates/test.yaml")
// Each output file should end with exactly one newline (no double newline).
for _, name := range []string{
"hello/templates/goodbye",
"hello/templates/with-partials",
} {
path := filepath.Join(dir, name)
data, err := os.ReadFile(path) data, err := os.ReadFile(path)
if err != nil { if err != nil {
t.Fatalf("Failed to read %s: %s", path, err) t.Fatalf("Failed to read output file: %s", err)
}
content := string(data)
if strings.HasSuffix(content, "\n\n") {
t.Errorf("file %s ends with double newline, expected single newline", name)
} }
if !strings.HasSuffix(content, "\n") { c := string(data)
t.Errorf("file %s does not end with a newline", name) if strings.HasSuffix(c, "\n\n") {
t.Errorf("output file ends with double newline (regression): got %q", c)
} }
if !strings.HasSuffix(c, "\n") {
t.Errorf("output file does not end with newline: got %q", c)
} }
} }

@ -249,7 +249,7 @@ func writeToFile(outputDir string, name string, data string, appendData bool) er
defer f.Close() defer f.Close()
_, err = fmt.Fprintf(f, "---\n# Source: %s\n%s\n", name, data) _, err = fmt.Fprintf(f, "---\n# Source: %s\n%s\n", name, strings.TrimSuffix(data, "\n"))
if err != nil { if err != nil {
return err return err

Loading…
Cancel
Save