github.com/jingleWang/moby@v1.13.1/volume/volume_propagation_linux_test.go (about) 1 // +build linux 2 3 package volume 4 5 import ( 6 "strings" 7 "testing" 8 ) 9 10 func TestParseMountRawPropagation(t *testing.T) { 11 var ( 12 valid []string 13 invalid map[string]string 14 ) 15 16 valid = []string{ 17 "/hostPath:/containerPath:shared", 18 "/hostPath:/containerPath:rshared", 19 "/hostPath:/containerPath:slave", 20 "/hostPath:/containerPath:rslave", 21 "/hostPath:/containerPath:private", 22 "/hostPath:/containerPath:rprivate", 23 "/hostPath:/containerPath:ro,shared", 24 "/hostPath:/containerPath:ro,slave", 25 "/hostPath:/containerPath:ro,private", 26 "/hostPath:/containerPath:ro,z,shared", 27 "/hostPath:/containerPath:ro,Z,slave", 28 "/hostPath:/containerPath:Z,ro,slave", 29 "/hostPath:/containerPath:slave,Z,ro", 30 "/hostPath:/containerPath:Z,slave,ro", 31 "/hostPath:/containerPath:slave,ro,Z", 32 "/hostPath:/containerPath:rslave,ro,Z", 33 "/hostPath:/containerPath:ro,rshared,Z", 34 "/hostPath:/containerPath:ro,Z,rprivate", 35 } 36 invalid = map[string]string{ 37 "/path:/path:ro,rshared,rslave": `invalid mode`, 38 "/path:/path:ro,z,rshared,rslave": `invalid mode`, 39 "/path:shared": "invalid volume specification", 40 "/path:slave": "invalid volume specification", 41 "/path:private": "invalid volume specification", 42 "name:/absolute-path:shared": "invalid volume specification", 43 "name:/absolute-path:rshared": "invalid volume specification", 44 "name:/absolute-path:slave": "invalid volume specification", 45 "name:/absolute-path:rslave": "invalid volume specification", 46 "name:/absolute-path:private": "invalid volume specification", 47 "name:/absolute-path:rprivate": "invalid volume specification", 48 } 49 50 for _, path := range valid { 51 if _, err := ParseMountRaw(path, "local"); err != nil { 52 t.Fatalf("ParseMountRaw(`%q`) should succeed: error %q", path, err) 53 } 54 } 55 56 for path, expectedError := range invalid { 57 if _, err := ParseMountRaw(path, "local"); err == nil { 58 t.Fatalf("ParseMountRaw(`%q`) should have failed validation. Err %v", path, err) 59 } else { 60 if !strings.Contains(err.Error(), expectedError) { 61 t.Fatalf("ParseMountRaw(`%q`) error should contain %q, got %v", path, expectedError, err.Error()) 62 } 63 } 64 } 65 }