diff --git a/artifact/image/layerscanning/testing/fakechainlayer/fake_chain_layer.go b/artifact/image/layerscanning/testing/fakechainlayer/fake_chain_layer.go index f6844639..08829c44 100644 --- a/artifact/image/layerscanning/testing/fakechainlayer/fake_chain_layer.go +++ b/artifact/image/layerscanning/testing/fakechainlayer/fake_chain_layer.go @@ -40,15 +40,18 @@ type FakeChainLayer struct { } // New creates a new FakeChainLayer. -func New(testDir string, index int, diffID digest.Digest, command string, layer image.Layer, files map[string]string) (*FakeChainLayer, error) { - for name, contents := range files { - filename := filepath.Join(testDir, name) - file, err := os.Create(filename) - if err != nil { - return nil, err +func New(testDir string, index int, diffID digest.Digest, command string, layer image.Layer, files map[string]string, filesAlreadyExist bool) (*FakeChainLayer, error) { + if !filesAlreadyExist { + for name, contents := range files { + filename := filepath.Join(testDir, name) + if err := os.MkdirAll(filepath.Dir(filename), 0700); err != nil { + return nil, err + } + + if err := os.WriteFile(filename, []byte(contents), 0600); err != nil { + return nil, err + } } - file.WriteString(contents) - file.Close() } return &FakeChainLayer{ index: index, diff --git a/artifact/image/layerscanning/trace/trace_test.go b/artifact/image/layerscanning/trace/trace_test.go index 10b105b1..1a31d429 100644 --- a/artifact/image/layerscanning/trace/trace_test.go +++ b/artifact/image/layerscanning/trace/trace_test.go @@ -34,7 +34,7 @@ func setupFakeChainLayer(t *testing.T, testDir string, index int, diffID digest. t.Helper() layer := fakelayer.New(diffID, command) - chainLayer, err := fakechainlayer.New(testDir, index, diffID, command, layer, fileContents) + chainLayer, err := fakechainlayer.New(testDir, index, diffID, command, layer, fileContents, false) if err != nil { t.Fatalf("fakechainlayer.New(%d, %q, %q, %v, %v) failed: %v", index, diffID, command, layer, fileContents, err) }