|
| 1 | +package libcontainer |
| 2 | + |
| 3 | +import ( |
| 4 | + "testing" |
| 5 | + |
| 6 | + "golang.org/x/sys/unix" |
| 7 | +) |
| 8 | + |
| 9 | +func TestStringifyMountFlags(t *testing.T) { |
| 10 | + for _, test := range []struct { |
| 11 | + name string |
| 12 | + flags uintptr |
| 13 | + expected string |
| 14 | + }{ |
| 15 | + {"Empty", 0, ""}, |
| 16 | + // Single valid flags. |
| 17 | + {"Single-MS_RDONLY", unix.MS_RDONLY, "MS_RDONLY"}, |
| 18 | + {"Single-MS_NOSUID", unix.MS_NOSUID, "MS_NOSUID"}, |
| 19 | + {"Single-MS_NODEV", unix.MS_NODEV, "MS_NODEV"}, |
| 20 | + {"Single-MS_NOEXEC", unix.MS_NOEXEC, "MS_NOEXEC"}, |
| 21 | + {"Single-MS_SYNCHRONOUS", unix.MS_SYNCHRONOUS, "MS_SYNCHRONOUS"}, |
| 22 | + {"Single-MS_REMOUNT", unix.MS_REMOUNT, "MS_REMOUNT"}, |
| 23 | + {"Single-MS_MANDLOCK", unix.MS_MANDLOCK, "MS_MANDLOCK"}, |
| 24 | + {"Single-MS_DIRSYNC", unix.MS_DIRSYNC, "MS_DIRSYNC"}, |
| 25 | + {"Single-MS_NOSYMFOLLOW", unix.MS_NOSYMFOLLOW, "MS_NOSYMFOLLOW"}, |
| 26 | + {"Single-MS_NOATIME", unix.MS_NOATIME, "MS_NOATIME"}, |
| 27 | + {"Single-MS_NODIRATIME", unix.MS_NODIRATIME, "MS_NODIRATIME"}, |
| 28 | + {"Single-MS_BIND", unix.MS_BIND, "MS_BIND"}, |
| 29 | + {"Single-MS_MOVE", unix.MS_MOVE, "MS_MOVE"}, |
| 30 | + {"Single-MS_REC", unix.MS_REC, "MS_REC"}, |
| 31 | + {"Single-MS_SILENT", unix.MS_SILENT, "MS_SILENT"}, |
| 32 | + {"Single-MS_POSIXACL", unix.MS_POSIXACL, "MS_POSIXACL"}, |
| 33 | + {"Single-MS_UNBINDABLE", unix.MS_UNBINDABLE, "MS_UNBINDABLE"}, |
| 34 | + {"Single-MS_PRIVATE", unix.MS_PRIVATE, "MS_PRIVATE"}, |
| 35 | + {"Single-MS_SLAVE", unix.MS_SLAVE, "MS_SLAVE"}, |
| 36 | + {"Single-MS_SHARED", unix.MS_SHARED, "MS_SHARED"}, |
| 37 | + {"Single-MS_RELATIME", unix.MS_RELATIME, "MS_RELATIME"}, |
| 38 | + {"Single-MS_KERNMOUNT", unix.MS_KERNMOUNT, "0x400000"}, |
| 39 | + {"Single-MS_I_VERSION", unix.MS_I_VERSION, "MS_I_VERSION"}, |
| 40 | + {"Single-MS_STRICTATIME", unix.MS_STRICTATIME, "MS_STRICTATIME"}, |
| 41 | + {"Single-MS_LAZYTIME", unix.MS_LAZYTIME, "MS_LAZYTIME"}, |
| 42 | + // Invalid flag value. |
| 43 | + {"Unknown-512", 1 << 9, "0x200"}, |
| 44 | + // Multiple flag values at the same time. |
| 45 | + {"Multiple-Valid1", unix.MS_RDONLY | unix.MS_REC | unix.MS_BIND, "MS_RDONLY|MS_BIND|MS_REC"}, |
| 46 | + {"Multiple-Valid2", unix.MS_NOSUID | unix.MS_NODEV | unix.MS_NOEXEC | unix.MS_REC | unix.MS_NODIRATIME | unix.MS_I_VERSION, "MS_NOSUID|MS_NODEV|MS_NOEXEC|MS_NODIRATIME|MS_REC|MS_I_VERSION"}, |
| 47 | + {"Multiple-Mixed", unix.MS_REC | unix.MS_BIND | (1 << 9) | (1 << 31), "MS_BIND|MS_REC|0x80000200"}, |
| 48 | + } { |
| 49 | + got := stringifyMountFlags(test.flags) |
| 50 | + if got != test.expected { |
| 51 | + t.Errorf("%s: stringifyMountFlags(0x%x) = %q, expected %q", test.name, test.flags, got, test.expected) |
| 52 | + } |
| 53 | + } |
| 54 | +} |
0 commit comments