Skip to content

Commit 96c8cee

Browse files
committed
Add filename to clusterctl error about bad YAML
1 parent 6a747a3 commit 96c8cee

File tree

2 files changed

+29
-1
lines changed

2 files changed

+29
-1
lines changed

cmd/clusterctl/cmd/version_checker.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func (v *versionChecker) getLatestRelease(ctx context.Context) (*ReleaseInfo, er
157157
// NOTE: local state file is ignored if older than 1d.
158158
vs, err := readStateFile(v.versionFilePath)
159159
if err != nil {
160-
return nil, errors.Wrap(err, "unable to read version state file")
160+
return nil, errors.Wrapf(err, "unable to read version state file %s", v.versionFilePath)
161161
}
162162
if vs != nil {
163163
return &vs.LatestRelease, nil

cmd/clusterctl/cmd/version_checker_test.go

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,6 +401,34 @@ func TestVersionChecker_ReadFromStateFileWithin24Hrs(t *testing.T) {
401401
g.Expect(release.URL).To(Equal("https://github.com/foo/bar/releases/v0.3.10"))
402402
}
403403

404+
func TestVersionChecker_ReadFromCorruptedStateFile(t *testing.T) {
405+
g := NewWithT(t)
406+
407+
ctx := context.Background()
408+
409+
tmpVersionFile, cleanDir := generateTempVersionFilePath(g)
410+
defer cleanDir()
411+
412+
// Create a corrupted YAML state file
413+
corruptedVersionState := []byte(`LastCheck: "2025-02-11T09:56:59.8701-07:00"
414+
LatestRelease:
415+
URL: sigs.k8s.io/cluster-api
416+
Version: 1.9.4
417+
4
418+
`)
419+
g.Expect(os.MkdirAll(filepath.Dir(tmpVersionFile), 0750)).To(Succeed())
420+
g.Expect(os.WriteFile(tmpVersionFile, corruptedVersionState, 0600)).To(Succeed())
421+
422+
versionChecker, err := newVersionChecker(ctx, test.NewFakeVariableClient())
423+
g.Expect(err).ToNot(HaveOccurred())
424+
versionChecker.versionFilePath = tmpVersionFile
425+
426+
// Expect the checker to raise an error containing the state file path
427+
_, err = versionChecker.Check(ctx)
428+
g.Expect(err).To(HaveOccurred())
429+
g.Expect(err.Error()).To(ContainSubstring(versionChecker.versionFilePath))
430+
}
431+
404432
func generateTempVersionFilePath(g *WithT) (string, func()) {
405433
dir, err := os.MkdirTemp("", "clusterctl")
406434
g.Expect(err).ToNot(HaveOccurred())

0 commit comments

Comments
 (0)