Merge pull request #36935 from cpuguy83/volume_tests_no_root

Fix issues with running volume tests as non-root.
diff --git a/volume/local/local_test.go b/volume/local/local_test.go
index 70e4356..541b844 100644
--- a/volume/local/local_test.go
+++ b/volume/local/local_test.go
@@ -32,14 +32,13 @@
 
 func TestRemove(t *testing.T) {
 	skip.If(t, runtime.GOOS == "windows", "FIXME: investigate why this test fails on CI")
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	rootDir, err := ioutil.TempDir("", "local-volume-test")
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer os.RemoveAll(rootDir)
 
-	r, err := New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err := New(rootDir, idtools.IDPair{UID: os.Geteuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -75,14 +74,13 @@
 }
 
 func TestInitializeWithVolumes(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	rootDir, err := ioutil.TempDir("", "local-volume-test")
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer os.RemoveAll(rootDir)
 
-	r, err := New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err := New(rootDir, idtools.IDPair{UID: os.Geteuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -92,7 +90,7 @@
 		t.Fatal(err)
 	}
 
-	r, err = New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err = New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -108,14 +106,13 @@
 }
 
 func TestCreate(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	rootDir, err := ioutil.TempDir("", "local-volume-test")
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer os.RemoveAll(rootDir)
 
-	r, err := New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err := New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -152,7 +149,7 @@
 		}
 	}
 
-	r, err = New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err = New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -182,14 +179,14 @@
 
 func TestCreateWithOpts(t *testing.T) {
 	skip.If(t, runtime.GOOS == "windows")
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
+	skip.If(t, os.Getuid() != 0, "requires mounts")
 	rootDir, err := ioutil.TempDir("", "local-volume-test")
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer os.RemoveAll(rootDir)
 
-	r, err := New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err := New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -280,14 +277,13 @@
 }
 
 func TestRelaodNoOpts(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	rootDir, err := ioutil.TempDir("", "volume-test-reload-no-opts")
 	if err != nil {
 		t.Fatal(err)
 	}
 	defer os.RemoveAll(rootDir)
 
-	r, err := New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err := New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
@@ -315,7 +311,7 @@
 		t.Fatal(err)
 	}
 
-	r, err = New(rootDir, idtools.IDPair{UID: 0, GID: 0})
+	r, err = New(rootDir, idtools.IDPair{UID: os.Getuid(), GID: os.Getegid()})
 	if err != nil {
 		t.Fatal(err)
 	}
diff --git a/volume/store/store.go b/volume/store/store.go
index 67b4e7d..990bc30 100644
--- a/volume/store/store.go
+++ b/volume/store/store.go
@@ -80,7 +80,7 @@
 	if rootPath != "" {
 		// initialize metadata store
 		volPath := filepath.Join(rootPath, volumeDataDir)
-		if err := os.MkdirAll(volPath, 750); err != nil {
+		if err := os.MkdirAll(volPath, 0750); err != nil {
 			return nil, err
 		}
 
diff --git a/volume/store/store_test.go b/volume/store/store_test.go
index 255480a..288a4ce 100644
--- a/volume/store/store_test.go
+++ b/volume/store/store_test.go
@@ -15,11 +15,9 @@
 	"github.com/google/go-cmp/cmp"
 	"github.com/gotestyourself/gotestyourself/assert"
 	is "github.com/gotestyourself/gotestyourself/assert/cmp"
-	"github.com/gotestyourself/gotestyourself/skip"
 )
 
 func TestCreate(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	s, cleanup := setupTest(t)
@@ -49,7 +47,6 @@
 }
 
 func TestRemove(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	s, cleanup := setupTest(t)
@@ -128,7 +125,6 @@
 }
 
 func TestFilterByDriver(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 	s, cleanup := setupTest(t)
 	defer cleanup()
@@ -156,7 +152,6 @@
 }
 
 func TestFilterByUsed(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 	s, cleanup := setupTest(t)
 	defer cleanup()
@@ -194,7 +189,6 @@
 }
 
 func TestDerefMultipleOfSameRef(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 	s, cleanup := setupTest(t)
 	defer cleanup()
@@ -216,7 +210,6 @@
 }
 
 func TestCreateKeepOptsLabelsWhenExistsRemotely(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 	s, cleanup := setupTest(t)
 	defer cleanup()
@@ -245,7 +238,6 @@
 }
 
 func TestDefererencePluginOnCreateError(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	var (
@@ -292,7 +284,6 @@
 }
 
 func TestRefDerefRemove(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	driverName := "test-ref-deref-remove"
@@ -313,7 +304,6 @@
 }
 
 func TestGet(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	driverName := "test-get"
@@ -340,7 +330,6 @@
 }
 
 func TestGetWithRef(t *testing.T) {
-	skip.If(t, os.Getuid() != 0, "skipping test that requires root")
 	t.Parallel()
 
 	driverName := "test-get-with-ref"