Skip to content

Commit

Permalink
libct/cg: add test for remove a non-exist dir in a ro mount point
Browse files Browse the repository at this point in the history
Signed-off-by: lfbzhm <lifubang@acmcoder.com>
  • Loading branch information
lifubang committed Nov 12, 2024
1 parent eb596b8 commit 058b6f2
Showing 1 changed file with 42 additions and 0 deletions.
42 changes: 42 additions & 0 deletions libcontainer/cgroups/utils_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,14 @@ package cgroups
import (
"bytes"
"errors"
"os"
"path/filepath"
"reflect"
"strings"
"testing"

"github.com/moby/sys/mountinfo"
"golang.org/x/sys/unix"
)

const fedoraMountinfo = `15 35 0:3 / /proc rw,nosuid,nodev,noexec,relatime shared:5 - proc proc rw
Expand Down Expand Up @@ -661,3 +664,42 @@ func TestConvertBlkIOToIOWeightValue(t *testing.T) {
}
}
}

// TestRemovePathEROFS is to test remove a non-exist dir in a ro mount point.
// The similar issue example: https://github.com/opencontainers/runc/issues/4518
func TestRemovePathEROFS(t *testing.T) {
dirFrom, err := os.MkdirTemp(".", "from-")
if err != nil {
t.Skip("can't create a tmp dir")
}
defer func() {
_ = unix.Rmdir(dirFrom)
}()
dirTo, err := os.MkdirTemp(".", "to-")
if err != nil {
t.Skip("can't create a tmp dir")
}
defer func() {
_ = unix.Rmdir(dirTo)
}()
err = unix.Mount(dirFrom, dirTo, "", unix.MS_BIND, "")
if err != nil {
t.Skip("no permission of mount")
}
err = unix.Mount("", dirTo, "", unix.MS_REMOUNT|unix.MS_BIND|unix.MS_RDONLY, "")
if err != nil {
t.Skip("no permission of mount")
}
defer func() {
_ = unix.Unmount(dirTo, 0)
}()
nonExistDir := filepath.Join(dirTo, "nothing")
err = rmdir(nonExistDir, true)
if !errors.Is(err, unix.EROFS) {
t.Fatalf("expected the error of removing a non-exist dir %s in a ro mount point with rmdir to be unix.EROFS, but got %v", nonExistDir, err)
}
err = RemovePath(nonExistDir)
if err != nil {
t.Fatalf("expected the error of removing a non-exist dir %s in a ro mount point with RemovePath to be nil, but got %v", nonExistDir, err)
}
}

0 comments on commit 058b6f2

Please sign in to comment.