github.com/anchore/syft@v1.38.2/syft/internal/fileresolver/directory_test.go (about) 1 //go:build !windows 2 // +build !windows 3 4 package fileresolver 5 6 import ( 7 "os" 8 "testing" 9 10 "github.com/stretchr/testify/assert" 11 ) 12 13 func Test_isUnallowableFileType(t *testing.T) { 14 tests := []struct { 15 name string 16 info os.FileInfo 17 expected error 18 }{ 19 { 20 name: "regular file", 21 info: testFileInfo{ 22 mode: 0, 23 }, 24 }, 25 { 26 name: "dir", 27 info: testFileInfo{ 28 mode: os.ModeDir, 29 }, 30 }, 31 { 32 name: "symlink", 33 info: testFileInfo{ 34 mode: os.ModeSymlink, 35 }, 36 }, 37 { 38 name: "socket", 39 info: testFileInfo{ 40 mode: os.ModeSocket, 41 }, 42 expected: ErrSkipPath, 43 }, 44 { 45 name: "named pipe", 46 info: testFileInfo{ 47 mode: os.ModeNamedPipe, 48 }, 49 expected: ErrSkipPath, 50 }, 51 { 52 name: "char device", 53 info: testFileInfo{ 54 mode: os.ModeCharDevice, 55 }, 56 expected: ErrSkipPath, 57 }, 58 { 59 name: "block device", 60 info: testFileInfo{ 61 mode: os.ModeDevice, 62 }, 63 expected: ErrSkipPath, 64 }, 65 { 66 name: "irregular", 67 info: testFileInfo{ 68 mode: os.ModeIrregular, 69 }, 70 expected: ErrSkipPath, 71 }, 72 } 73 for _, test := range tests { 74 t.Run(test.name, func(t *testing.T) { 75 assert.Equal(t, test.expected, disallowByFileType("", "dont/care", test.info, nil)) 76 }) 77 } 78 }