lifecycle/buildpack/layermetadata_test.go

66 lines
1.7 KiB
Go

package buildpack_test
import (
"os"
"testing"
"github.com/apex/log"
"github.com/apex/log/handlers/memory"
"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"
)
var logHandler *memory.Handler
var logger llog.Logger
func TestLayerMetadata(t *testing.T) {
spec.Run(t, "unit-layermetadata", testLayerMetadata, spec.Report(report.Terminal{}))
}
func testLayerMetadata(t *testing.T, when spec.G, it spec.S) {
when("#LayerMetadata", func() {
var (
metadataFile *os.File
)
it.Before(func() {
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())
})
it("decodes file correctly", func() {
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.9", logger)
h.AssertNil(t, err)
h.AssertEq(t, lmf.Cache, true)
h.AssertEq(t, lmf.Build, false)
h.AssertEq(t, lmf.Launch, false)
})
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)
})
})
}