diff --git a/internal/chart/v3/util/save.go b/internal/chart/v3/util/save.go index f755300ba..f886c6175 100644 --- a/internal/chart/v3/util/save.go +++ b/internal/chart/v3/util/save.go @@ -234,6 +234,9 @@ func writeToTar(out *tar.Writer, name string, body []byte, modTime time.Time) er Size: int64(len(body)), ModTime: modTime, } + if h.ModTime.IsZero() { + h.ModTime = time.Now() + } if err := out.WriteHeader(h); err != nil { return err } diff --git a/internal/chart/v3/util/save_test.go b/internal/chart/v3/util/save_test.go index 93da34470..62625919b 100644 --- a/internal/chart/v3/util/save_test.go +++ b/internal/chart/v3/util/save_test.go @@ -285,7 +285,8 @@ func TestRepeatableSave(t *testing.T) { }, ModTime: modTime, Lock: &chart.Lock{ - Digest: "testdigest", + Digest: "testdigest", + Generated: modTime, }, Files: []*common.File{ {Name: "scheherazade/shahryar.txt", ModTime: modTime, Data: []byte("1,001 Nights")}, @@ -293,7 +294,7 @@ func TestRepeatableSave(t *testing.T) { Schema: []byte("{\n \"title\": \"Values\"\n}"), SchemaModTime: modTime, }, - want: "bcb52ba7b7c2801be84cdc96d395f00749896a4679a7c9deacdfe934d0c49c1b", + want: "5bfea18cc3c8cbc265744bc32bffa9489a4dbe87d6b51b90f4255e4839d35e03", }, { name: "Package 2 files", @@ -305,7 +306,8 @@ func TestRepeatableSave(t *testing.T) { }, ModTime: modTime, Lock: &chart.Lock{ - Digest: "testdigest", + Digest: "testdigest", + Generated: modTime, }, Files: []*common.File{ {Name: "scheherazade/shahryar.txt", ModTime: modTime, Data: []byte("1,001 Nights")}, @@ -314,7 +316,7 @@ func TestRepeatableSave(t *testing.T) { Schema: []byte("{\n \"title\": \"Values\"\n}"), SchemaModTime: modTime, }, - want: "566bb87d0a044828e1e3acc4e9849b2c378eb9156a8662ceb618ea41b279bb10", + want: "a240365c21e0a2f4a57873132a9b686566a612d08bcb3f20c9446bfff005ccce", }, } for _, test := range tests { diff --git a/pkg/chart/v2/util/save.go b/pkg/chart/v2/util/save.go index 632588b68..e66d86991 100644 --- a/pkg/chart/v2/util/save.go +++ b/pkg/chart/v2/util/save.go @@ -246,6 +246,9 @@ func writeToTar(out *tar.Writer, name string, body []byte, modTime time.Time) er Size: int64(len(body)), ModTime: modTime, } + if h.ModTime.IsZero() { + h.ModTime = time.Now() + } if err := out.WriteHeader(h); err != nil { return err } diff --git a/pkg/chart/v2/util/save_test.go b/pkg/chart/v2/util/save_test.go index 5dc36e786..e317d1c09 100644 --- a/pkg/chart/v2/util/save_test.go +++ b/pkg/chart/v2/util/save_test.go @@ -283,13 +283,14 @@ func TestRepeatableSave(t *testing.T) { name: "Package 1 file", chart: &chart.Chart{ Metadata: &chart.Metadata{ - APIVersion: chart.APIVersionV1, + APIVersion: chart.APIVersionV2, Name: "ahab", Version: "1.2.3", }, ModTime: modTime, Lock: &chart.Lock{ - Digest: "testdigest", + Digest: "testdigest", + Generated: modTime, }, Files: []*common.File{ {Name: "scheherazade/shahryar.txt", ModTime: modTime, Data: []byte("1,001 Nights")}, @@ -297,19 +298,20 @@ func TestRepeatableSave(t *testing.T) { Schema: []byte("{\n \"title\": \"Values\"\n}"), SchemaModTime: modTime, }, - want: "5e14a06037e5d4cb277c7b21770639d4e1a337be9ae391460e50653bac5a80ed", + want: "fea2662522317b65c2788ff9e5fc446a9264830038dac618d4449493d99b3257", }, { name: "Package 2 files", chart: &chart.Chart{ Metadata: &chart.Metadata{ - APIVersion: chart.APIVersionV1, + APIVersion: chart.APIVersionV2, Name: "ahab", Version: "1.2.3", }, ModTime: modTime, Lock: &chart.Lock{ - Digest: "testdigest", + Digest: "testdigest", + Generated: modTime, }, Files: []*common.File{ {Name: "scheherazade/shahryar.txt", ModTime: modTime, Data: []byte("1,001 Nights")}, @@ -318,7 +320,7 @@ func TestRepeatableSave(t *testing.T) { Schema: []byte("{\n \"title\": \"Values\"\n}"), SchemaModTime: modTime, }, - want: "6967787da46fbfcc563cad31240e564e14f2602e6f66302129a59a9669622a36", + want: "7ae92b2f274bb51ea3f1969e4187d78cc52b5f6f663b44b8fb3b40bcb8ee46f3", }, } for _, test := range tests {