github.com/secure-build/gitlab-runner@v12.5.0+incompatible/executors/docker/internal/volumes/utils_test.go (about) 1 package volumes 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/stretchr/testify/require" 8 9 "gitlab.com/gitlab-org/gitlab-runner/executors/docker/internal/volumes/parser" 10 ) 11 12 type isHostMountedVolumeTestCases map[string]isHostMountedVolumeTestCase 13 14 type isHostMountedVolumeTestCase struct { 15 dir string 16 volumes []string 17 expectedResult bool 18 expectedError error 19 } 20 21 func testIsHostMountedVolume(t *testing.T, volumesParser parser.Parser, testCases isHostMountedVolumeTestCases) { 22 for testName, testCase := range testCases { 23 t.Run(testName, func(t *testing.T) { 24 result, err := IsHostMountedVolume(volumesParser, testCase.dir, testCase.volumes...) 25 assert.Equal(t, testCase.expectedResult, result) 26 if testCase.expectedError == nil { 27 assert.NoError(t, err) 28 } else { 29 assert.EqualError(t, err, testCase.expectedError.Error()) 30 } 31 }) 32 } 33 } 34 35 func TestIsHostMountedVolume_Linux(t *testing.T) { 36 testCases := isHostMountedVolumeTestCases{ 37 "empty volumes": { 38 dir: "/test/to/checked/dir", 39 volumes: []string{}, 40 expectedResult: false, 41 }, 42 "no host volumes": { 43 dir: "/test/to/checked/dir", 44 volumes: []string{"/tests/to"}, 45 expectedResult: false, 46 }, 47 "dir not within volumes": { 48 dir: "/test/to/checked/dir", 49 volumes: []string{"/host:/root"}, 50 expectedResult: false, 51 }, 52 "dir within volumes": { 53 dir: "/test/to/checked/dir", 54 volumes: []string{"/host:/test/to"}, 55 expectedResult: true, 56 }, 57 "error on parsing": { 58 dir: "/test/to/checked/dir", 59 volumes: []string{""}, 60 expectedError: parser.NewInvalidVolumeSpecErr(""), 61 }, 62 } 63 64 testIsHostMountedVolume(t, parser.NewLinuxParser(), testCases) 65 } 66 67 func TestManagedList_Add(t *testing.T) { 68 tests := map[string]struct { 69 path string 70 expectedError error 71 }{ 72 "add non-duplicated path": { 73 path: "/new/path", 74 }, 75 "add duplicated path": { 76 path: "/duplicate", 77 expectedError: NewErrVolumeAlreadyDefined("/duplicate"), 78 }, 79 "add child path": { 80 path: "/duplicate/child", 81 }, 82 } 83 84 for testName, test := range tests { 85 t.Run(testName, func(t *testing.T) { 86 m := pathList{} 87 err := m.Add("/duplicate") 88 require.NoError(t, err) 89 90 err = m.Add(test.path) 91 assert.Equal(t, test.expectedError, err) 92 }) 93 } 94 }