Add query by MIME type to source.FileResolver (#529)

* add query by MIME type to source.FileResolver

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>

* pull in stereoscope MIME type feature

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>

* fix tests

Signed-off-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
Alex Goodman
2021-10-05 20:50:53 -04:00
committed by GitHub
parent ba1cd8d753
commit 9189ed68df
18 changed files with 284 additions and 68 deletions
+31 -1
View File
@@ -7,6 +7,8 @@ import (
"strings"
"testing"
"github.com/scylladb/go-set/strset"
"github.com/anchore/stereoscope/pkg/file"
"github.com/stretchr/testify/assert"
"github.com/wagoodman/go-progress"
@@ -303,7 +305,7 @@ func Test_directoryResolver_index(t *testing.T) {
if assert.NoError(t, err) {
return
}
assert.Equal(t, info, r.infos[ref.ID()])
assert.Equal(t, info, r.metadata[ref.ID()])
})
}
}
@@ -429,3 +431,31 @@ func Test_indexAllRoots(t *testing.T) {
})
}
}
func Test_directoryResolver_FilesByMIMEType(t *testing.T) {
tests := []struct {
fixturePath string
mimeType string
expectedPaths *strset.Set
}{
{
fixturePath: "./test-fixtures/image-simple",
mimeType: "text/plain",
expectedPaths: strset.New("test-fixtures/image-simple/file-1.txt", "test-fixtures/image-simple/file-2.txt", "test-fixtures/image-simple/target/really/nested/file-3.txt", "test-fixtures/image-simple/Dockerfile"),
},
}
for _, test := range tests {
t.Run(test.fixturePath, func(t *testing.T) {
resolver, err := newDirectoryResolver(test.fixturePath)
assert.NoError(t, err)
locations, err := resolver.FilesByMIMEType(test.mimeType)
assert.NoError(t, err)
assert.Equal(t, test.expectedPaths.Size(), len(locations))
for _, l := range locations {
assert.True(t, test.expectedPaths.Has(l.RealPath), "does not have path %q", l.RealPath)
}
})
}
}