diff options
Diffstat (limited to 'tests/root_test')
-rw-r--r-- | tests/root_test/root_test.go | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/root_test/root_test.go b/tests/root_test/root_test.go index fe38cfa..462aaeb 100644 --- a/tests/root_test/root_test.go +++ b/tests/root_test/root_test.go @@ -362,3 +362,34 @@ func TestBtrfsQuirks(t *testing.T) { t.Errorf("wrong quirk: %v", quirk) } } + +func TestOverlay(t *testing.T) { + if os.Getuid() != 0 { + t.Skip("must run as root") + } + cDir := test_helpers.InitFS(t) + if syscallcompat.DetectQuirks(cDir)|syscallcompat.QuirkNoUserXattr != 0 { + t.Logf("No user xattrs! overlay mount will likely fail.") + } + os.Chmod(cDir, 0755) + pDir := cDir + ".mnt" + test_helpers.MountOrFatal(t, cDir, pDir, "-allow_other", "-extpass=echo test") + defer test_helpers.UnmountPanic(pDir) + + for _, d := range []string{"lower", "upper", "work", "merged"} { + err := os.Mkdir(pDir+"/"+d, 0700) + if err != nil { + t.Fatal(err) + } + } + ovlMnt := pDir + "/merged" + cmd := exec.Command("mount", "-t", "overlay", "overlay", + "-o", "lowerdir="+pDir+"/lower,upperdir="+pDir+"/upper,workdir="+pDir+"/work", + ovlMnt) + out, err := cmd.CombinedOutput() + if err != nil { + t.Log(string(out)) + t.Fatal(err) + } + defer syscall.Unmount(ovlMnt, 0) +} |