From 375acb476d36cac8e122ae8c45628bd8e7e0f0ca Mon Sep 17 00:00:00 2001 From: Ophestra Date: Wed, 20 Aug 2025 02:03:18 +0900 Subject: container/autoroot: check host path equivalence by value This will never return true otherwise unless the equivalent paths happen to be interned by the caller. Signed-off-by: Ophestra --- container/mount_test.go | 65 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) (limited to 'container/mount_test.go') diff --git a/container/mount_test.go b/container/mount_test.go index eb904774..4c598b3f 100644 --- a/container/mount_test.go +++ b/container/mount_test.go @@ -2,6 +2,7 @@ package container import ( "os" + "slices" "testing" ) @@ -47,3 +48,67 @@ func TestEscapeOverlayDataSegment(t *testing.T) { }) } } + +type opsBuilderTestCase struct { + name string + ops *Ops + want Ops +} + +func checkOpsBuilder(t *testing.T, testCases []opsBuilderTestCase) { + t.Run("build", func(t *testing.T) { + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if !slices.EqualFunc(*tc.ops, tc.want, func(op Op, v Op) bool { return op.Is(v) }) { + t.Errorf("Ops: %#v, want %#v", tc.ops, tc.want) + } + }) + } + }) +} + +type opIsTestCase struct { + name string + op, v Op + want bool +} + +func checkOpIs(t *testing.T, testCases []opIsTestCase) { + t.Run("is", func(t *testing.T) { + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + if got := tc.op.Is(tc.v); got != tc.want { + t.Errorf("Is: %v, want %v", got, tc.want) + } + }) + } + }) +} + +type opMetaTestCase struct { + name string + op Op + + wantPrefix string + wantString string +} + +func checkOpMeta(t *testing.T, testCases []opMetaTestCase) { + t.Run("meta", func(t *testing.T) { + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + t.Run("prefix", func(t *testing.T) { + if got := tc.op.prefix(); got != tc.wantPrefix { + t.Errorf("prefix: %q, want %q", got, tc.wantPrefix) + } + }) + + t.Run("string", func(t *testing.T) { + if got := tc.op.String(); got != tc.wantString { + t.Errorf("String: %s, want %s", got, tc.wantString) + } + }) + }) + } + }) +} -- cgit v1.3.1