ignore target link files based on path (#667)

* ignore target link files based on path

log when files are actually indexed

add test for sym link resolution

golang test nits

Signed-off-by: Jonas Galvão Xavier <jonas.agx@gmail.com>

* nil catalog should act like an empty catalog

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

* remove dir path filtering in favor of file type filtering

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

* split out addPathToIndex into specialized functions

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

* add test for nul catalog enumeration

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

* conditionally discover MIME types for file based on file resolver index

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

* change logging around cataloging

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

* add tests to cover possible infinite symlink loop for resolver

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

Co-authored-by: Alex Goodman <alex.goodman@anchore.com>
This commit is contained in:
Jonas Galvão Xavier
2021-12-13 20:49:11 -05:00
committed by GitHub
co-authored by Alex Goodman
parent 3a10ca7e6a
commit d3804d1a82
23 changed files with 623 additions and 225 deletions
+54
View File
@@ -0,0 +1,54 @@
package source
import (
"os"
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func Test_fileMetadataFromPath(t *testing.T) {
tests := []struct {
path string
withMIMEType bool
expectedType string
expectedMIMEType string
}{
{
path: "test-fixtures/symlinks-simple/readme",
withMIMEType: true,
expectedType: "RegularFile",
expectedMIMEType: "text/plain",
},
{
path: "test-fixtures/symlinks-simple/link_to_new_readme",
withMIMEType: true,
expectedType: "SymbolicLink",
expectedMIMEType: "text/plain",
},
{
path: "test-fixtures/symlinks-simple/readme",
withMIMEType: false,
expectedType: "RegularFile",
expectedMIMEType: "",
},
{
path: "test-fixtures/symlinks-simple/link_to_new_readme",
withMIMEType: false,
expectedType: "SymbolicLink",
expectedMIMEType: "",
},
}
for _, test := range tests {
t.Run(test.path, func(t *testing.T) {
info, err := os.Lstat(test.path)
require.NoError(t, err)
actual := fileMetadataFromPath(test.path, info, test.withMIMEType)
assert.Equal(t, test.expectedMIMEType, actual.MIMEType)
assert.Equal(t, test.expectedType, string(actual.Type))
})
}
}