@@ -401,6 +401,34 @@ func TestVersionChecker_ReadFromStateFileWithin24Hrs(t *testing.T) {
401
401
g .Expect (release .URL ).To (Equal ("https://github.com/foo/bar/releases/v0.3.10" ))
402
402
}
403
403
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
+
404
432
func generateTempVersionFilePath (g * WithT ) (string , func ()) {
405
433
dir , err := os .MkdirTemp ("" , "clusterctl" )
406
434
g .Expect (err ).ToNot (HaveOccurred ())
0 commit comments