From a1482ecdd0f98728f4b97137cd7b2fa17f67bb89 Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 20 Aug 2025 20:17:28 +0900 Subject: container/inittmpfs: check path equivalence by value Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra --- container/inittmpfs_test.go | 134 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 container/inittmpfs_test.go (limited to 'container/inittmpfs_test.go') diff --git a/container/inittmpfs_test.go b/container/inittmpfs_test.go new file mode 100644 index 00000000..c36820cd --- /dev/null +++ b/container/inittmpfs_test.go @@ -0,0 +1,134 @@ +package container + +import ( + "syscall" + "testing" +) + +func TestMountTmpfsOp(t *testing.T) { + checkOpsBuilder(t, []opsBuilderTestCase{ + {"runtime", new(Ops).Tmpfs( + MustAbs("/run/user"), + 1<<10, + 0755, + ), Ops{ + &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, + }}, + + {"nscd", new(Ops).Readonly( + MustAbs("/var/run/nscd"), + 0755, + ), Ops{ + &MountTmpfsOp{ + FSName: "readonly", + Path: MustAbs("/var/run/nscd"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV | syscall.MS_RDONLY, + Perm: 0755, + }, + }}, + }) + + checkOpIs(t, []opIsTestCase{ + {"zero", new(MountTmpfsOp), new(MountTmpfsOp), false}, + + {"fsname differs", &MountTmpfsOp{ + FSName: "readonly", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, false}, + + {"path differs", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user/differs"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, false}, + + {"flags differs", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV | syscall.MS_RDONLY, + Size: 1 << 10, + Perm: 0755, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, false}, + + {"size differs", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1, + Perm: 0755, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, false}, + + {"perm differs", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0700, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, false}, + + {"equals", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, true}, + }) + + checkOpMeta(t, []opMetaTestCase{ + {"runtime", &MountTmpfsOp{ + FSName: "ephemeral", + Path: MustAbs("/run/user"), + Flags: syscall.MS_NOSUID | syscall.MS_NODEV, + Size: 1 << 10, + Perm: 0755, + }, "mounting", `tmpfs on "/run/user" size 1024`}, + }) +} -- cgit v1.3.1