From 6408c502030af0335c218542ee56ab5dd6ec573e Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Sun, 19 Mar 2023 23:05:11 +0530 Subject: [PATCH 01/13] initial changes in layermetadata.go for FIXME Signed-off-by: anushkamittal20 --- buildpack/build.go | 16 ++++++++-------- buildpack/layermetadata.go | 13 ++++++++----- buildpack/layermetadata_test.go | 7 +++++-- buildpack/layers.go | 16 ++++++++-------- 4 files changed, 29 insertions(+), 23 deletions(-) diff --git a/buildpack/build.go b/buildpack/build.go index de5b36d95..c93fdf2cd 100644 --- a/buildpack/build.go +++ b/buildpack/build.go @@ -164,24 +164,24 @@ func runBuildCmd(d BpDescriptor, bpLayersDir, planPath string, inputs BuildInput func (d BpDescriptor) processLayers(layersDir string, logger log.Logger) (map[string]LayerMetadataFile, error) { if api.MustParse(d.WithAPI).LessThan("0.6") { return eachLayer(layersDir, d.WithAPI, func(path, buildpackAPI string) (LayerMetadataFile, error) { - layerMetadataFile, msg, err := DecodeLayerMetadataFile(path+".toml", buildpackAPI) + layerMetadataFile, err := DecodeLayerMetadataFile(path+".toml", buildpackAPI, logger) if err != nil { return LayerMetadataFile{}, err } - if msg != "" { - logger.Warn(msg) - } + // if msg != "" { + // logger.Warn(msg) + // } return layerMetadataFile, nil }) } return eachLayer(layersDir, d.WithAPI, func(path, buildpackAPI string) (LayerMetadataFile, error) { - layerMetadataFile, msg, err := DecodeLayerMetadataFile(path+".toml", buildpackAPI) + layerMetadataFile, err := DecodeLayerMetadataFile(path+".toml", buildpackAPI, logger) if err != nil { return LayerMetadataFile{}, err } - if msg != "" { - return LayerMetadataFile{}, errors.New(msg) - } + // if msg != "" { + // return LayerMetadataFile{}, errors.New(msg) + // } if err := renameLayerDirIfNeeded(layerMetadataFile, path); err != nil { return LayerMetadataFile{}, err } diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index bbebe9027..c13e9da2e 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -6,6 +6,7 @@ import ( "os" "github.com/BurntSushi/toml" + "github.com/buildpacks/lifecycle/log" "github.com/buildpacks/lifecycle/api" ) @@ -34,12 +35,12 @@ func EncodeLayerMetadataFile(lmf LayerMetadataFile, path, buildpackAPI string) e return errors.New("couldn't find an encoder") } -func DecodeLayerMetadataFile(path, buildpackAPI string) (LayerMetadataFile, string, error) { // FIXME: pass the logger and print the warning inside (instead of returning a message) +func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger) (LayerMetadataFile, error) { // FIXME: pass the logger and print the warning inside (instead of returning a message) fh, err := os.Open(path) if os.IsNotExist(err) { - return LayerMetadataFile{}, "", nil + return LayerMetadataFile{}, nil } else if err != nil { - return LayerMetadataFile{}, "", err + return LayerMetadataFile{}, err } defer fh.Close() @@ -47,10 +48,12 @@ func DecodeLayerMetadataFile(path, buildpackAPI string) (LayerMetadataFile, stri for _, decoder := range decoders { if decoder.IsSupported(buildpackAPI) { - return decoder.Decode(path) + lmf, string, err := decoder.Decode(path) + logger.Warnf(string) + return lmf, err } } - return LayerMetadataFile{}, "", errors.New("couldn't find a decoder") + return LayerMetadataFile{}, errors.New("couldn't find a decoder") } type encoderDecoder interface { diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index b30d6bd11..b4e906f3f 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -4,6 +4,7 @@ import ( "os" "testing" + "github.com/buildpacks/lifecycle/log" "github.com/sclevine/spec" "github.com/sclevine/spec/report" @@ -11,6 +12,8 @@ import ( h "github.com/buildpacks/lifecycle/testhelpers" ) +var logger log.Logger + func TestLayerMetadata(t *testing.T) { spec.Run(t, "unit-layermetadata", testLayerMetadata, spec.Report(report.Terminal{})) } @@ -33,9 +36,9 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertNil(t, err) var lmf buildpack.LayerMetadataFile - lmf, s, err := buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9") + lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) h.AssertNil(t, err) - h.AssertEq(t, s, "") + //h.AssertEq(t, s, "") h.AssertEq(t, lmf.Cache, true) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) diff --git a/buildpack/layers.go b/buildpack/layers.go index 56a47b020..883b56031 100644 --- a/buildpack/layers.go +++ b/buildpack/layers.go @@ -148,17 +148,17 @@ func (l *Layer) Path() string { func (l *Layer) Read() (LayerMetadata, error) { tomlPath := l.Path() + ".toml" - layerMetadataFile, msg, err := DecodeLayerMetadataFile(tomlPath, l.api) + layerMetadataFile, err := DecodeLayerMetadataFile(tomlPath, l.api, l.logger) if err != nil { return LayerMetadata{}, err } - if msg != "" { - if api.MustParse(l.api).LessThan("0.6") { - l.logger.Warn(msg) - } else { - return LayerMetadata{}, errors.New(msg) - } - } + // if msg != "" { + // if api.MustParse(l.api).LessThan("0.6") { + // l.logger.Warn(msg) + // } else { + // return LayerMetadata{}, errors.New(msg) + // } + // } var sha string shaBytes, err := os.ReadFile(l.Path() + ".sha") if err != nil && !os.IsNotExist(err) { // if the sha file doesn't exist, an empty sha will be returned From 7e9a2f62927965768a6d71aba719d92f74f88f0a Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Mon, 20 Mar 2023 00:01:09 +0530 Subject: [PATCH 02/13] minor changes, var name and added TODO Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 4 ++-- buildpack/layers.go | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index c13e9da2e..c62827c72 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -48,8 +48,8 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger for _, decoder := range decoders { if decoder.IsSupported(buildpackAPI) { - lmf, string, err := decoder.Decode(path) - logger.Warnf(string) + lmf, str, err := decoder.Decode(path) + logger.Warnf(str) return lmf, err } } diff --git a/buildpack/layers.go b/buildpack/layers.go index 883b56031..c4a008ec1 100644 --- a/buildpack/layers.go +++ b/buildpack/layers.go @@ -159,6 +159,7 @@ func (l *Layer) Read() (LayerMetadata, error) { // return LayerMetadata{}, errors.New(msg) // } // } + // TODO - handle the if else block without the message being returned var sha string shaBytes, err := os.ReadFile(l.Path() + ".sha") if err != nil && !os.IsNotExist(err) { // if the sha file doesn't exist, an empty sha will be returned From 3243b78c9d79ff6997544732ee4eadfe85202e89 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Thu, 23 Mar 2023 15:20:38 +0530 Subject: [PATCH 03/13] Added check for empty string in layermetadata.go Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 4 +++- buildpack/layermetadata_test.go | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index c62827c72..3df7ddb26 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -49,7 +49,9 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger for _, decoder := range decoders { if decoder.IsSupported(buildpackAPI) { lmf, str, err := decoder.Decode(path) - logger.Warnf(str) + if str != "" { + logger.Warn(str) + } return lmf, err } } diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index b4e906f3f..1d4e2a6a7 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -38,10 +38,10 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { var lmf buildpack.LayerMetadataFile lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) h.AssertNil(t, err) - //h.AssertEq(t, s, "") h.AssertEq(t, lmf.Cache, true) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) + // add assertLogEntry : assertLogEntry(t, logHandler, expected) }) }) } From ef1e4d428cc149624b0f9880da7df2662ec83f01 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Tue, 28 Mar 2023 17:50:45 +0530 Subject: [PATCH 04/13] checks in layermetadata_test.go for logger Signed-off-by: anushkamittal20 --- buildpack/layermetadata_test.go | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index 1d4e2a6a7..a847d6605 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -1,10 +1,15 @@ package buildpack_test import ( + "fmt" "os" "testing" - "github.com/buildpacks/lifecycle/log" + "github.com/apex/log" + + "github.com/apex/log/handlers/memory" + + llog "github.com/buildpacks/lifecycle/log" "github.com/sclevine/spec" "github.com/sclevine/spec/report" @@ -12,7 +17,8 @@ import ( h "github.com/buildpacks/lifecycle/testhelpers" ) -var logger log.Logger +var logHandler *memory.Handler +var logger llog.Logger func TestLayerMetadata(t *testing.T) { spec.Run(t, "unit-layermetadata", testLayerMetadata, spec.Report(report.Terminal{})) @@ -27,6 +33,8 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { var err error metadataFile, err = os.CreateTemp("", "test") h.AssertNil(t, err) + logHandler = memory.New() + logger = &log.Logger{Handler: logHandler} }) it.After(func() { os.Remove(metadataFile.Name()) @@ -41,7 +49,19 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertEq(t, lmf.Cache, true) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) - // add assertLogEntry : assertLogEntry(t, logHandler, expected) + }) + it("metadata file in wrong format", func() { + err := os.WriteFile(metadataFile.Name(), []byte("cache = true"), 0400) + h.AssertNil(t, err) + + var lmf buildpack.LayerMetadataFile + lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) + h.AssertNil(t, err) + h.AssertEq(t, lmf.Cache, false) + h.AssertEq(t, lmf.Build, false) + h.AssertEq(t, lmf.Launch, false) + expected := fmt.Sprintf("the launch, cache and build flags should be in the types table of %s", metadataFile.Name()) + h.AssertLogEntry(t, logHandler, expected) }) }) } From b811250576276ccd34c679db31d2e9c36ee023b0 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Thu, 6 Apr 2023 11:42:21 +0530 Subject: [PATCH 05/13] api version check - logic moved Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 6 +++++- buildpack/layers.go | 8 -------- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index 3df7ddb26..08caecc41 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -50,7 +50,11 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger if decoder.IsSupported(buildpackAPI) { lmf, str, err := decoder.Decode(path) if str != "" { - logger.Warn(str) + if api.MustParse(buildpackAPI).LessThan("0.6") { + logger.Warn(str) + } else { + return LayerMetadataFile{}, errors.New(str) + } } return lmf, err } diff --git a/buildpack/layers.go b/buildpack/layers.go index c4a008ec1..6acb53632 100644 --- a/buildpack/layers.go +++ b/buildpack/layers.go @@ -152,14 +152,6 @@ func (l *Layer) Read() (LayerMetadata, error) { if err != nil { return LayerMetadata{}, err } - // if msg != "" { - // if api.MustParse(l.api).LessThan("0.6") { - // l.logger.Warn(msg) - // } else { - // return LayerMetadata{}, errors.New(msg) - // } - // } - // TODO - handle the if else block without the message being returned var sha string shaBytes, err := os.ReadFile(l.Path() + ".sha") if err != nil && !os.IsNotExist(err) { // if the sha file doesn't exist, an empty sha will be returned From a654dd00992df0ae2f1baf72b14b51569b77a59f Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Fri, 14 Apr 2023 16:07:56 +0530 Subject: [PATCH 06/13] ran make format for modified files Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 1 + buildpack/layermetadata_test.go | 3 ++- go.mod | 10 +++++----- go.sum | 10 ++++++++++ 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index 08caecc41..840a104ee 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -6,6 +6,7 @@ import ( "os" "github.com/BurntSushi/toml" + "github.com/buildpacks/lifecycle/log" "github.com/buildpacks/lifecycle/api" diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index a847d6605..b90d75715 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -9,10 +9,11 @@ import ( "github.com/apex/log/handlers/memory" - llog "github.com/buildpacks/lifecycle/log" "github.com/sclevine/spec" "github.com/sclevine/spec/report" + llog "github.com/buildpacks/lifecycle/log" + "github.com/buildpacks/lifecycle/buildpack" h "github.com/buildpacks/lifecycle/testhelpers" ) diff --git a/go.mod b/go.mod index f9aacd630..be6dc7caf 100644 --- a/go.mod +++ b/go.mod @@ -18,7 +18,7 @@ require ( github.com/pkg/errors v0.9.1 github.com/sclevine/spec v1.4.0 golang.org/x/sync v0.1.0 - golang.org/x/sys v0.6.0 + golang.org/x/sys v0.7.0 ) require ( @@ -110,12 +110,12 @@ require ( github.com/vbatts/tar-split v0.11.2 // indirect go.etcd.io/etcd/raft/v3 v3.5.6 // indirect golang.org/x/crypto v0.5.0 // indirect - golang.org/x/mod v0.9.0 // indirect - golang.org/x/net v0.8.0 // indirect + golang.org/x/mod v0.10.0 // indirect + golang.org/x/net v0.9.0 // indirect golang.org/x/oauth2 v0.6.0 // indirect - golang.org/x/text v0.8.0 // indirect + golang.org/x/text v0.9.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.7.0 // indirect + golang.org/x/tools v0.8.0 // indirect google.golang.org/appengine v1.6.7 // indirect google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect google.golang.org/grpc v1.53.0 // indirect diff --git a/go.sum b/go.sum index 5ce9b6d91..4644ecc7f 100644 --- a/go.sum +++ b/go.sum @@ -546,6 +546,8 @@ golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs= golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.10.0 h1:lFO9qtOdlre5W1jxS3r/4szv2/6iXxScdzjoBMXNhYk= +golang.org/x/mod v0.10.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -584,6 +586,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.8.0 h1:Zrh2ngAOFYneWTAIAPethzeaQLuHwhuBkuV6ZiRnUaQ= golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= +golang.org/x/net v0.9.0 h1:aWJ/m6xSmxWBx+V0XRHTlrYrPG56jKsLdTFmsSsCzOM= +golang.org/x/net v0.9.0/go.mod h1:d48xBJpPfHeWQsugry2m+kC02ZBRGRgulfHnEXEuWns= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -667,6 +671,8 @@ golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220825204002-c680a09ffe64/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0 h1:MVltZSvRTcU2ljQOhs94SXPftV6DCNnZViHeQps87pQ= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.7.0 h1:3jlCCIQZPdOYu1h8BkNvLz8Kgwtae2cagcG/VamtZRU= +golang.org/x/sys v0.7.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -677,6 +683,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.8.0 h1:57P1ETyNKtuIjB4SRd15iJxuhj8Gc416Y78H3qgMh68= golang.org/x/text v0.8.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= +golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= +golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -735,6 +743,8 @@ golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= +golang.org/x/tools v0.8.0 h1:vSDcovVPld282ceKgDimkRSC8kpaH1dgyc9UMzlt84Y= +golang.org/x/tools v0.8.0/go.mod h1:JxBZ99ISMI5ViVkT1tr6tdNmXeTrcpVSD3vZ1RsRdN4= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From e6b0054ade8c3b6bd0c70eb103379223f484f792 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Fri, 14 Apr 2023 18:11:56 +0530 Subject: [PATCH 07/13] removed comments Signed-off-by: anushkamittal20 --- buildpack/build.go | 6 ------ 1 file changed, 6 deletions(-) diff --git a/buildpack/build.go b/buildpack/build.go index c93fdf2cd..4db46f317 100644 --- a/buildpack/build.go +++ b/buildpack/build.go @@ -168,9 +168,6 @@ func (d BpDescriptor) processLayers(layersDir string, logger log.Logger) (map[st if err != nil { return LayerMetadataFile{}, err } - // if msg != "" { - // logger.Warn(msg) - // } return layerMetadataFile, nil }) } @@ -179,9 +176,6 @@ func (d BpDescriptor) processLayers(layersDir string, logger log.Logger) (map[st if err != nil { return LayerMetadataFile{}, err } - // if msg != "" { - // return LayerMetadataFile{}, errors.New(msg) - // } if err := renameLayerDirIfNeeded(layerMetadataFile, path); err != nil { return LayerMetadataFile{}, err } From ae7837e1bd31a1f88a079244d88d77895f43cac4 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Tue, 18 Apr 2023 09:58:53 +0530 Subject: [PATCH 08/13] changes to DecodeLayerMetadataFile Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index 840a104ee..3528ea39a 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -51,11 +51,7 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger if decoder.IsSupported(buildpackAPI) { lmf, str, err := decoder.Decode(path) if str != "" { - if api.MustParse(buildpackAPI).LessThan("0.6") { - logger.Warn(str) - } else { - return LayerMetadataFile{}, errors.New(str) - } + logger.Warn(str) } return lmf, err } From 3955d90f7282219d771199b973bb70f6d90390d5 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Tue, 18 Apr 2023 11:02:05 +0530 Subject: [PATCH 09/13] check for version shifted from layers.go to layermetadata.go Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 3 +++ buildpack/layermetadata_test.go | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index 3528ea39a..aa7635c04 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -52,6 +52,9 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger lmf, str, err := decoder.Decode(path) if str != "" { logger.Warn(str) + if !api.MustParse(buildpackAPI).LessThan("0.6") { + return LayerMetadataFile{}, errors.New(str) + } } return lmf, err } diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index b90d75715..fa6ac81a2 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -57,7 +57,6 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { var lmf buildpack.LayerMetadataFile lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) - h.AssertNil(t, err) h.AssertEq(t, lmf.Cache, false) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) From a2ba906f5257c369d0195914475a20e6f31b4659 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Wed, 19 Apr 2023 19:57:20 +0530 Subject: [PATCH 10/13] resolved ineffectual assignment to err Signed-off-by: anushkamittal20 --- buildpack/layermetadata_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index fa6ac81a2..ef0916ee2 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -56,7 +56,7 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertNil(t, err) var lmf buildpack.LayerMetadataFile - lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) + lmf, _ = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) h.AssertEq(t, lmf.Cache, false) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) From 222d64a6abf261e72676d996c245366e85071960 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Wed, 3 May 2023 13:11:26 +0530 Subject: [PATCH 11/13] added new it block, TODO resolve failing test Signed-off-by: anushkamittal20 --- buildpack/layermetadata.go | 5 +++-- buildpack/layermetadata_test.go | 17 ++++++++++++++--- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/buildpack/layermetadata.go b/buildpack/layermetadata.go index aa7635c04..840a104ee 100644 --- a/buildpack/layermetadata.go +++ b/buildpack/layermetadata.go @@ -51,8 +51,9 @@ func DecodeLayerMetadataFile(path string, buildpackAPI string, logger log.Logger if decoder.IsSupported(buildpackAPI) { lmf, str, err := decoder.Decode(path) if str != "" { - logger.Warn(str) - if !api.MustParse(buildpackAPI).LessThan("0.6") { + if api.MustParse(buildpackAPI).LessThan("0.6") { + logger.Warn(str) + } else { return LayerMetadataFile{}, errors.New(str) } } diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index ef0916ee2..a7ec03965 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -51,17 +51,28 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) }) - it("metadata file in wrong format", func() { + it("logs a warning when the metadata file has wrong format (on older apis)", func() { err := os.WriteFile(metadataFile.Name(), []byte("cache = true"), 0400) h.AssertNil(t, err) - var lmf buildpack.LayerMetadataFile - lmf, _ = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) + lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.5", logger) + h.AssertNil(t, err) h.AssertEq(t, lmf.Cache, false) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) expected := fmt.Sprintf("the launch, cache and build flags should be in the types table of %s", metadataFile.Name()) h.AssertLogEntry(t, logHandler, expected) }) + it("returns an error when the metadata file has wrong format", func() { + err := os.WriteFile(metadataFile.Name(), []byte("cache = true"), 0400) + h.AssertNil(t, err) + + var lmf buildpack.LayerMetadataFile + lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.9", logger) + h.AssertNotNil(t, err) + h.AssertEq(t, lmf.Cache, false) + h.AssertEq(t, lmf.Build, false) + h.AssertEq(t, lmf.Launch, false) + }) }) } From b85492dd1522fe999d42f4c32f19329ba1707ab6 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Fri, 19 May 2023 01:29:42 +0530 Subject: [PATCH 12/13] Fix failing test Signed-off-by: anushkamittal20 --- buildpack/layermetadata_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index a7ec03965..cd2fa79aa 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -52,7 +52,7 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertEq(t, lmf.Launch, false) }) it("logs a warning when the metadata file has wrong format (on older apis)", func() { - err := os.WriteFile(metadataFile.Name(), []byte("cache = true"), 0400) + err := os.WriteFile(metadataFile.Name(), []byte("[types]\ncache = true"), 0400) h.AssertNil(t, err) var lmf buildpack.LayerMetadataFile lmf, err = buildpack.DecodeLayerMetadataFile(metadataFile.Name(), "0.5", logger) @@ -60,7 +60,7 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertEq(t, lmf.Cache, false) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) - expected := fmt.Sprintf("the launch, cache and build flags should be in the types table of %s", metadataFile.Name()) + expected := fmt.Sprintf("Types table isn't supported in this buildpack api version. The launch, build and cache flags should be in the top level. Ignoring the values in the types table.") h.AssertLogEntry(t, logHandler, expected) }) it("returns an error when the metadata file has wrong format", func() { From 8ab77229f5c80e5181488cf89626036a3a0bf373 Mon Sep 17 00:00:00 2001 From: anushkamittal20 Date: Mon, 22 May 2023 14:48:25 +0530 Subject: [PATCH 13/13] removed unnecessary fmt Signed-off-by: anushkamittal20 --- buildpack/layermetadata_test.go | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/buildpack/layermetadata_test.go b/buildpack/layermetadata_test.go index cd2fa79aa..2ce6e02ea 100644 --- a/buildpack/layermetadata_test.go +++ b/buildpack/layermetadata_test.go @@ -1,7 +1,6 @@ package buildpack_test import ( - "fmt" "os" "testing" @@ -60,7 +59,7 @@ func testLayerMetadata(t *testing.T, when spec.G, it spec.S) { h.AssertEq(t, lmf.Cache, false) h.AssertEq(t, lmf.Build, false) h.AssertEq(t, lmf.Launch, false) - expected := fmt.Sprintf("Types table isn't supported in this buildpack api version. The launch, build and cache flags should be in the top level. Ignoring the values in the types table.") + expected := "Types table isn't supported in this buildpack api version. The launch, build and cache flags should be in the top level. Ignoring the values in the types table." h.AssertLogEntry(t, logHandler, expected) }) it("returns an error when the metadata file has wrong format", func() {