mirror of
https://github.com/anchore/syft
synced 2024-09-20 06:01:53 +00:00
add file-type mix as golden image
Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
parent
8854d83934
commit
1b7c755536
7 changed files with 13 additions and 143 deletions
7
.github/workflows/validations.yaml
vendored
7
.github/workflows/validations.yaml
vendored
|
@ -99,13 +99,6 @@ jobs:
|
|||
- name: Run unit tests
|
||||
run: make unit
|
||||
|
||||
# TODO: remove me
|
||||
- uses: actions/upload-artifact@v2
|
||||
if: failure()
|
||||
with:
|
||||
name: unit-test-cache
|
||||
path: syft/file/test-fixtures/cache
|
||||
|
||||
- uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: unit-test-results
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package file
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
|
@ -10,8 +11,16 @@ import (
|
|||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestFileMetadataFetch(t *testing.T) {
|
||||
img := imagetest.GetFixtureImage(t, "docker-archive", "image-file-type-mix")
|
||||
var updateImageGoldenFiles = flag.Bool("update-image", false, "update the golden fixture images used for testing")
|
||||
|
||||
func TestFileMetadataCataloger(t *testing.T) {
|
||||
testImage := "image-file-type-mix"
|
||||
|
||||
if *updateImageGoldenFiles {
|
||||
imagetest.UpdateGoldenFixtureImage(t, testImage)
|
||||
}
|
||||
|
||||
img := imagetest.GetGoldenFixtureImage(t, testImage)
|
||||
|
||||
c := NewMetadataCataloger()
|
||||
|
||||
|
|
|
@ -4,7 +4,8 @@ ADD file-1.txt .
|
|||
RUN chmod 644 file-1.txt
|
||||
RUN chown 1:2 file-1.txt
|
||||
RUN ln -s file-1.txt symlink-1
|
||||
# note: hard links may behave inconsistently, this should be a golden image
|
||||
RUN ln file-1.txt hardlink-1
|
||||
RUN mknod char-device-1 c 89 1
|
||||
RUN mknod block-device-1 b 0 1
|
||||
RUN mknod fifo-1 p
|
||||
RUN mknod fifo-1 p
|
||||
|
|
Binary file not shown.
|
@ -1,122 +0,0 @@
|
|||
package source
|
||||
|
||||
import (
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/anchore/stereoscope/pkg/file"
|
||||
"github.com/anchore/stereoscope/pkg/imagetest"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestFileMetadataFetch(t *testing.T) {
|
||||
img := imagetest.GetFixtureImage(t, "docker-archive", "image-file-type-mix")
|
||||
|
||||
tests := []struct {
|
||||
path string
|
||||
exists bool
|
||||
expected FileMetadata
|
||||
err bool
|
||||
}{
|
||||
{
|
||||
path: "/file-1.txt",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0644,
|
||||
Type: "regularFile",
|
||||
UserID: 1,
|
||||
GroupID: 2,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/hardlink-1",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0644,
|
||||
Type: "hardLink",
|
||||
UserID: 1,
|
||||
GroupID: 2,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/symlink-1",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0777 | os.ModeSymlink,
|
||||
Type: "symbolicLink",
|
||||
UserID: 0,
|
||||
GroupID: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/char-device-1",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0644 | os.ModeDevice | os.ModeCharDevice,
|
||||
Type: "characterDevice",
|
||||
UserID: 0,
|
||||
GroupID: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/block-device-1",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0644 | os.ModeDevice,
|
||||
Type: "blockDevice",
|
||||
UserID: 0,
|
||||
GroupID: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/fifo-1",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0644 | os.ModeNamedPipe,
|
||||
Type: "fifoNode",
|
||||
UserID: 0,
|
||||
GroupID: 0,
|
||||
},
|
||||
},
|
||||
{
|
||||
path: "/bin",
|
||||
exists: true,
|
||||
expected: FileMetadata{
|
||||
Mode: 0755 | os.ModeDir,
|
||||
Type: "directory",
|
||||
UserID: 0,
|
||||
GroupID: 0,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.path, func(t *testing.T) {
|
||||
exists, ref, err := img.SquashedTree().File(file.Path(test.path))
|
||||
if err != nil {
|
||||
t.Fatalf("unable to get file: %+v", err)
|
||||
}
|
||||
|
||||
if exists && !test.exists {
|
||||
t.Fatalf("file=%q exists but shouldn't", test.path)
|
||||
} else if !exists && test.exists {
|
||||
t.Fatalf("file=%q does not exist but should", test.path)
|
||||
} else if !exists && !test.exists {
|
||||
return
|
||||
}
|
||||
|
||||
actual, err := fileMetadataByLocation(img, NewLocationFromImage(test.path, *ref, img))
|
||||
if err != nil && !test.err {
|
||||
t.Fatalf("could not fetch (but should have been able to): %+v", err)
|
||||
} else if err == nil && test.err {
|
||||
t.Fatalf("expected fetch error but did not get one")
|
||||
} else if test.err && err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
assert.Equal(t, test.expected, actual, "file metadata mismatch")
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
FROM busybox:latest
|
||||
|
||||
ADD file-1.txt .
|
||||
RUN chmod 644 file-1.txt
|
||||
RUN chown 1:2 file-1.txt
|
||||
RUN ln -s file-1.txt symlink-1
|
||||
RUN ln file-1.txt hardlink-1
|
||||
RUN mknod char-device-1 c 89 1
|
||||
RUN mknod block-device-1 b 0 1
|
||||
RUN mknod fifo-1 p
|
|
@ -1 +0,0 @@
|
|||
file 1!
|
Loading…
Reference in a new issue