Merge pull request #41659 from thaJeztah/system_fix_darwin

pkg/system: fix compile on darwin (macOS)
This commit is contained in:
Sebastiaan van Stijn 2020-11-10 22:19:21 +01:00 committed by GitHub
commit af34b94a78
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 76 additions and 78 deletions

View file

@ -1,5 +1,3 @@
// +build !windows
package system // import "github.com/docker/docker/pkg/system" package system // import "github.com/docker/docker/pkg/system"
import ( import (

View file

@ -1,4 +1,4 @@
// +build !windows // +build !darwin,!windows
package system // import "github.com/docker/docker/pkg/system" package system // import "github.com/docker/docker/pkg/system"

View file

@ -0,0 +1,36 @@
// +build !darwin
package system // import "github.com/docker/docker/pkg/system"
import (
"io/ioutil"
"testing"
)
func TestEnsureRemoveAllNotExist(t *testing.T) {
// should never return an error for a non-existent path
if err := EnsureRemoveAll("/non/existent/path"); err != nil {
t.Fatal(err)
}
}
func TestEnsureRemoveAllWithDir(t *testing.T) {
dir, err := ioutil.TempDir("", "test-ensure-removeall-with-dir")
if err != nil {
t.Fatal(err)
}
if err := EnsureRemoveAll(dir); err != nil {
t.Fatal(err)
}
}
func TestEnsureRemoveAllWithFile(t *testing.T) {
tmp, err := ioutil.TempFile("", "test-ensure-removeall-with-dir")
if err != nil {
t.Fatal(err)
}
tmp.Close()
if err := EnsureRemoveAll(tmp.Name()); err != nil {
t.Fatal(err)
}
}

View file

@ -1,34 +1,56 @@
// +build !darwin,!windows
package system // import "github.com/docker/docker/pkg/system" package system // import "github.com/docker/docker/pkg/system"
import ( import (
"io/ioutil" "io/ioutil"
"os"
"path/filepath"
"testing" "testing"
"time"
"github.com/moby/sys/mount"
"gotest.tools/v3/skip"
) )
func TestEnsureRemoveAllNotExist(t *testing.T) { func TestEnsureRemoveAllWithMount(t *testing.T) {
// should never return an error for a non-existent path skip.If(t, os.Getuid() != 0, "skipping test that requires root")
if err := EnsureRemoveAll("/non/existent/path"); err != nil {
t.Fatal(err)
}
}
func TestEnsureRemoveAllWithDir(t *testing.T) { dir1, err := ioutil.TempDir("", "test-ensure-removeall-with-dir1")
dir, err := ioutil.TempDir("", "test-ensure-removeall-with-dir")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := EnsureRemoveAll(dir); err != nil { dir2, err := ioutil.TempDir("", "test-ensure-removeall-with-dir2")
t.Fatal(err)
}
}
func TestEnsureRemoveAllWithFile(t *testing.T) {
tmp, err := ioutil.TempFile("", "test-ensure-removeall-with-dir")
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
tmp.Close() defer os.RemoveAll(dir2)
if err := EnsureRemoveAll(tmp.Name()); err != nil {
bindDir := filepath.Join(dir1, "bind")
if err := os.MkdirAll(bindDir, 0755); err != nil {
t.Fatal(err) t.Fatal(err)
} }
if err := mount.Mount(dir2, bindDir, "none", "bind"); err != nil {
t.Fatal(err)
}
done := make(chan struct{}, 1)
go func() {
err = EnsureRemoveAll(dir1)
close(done)
}()
select {
case <-done:
if err != nil {
t.Fatal(err)
}
case <-time.After(5 * time.Second):
t.Fatal("timeout waiting for EnsureRemoveAll to finish")
}
if _, err := os.Stat(dir1); !os.IsNotExist(err) {
t.Fatalf("expected %q to not exist", dir1)
}
} }

View file

@ -1,58 +0,0 @@
// +build !windows
package system // import "github.com/docker/docker/pkg/system"
import (
"io/ioutil"
"os"
"path/filepath"
"runtime"
"testing"
"time"
"github.com/moby/sys/mount"
"gotest.tools/v3/skip"
)
func TestEnsureRemoveAllWithMount(t *testing.T) {
skip.If(t, runtime.GOOS == "windows", "mount not supported on Windows")
skip.If(t, os.Getuid() != 0, "skipping test that requires root")
dir1, err := ioutil.TempDir("", "test-ensure-removeall-with-dir1")
if err != nil {
t.Fatal(err)
}
dir2, err := ioutil.TempDir("", "test-ensure-removeall-with-dir2")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir2)
bindDir := filepath.Join(dir1, "bind")
if err := os.MkdirAll(bindDir, 0755); err != nil {
t.Fatal(err)
}
if err := mount.Mount(dir2, bindDir, "none", "bind"); err != nil {
t.Fatal(err)
}
done := make(chan struct{}, 1)
go func() {
err = EnsureRemoveAll(dir1)
close(done)
}()
select {
case <-done:
if err != nil {
t.Fatal(err)
}
case <-time.After(5 * time.Second):
t.Fatal("timeout waiting for EnsureRemoveAll to finish")
}
if _, err := os.Stat(dir1); !os.IsNotExist(err) {
t.Fatalf("expected %q to not exist", dir1)
}
}