mirror of
https://github.com/genuinetools/reg.git
synced 2024-07-04 12:34:17 -04:00
60 lines
1.5 KiB
Go
60 lines
1.5 KiB
Go
// +build linux
|
|
|
|
package fs
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"os/exec"
|
|
"testing"
|
|
|
|
"github.com/containerd/continuity/testutil"
|
|
)
|
|
|
|
func testSupportsDType(t *testing.T, expected bool, mkfs ...string) {
|
|
testutil.RequiresRoot(t)
|
|
mnt, err := ioutil.TempDir("", "containerd-fs-test-supports-dtype")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
defer os.RemoveAll(mnt)
|
|
|
|
deviceName, cleanupDevice, err := testutil.NewLoopback(100 << 20) // 100 MB
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if out, err := exec.Command(mkfs[0], append(mkfs[1:], deviceName)...).CombinedOutput(); err != nil {
|
|
// not fatal
|
|
t.Skipf("could not mkfs (%v) %s: %v (out: %q)", mkfs, deviceName, err, string(out))
|
|
}
|
|
if out, err := exec.Command("mount", deviceName, mnt).CombinedOutput(); err != nil {
|
|
// not fatal
|
|
t.Skipf("could not mount %s: %v (out: %q)", deviceName, err, string(out))
|
|
}
|
|
defer func() {
|
|
testutil.Unmount(t, mnt)
|
|
cleanupDevice()
|
|
}()
|
|
// check whether it supports d_type
|
|
result, err := SupportsDType(mnt)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
t.Logf("Supports d_type: %v", result)
|
|
if expected != result {
|
|
t.Fatalf("expected %+v, got: %+v", expected, result)
|
|
}
|
|
}
|
|
|
|
func TestSupportsDTypeWithFType0XFS(t *testing.T) {
|
|
testSupportsDType(t, false, "mkfs.xfs", "-m", "crc=0", "-n", "ftype=0")
|
|
}
|
|
|
|
func TestSupportsDTypeWithFType1XFS(t *testing.T) {
|
|
testSupportsDType(t, true, "mkfs.xfs", "-m", "crc=0", "-n", "ftype=1")
|
|
}
|
|
|
|
func TestSupportsDTypeWithExt4(t *testing.T) {
|
|
testSupportsDType(t, true, "mkfs.ext4", "-F")
|
|
}
|