aboutsummaryrefslogtreecommitdiffhomepage
path: root/container/inittmpfs_test.go
diff options
context:
space:
mode:
authorOphestra <cat@gensokyo.uk>2025-08-20 20:17:28 +0900
committerOphestra <cat@gensokyo.uk>2025-08-20 20:17:28 +0900
commita1482ecdd0f98728f4b97137cd7b2fa17f67bb89 (patch)
treea1ef24752ffc3a2b5f5dfdecc440d2fc46968267 /container/inittmpfs_test.go
parenta07f9ed84c9fc131dba261c5175aa90b6f3e5331 (diff)
container/inittmpfs: check path equivalence by value
Fixes regression introduced while integrating Absolute. Signed-off-by: Ophestra <cat@gensokyo.uk>
Diffstat (limited to 'container/inittmpfs_test.go')
-rw-r--r--container/inittmpfs_test.go134
1 files changed, 134 insertions, 0 deletions
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`},
+ })
+}