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  }