mirror of
https://github.com/anchore/syft
synced 2024-11-10 06:14:16 +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
|
- name: Run unit tests
|
||||||
run: make unit
|
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
|
- uses: actions/upload-artifact@v2
|
||||||
with:
|
with:
|
||||||
name: unit-test-results
|
name: unit-test-results
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package file
|
package file
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"flag"
|
||||||
"os"
|
"os"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
@ -10,8 +11,16 @@ import (
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestFileMetadataFetch(t *testing.T) {
|
var updateImageGoldenFiles = flag.Bool("update-image", false, "update the golden fixture images used for testing")
|
||||||
img := imagetest.GetFixtureImage(t, "docker-archive", "image-file-type-mix")
|
|
||||||
|
func TestFileMetadataCataloger(t *testing.T) {
|
||||||
|
testImage := "image-file-type-mix"
|
||||||
|
|
||||||
|
if *updateImageGoldenFiles {
|
||||||
|
imagetest.UpdateGoldenFixtureImage(t, testImage)
|
||||||
|
}
|
||||||
|
|
||||||
|
img := imagetest.GetGoldenFixtureImage(t, testImage)
|
||||||
|
|
||||||
c := NewMetadataCataloger()
|
c := NewMetadataCataloger()
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,8 @@ ADD file-1.txt .
|
||||||
RUN chmod 644 file-1.txt
|
RUN chmod 644 file-1.txt
|
||||||
RUN chown 1:2 file-1.txt
|
RUN chown 1:2 file-1.txt
|
||||||
RUN ln -s file-1.txt symlink-1
|
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 ln file-1.txt hardlink-1
|
||||||
RUN mknod char-device-1 c 89 1
|
RUN mknod char-device-1 c 89 1
|
||||||
RUN mknod block-device-1 b 0 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