From b6adf43d4a4f8d86265ffe86ccf5797212eeff80 Mon Sep 17 00:00:00 2001 From: Shuaiyi Zhang Date: Mon, 30 Oct 2023 20:05:36 +0800 Subject: [PATCH] test: use 'Autoclear: ture' in TestRwLoop and add Autoclear test Signed-off-by: Shuaiyi Zhang --- mount/losetup_linux_test.go | 53 ++++++++++++++++++++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/mount/losetup_linux_test.go b/mount/losetup_linux_test.go index 938950fc5..3086176f7 100644 --- a/mount/losetup_linux_test.go +++ b/mount/losetup_linux_test.go @@ -19,6 +19,7 @@ package mount import ( "os" "testing" + "time" "github.com/containerd/continuity/testutil" ) @@ -82,7 +83,7 @@ func TestRwLoop(t *testing.T) { } }() - file, err := setupLoop(backingFile, LoopParams{Autoclear: false}) + file, err := setupLoop(backingFile, LoopParams{Autoclear: true}) if err != nil { t.Fatal(err) } @@ -112,3 +113,53 @@ func TestAttachDetachLoopDevice(t *testing.T) { t.Fatal(err) } } + +func TestAutoclearTrueLoop(t *testing.T) { + testutil.RequiresRoot(t) + + dev := func() string { + backingFile := createTempFile(t) + defer func() { + if err := os.Remove(backingFile); err != nil { + t.Fatal(err) + } + }() + + file, err := setupLoop(backingFile, LoopParams{Autoclear: true}) + if err != nil { + t.Fatal(err) + } + dev := file.Name() + file.Close() + return dev + }() + time.Sleep(100 * time.Millisecond) + if err := removeLoop(dev); err == nil { + t.Fatalf("removeLoop should fail if Autoclear is true") + } +} + +func TestAutoclearFalseLoop(t *testing.T) { + testutil.RequiresRoot(t) + + dev := func() string { + backingFile := createTempFile(t) + defer func() { + if err := os.Remove(backingFile); err != nil { + t.Fatal(err) + } + }() + + file, err := setupLoop(backingFile, LoopParams{Autoclear: false}) + if err != nil { + t.Fatal(err) + } + dev := file.Name() + file.Close() + return dev + }() + time.Sleep(100 * time.Millisecond) + if err := removeLoop(dev); err != nil { + t.Fatal(err) + } +}