Files
umoci/make-local-unit-tests-work-as-non-root.patch

79 lines
2.7 KiB
Diff

From 14526d3d910260bb9e0b0aebe6e195dc5daf2b7e Mon Sep 17 00:00:00 2001
From: Aleksa Sarai <asarai@suse.com>
Date: Tue, 20 Dec 2016 18:20:05 +1100
Subject: [PATCH] makefile: make local-unit-tests work as root and non-root
This is necessary for %check-style testing inside the openSUSE RPMs, so
that we can make sure that everything works (or appears to work) when
releasing packages.
It also increases unit test coverage for the rootless case.
Signed-off-by: Aleksa Sarai <asarai@suse.com>
---
Makefile | 2 +-
oci/cas/dir_test.go | 10 ++++++++++
oci/layer/tar_extract_test.go | 5 +++++
3 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/Makefile b/Makefile
index d0938633329d..3b223135bed5 100644
--- a/Makefile
+++ b/Makefile
@@ -82,7 +82,7 @@ umociimage:
.PHONY: test-unit
test-unit: umociimage
docker run --rm -it -v $(PWD):/go/src/$(PROJECT) --cap-add=SYS_ADMIN $(UMOCI_IMAGE) make local-test-unit
- docker run --rm -it -v $(PWD):/go/src/$(PROJECT) -u 1000:1000 --cap-drop=all $(UMOCI_IMAGE) go test -v $(PROJECT)/pkg/unpriv
+ docker run --rm -it -v $(PWD):/go/src/$(PROJECT) -u 1000:1000 --cap-drop=all $(UMOCI_IMAGE) make local-test-unit
.PHONY: local-test-unit
local-test-unit: umoci
diff --git a/oci/cas/dir_test.go b/oci/cas/dir_test.go
index 14eaf1799648..efddb14d23b6 100644
--- a/oci/cas/dir_test.go
+++ b/oci/cas/dir_test.go
@@ -40,6 +40,11 @@ import (
// readonly makes the given path read-only (by bind-mounting it as "ro").
func readonly(t *testing.T, path string) {
+ if os.Geteuid() != 0 {
+ t.Log("readonly tests only work with root privileges")
+ t.Skip()
+ }
+
t.Logf("mounting %s as readonly", path)
if err := syscall.Mount(path, path, "", syscall.MS_BIND|syscall.MS_RDONLY, ""); err != nil {
@@ -52,6 +57,11 @@ func readonly(t *testing.T, path string) {
// readwrite undoes the effect of readonly.
func readwrite(t *testing.T, path string) {
+ if os.Geteuid() != 0 {
+ t.Log("readonly tests only work with root privileges")
+ t.Skip()
+ }
+
if err := syscall.Unmount(path, syscall.MNT_DETACH); err != nil {
t.Fatalf("unmount %s: %s", path, err)
}
diff --git a/oci/layer/tar_extract_test.go b/oci/layer/tar_extract_test.go
index a2af3ddade8b..81311b00e891 100644
--- a/oci/layer/tar_extract_test.go
+++ b/oci/layer/tar_extract_test.go
@@ -463,6 +463,11 @@ func TestUnpackHardlink(t *testing.T) {
// TestUnpackEntryMap checks that the mapOptions handling works.
func TestUnpackEntryMap(t *testing.T) {
+ if os.Geteuid() != 0 {
+ t.Log("mapOptions tests only work with root privileges")
+ t.Skip()
+ }
+
// TODO: Modify this to use subtests once Go 1.7 is in enough places.
func(t *testing.T) {
for _, test := range []struct {
--
2.11.0