volume/volume_propagation_linux_test.go
f988c98f
 // +build linux
 
 package volume
 
 import (
 	"strings"
 	"testing"
 )
 
fc7b904d
 func TestParseMountRawPropagation(t *testing.T) {
f988c98f
 	var (
 		valid   []string
 		invalid map[string]string
 	)
 
 	valid = []string{
 		"/hostPath:/containerPath:shared",
 		"/hostPath:/containerPath:rshared",
 		"/hostPath:/containerPath:slave",
 		"/hostPath:/containerPath:rslave",
 		"/hostPath:/containerPath:private",
 		"/hostPath:/containerPath:rprivate",
 		"/hostPath:/containerPath:ro,shared",
 		"/hostPath:/containerPath:ro,slave",
 		"/hostPath:/containerPath:ro,private",
 		"/hostPath:/containerPath:ro,z,shared",
 		"/hostPath:/containerPath:ro,Z,slave",
 		"/hostPath:/containerPath:Z,ro,slave",
 		"/hostPath:/containerPath:slave,Z,ro",
 		"/hostPath:/containerPath:Z,slave,ro",
 		"/hostPath:/containerPath:slave,ro,Z",
 		"/hostPath:/containerPath:rslave,ro,Z",
 		"/hostPath:/containerPath:ro,rshared,Z",
 		"/hostPath:/containerPath:ro,Z,rprivate",
 	}
 	invalid = map[string]string{
fc7b904d
 		"/path:/path:ro,rshared,rslave":   `invalid mode`,
 		"/path:/path:ro,z,rshared,rslave": `invalid mode`,
 		"/path:shared":                    "invalid volume specification",
 		"/path:slave":                     "invalid volume specification",
 		"/path:private":                   "invalid volume specification",
 		"name:/absolute-path:shared":      "invalid volume specification",
 		"name:/absolute-path:rshared":     "invalid volume specification",
 		"name:/absolute-path:slave":       "invalid volume specification",
 		"name:/absolute-path:rslave":      "invalid volume specification",
 		"name:/absolute-path:private":     "invalid volume specification",
 		"name:/absolute-path:rprivate":    "invalid volume specification",
f988c98f
 	}
 
 	for _, path := range valid {
fc7b904d
 		if _, err := ParseMountRaw(path, "local"); err != nil {
 			t.Fatalf("ParseMountRaw(`%q`) should succeed: error %q", path, err)
f988c98f
 		}
 	}
 
 	for path, expectedError := range invalid {
fc7b904d
 		if _, err := ParseMountRaw(path, "local"); err == nil {
 			t.Fatalf("ParseMountRaw(`%q`) should have failed validation. Err %v", path, err)
f988c98f
 		} else {
 			if !strings.Contains(err.Error(), expectedError) {
fc7b904d
 				t.Fatalf("ParseMountRaw(`%q`) error should contain %q, got %v", path, expectedError, err.Error())
f988c98f
 			}
 		}
 	}
 }