summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/apiv2/01-basic.at4
-rw-r--r--test/apiv2/20-containers.at2
-rw-r--r--test/e2e/attach_test.go7
-rw-r--r--test/e2e/build_test.go7
-rw-r--r--test/e2e/checkpoint_test.go4
-rw-r--r--test/e2e/commit_test.go2
-rw-r--r--test/e2e/common_test.go39
-rw-r--r--test/e2e/config/containers.conf2
-rw-r--r--test/e2e/container_inspect_test.go4
-rw-r--r--test/e2e/containers_conf_test.go13
-rw-r--r--test/e2e/cp_test.go2
-rw-r--r--test/e2e/create_staticip_test.go31
-rw-r--r--test/e2e/create_staticmac_test.go14
-rw-r--r--test/e2e/create_test.go45
-rw-r--r--test/e2e/diff_test.go2
-rw-r--r--test/e2e/events_test.go6
-rw-r--r--test/e2e/exec_test.go2
-rw-r--r--test/e2e/exists_test.go2
-rw-r--r--test/e2e/export_test.go2
-rw-r--r--test/e2e/generate_kube_test.go6
-rw-r--r--test/e2e/generate_systemd_test.go2
-rw-r--r--test/e2e/healthcheck_run_test.go2
-rw-r--r--test/e2e/history_test.go2
-rw-r--r--test/e2e/images_test.go2
-rw-r--r--test/e2e/import_test.go2
-rw-r--r--test/e2e/info_test.go4
-rw-r--r--test/e2e/init_test.go2
-rw-r--r--test/e2e/inspect_test.go2
-rw-r--r--test/e2e/kill_test.go2
-rw-r--r--test/e2e/libpod_suite_remote_test.go9
-rw-r--r--test/e2e/libpod_suite_test.go32
-rw-r--r--test/e2e/libpod_suite_varlink_test.go2
-rw-r--r--test/e2e/load_test.go6
-rw-r--r--test/e2e/login_logout_test.go4
-rw-r--r--test/e2e/logs_test.go2
-rw-r--r--test/e2e/manifest_test.go2
-rw-r--r--test/e2e/mount_rootless_test.go83
-rw-r--r--test/e2e/mount_test.go146
-rw-r--r--test/e2e/namespace_test.go5
-rw-r--r--test/e2e/negative_test.go2
-rw-r--r--test/e2e/network_create_test.go7
-rw-r--r--test/e2e/network_test.go2
-rw-r--r--test/e2e/pause_test.go4
-rw-r--r--test/e2e/play_kube_test.go126
-rw-r--r--test/e2e/pod_create_test.go37
-rw-r--r--test/e2e/pod_infra_container_test.go7
-rw-r--r--test/e2e/pod_inspect_test.go5
-rw-r--r--test/e2e/pod_kill_test.go2
-rw-r--r--test/e2e/pod_pause_test.go2
-rw-r--r--test/e2e/pod_pod_namespaces.go5
-rw-r--r--test/e2e/pod_prune_test.go2
-rw-r--r--test/e2e/pod_ps_test.go2
-rw-r--r--test/e2e/pod_restart_test.go2
-rw-r--r--test/e2e/pod_rm_test.go2
-rw-r--r--test/e2e/pod_start_test.go2
-rw-r--r--test/e2e/pod_stats_test.go4
-rw-r--r--test/e2e/pod_stop_test.go2
-rw-r--r--test/e2e/pod_top_test.go5
-rw-r--r--test/e2e/port_test.go13
-rw-r--r--test/e2e/prune_test.go2
-rw-r--r--test/e2e/ps_test.go2
-rw-r--r--test/e2e/pull_test.go8
-rw-r--r--test/e2e/push_test.go4
-rw-r--r--test/e2e/restart_test.go2
-rw-r--r--test/e2e/rm_test.go2
-rw-r--r--test/e2e/rmi_test.go2
-rw-r--r--test/e2e/run_apparmor_test.go158
-rw-r--r--test/e2e/run_cgroup_parent_test.go2
-rw-r--r--test/e2e/run_cleanup_test.go5
-rw-r--r--test/e2e/run_cpu_test.go6
-rw-r--r--test/e2e/run_device_test.go16
-rw-r--r--test/e2e/run_dns_test.go4
-rw-r--r--test/e2e/run_entrypoint_test.go10
-rw-r--r--test/e2e/run_env_test.go4
-rw-r--r--test/e2e/run_exit_test.go4
-rw-r--r--test/e2e/run_memory_test.go6
-rw-r--r--test/e2e/run_networking_test.go42
-rw-r--r--test/e2e/run_ns_test.go35
-rw-r--r--test/e2e/run_passwd_test.go4
-rw-r--r--test/e2e/run_privileged_test.go4
-rw-r--r--test/e2e/run_restart_test.go9
-rw-r--r--test/e2e/run_seccomp.go4
-rw-r--r--test/e2e/run_security_labels.go5
-rw-r--r--test/e2e/run_selinux_test.go4
-rw-r--r--test/e2e/run_signal_test.go4
-rw-r--r--test/e2e/run_staticip_test.go4
-rw-r--r--test/e2e/run_test.go74
-rw-r--r--test/e2e/run_userns_test.go6
-rw-r--r--test/e2e/run_volume_test.go99
-rw-r--r--test/e2e/runlabel_test.go6
-rw-r--r--test/e2e/save_test.go4
-rw-r--r--test/e2e/search_test.go8
-rw-r--r--test/e2e/start_test.go2
-rw-r--r--test/e2e/stats_test.go2
-rw-r--r--test/e2e/stop_test.go2
-rw-r--r--test/e2e/system_connection_test.go176
-rw-r--r--test/e2e/system_df_test.go19
-rw-r--r--test/e2e/system_reset_test.go2
-rw-r--r--test/e2e/systemd_test.go4
-rw-r--r--test/e2e/tag_test.go2
-rw-r--r--test/e2e/top_test.go12
-rw-r--r--test/e2e/tree_test.go2
-rw-r--r--test/e2e/trust_test.go2
-rw-r--r--test/e2e/unshare_test.go2
-rw-r--r--test/e2e/untag_test.go12
-rw-r--r--test/e2e/version_test.go4
-rw-r--r--test/e2e/volume_create_test.go2
-rw-r--r--test/e2e/volume_inspect_test.go2
-rw-r--r--test/e2e/volume_ls_test.go2
-rw-r--r--test/e2e/volume_prune_test.go4
-rw-r--r--test/e2e/volume_rm_test.go2
-rw-r--r--test/e2e/wait_test.go2
-rw-r--r--test/endpoint/commit.go2
-rw-r--r--test/endpoint/endpoint.go4
-rw-r--r--test/endpoint/exists_test.go2
-rw-r--r--test/endpoint/pull_test.go2
-rw-r--r--test/endpoint/setup.go4
-rw-r--r--test/endpoint/version_test.go4
-rw-r--r--test/system/015-help.bats21
-rw-r--r--test/system/030-run.bats2
-rw-r--r--test/system/055-rm.bats2
-rw-r--r--test/system/070-build.bats97
-rw-r--r--test/system/130-kill.bats2
-rw-r--r--test/system/200-pod.bats8
-rw-r--r--test/system/500-networking.bats2
-rw-r--r--test/system/TODO.md2
-rw-r--r--test/system/helpers.bash10
-rwxr-xr-xtest/system/helpers.t2
-rw-r--r--test/utils/common_function_test.go2
-rw-r--r--test/utils/podmansession_test.go2
-rw-r--r--test/utils/podmantest_test.go2
-rw-r--r--test/utils/utils_suite_test.go2
132 files changed, 1362 insertions, 358 deletions
diff --git a/test/apiv2/01-basic.at b/test/apiv2/01-basic.at
index 18ec9bbe8..79dac990a 100644
--- a/test/apiv2/01-basic.at
+++ b/test/apiv2/01-basic.at
@@ -68,4 +68,8 @@ else
_show_ok 0 "Time for ten /info requests" "<= 5 seconds" "$delta_t seconds"
fi
+# Simple events test (see #7078)
+t GET "events?stream=false" 200
+t GET "libpod/events?stream=false" 200
+
# vim: filetype=sh
diff --git a/test/apiv2/20-containers.at b/test/apiv2/20-containers.at
index 4bb00398e..ed333d382 100644
--- a/test/apiv2/20-containers.at
+++ b/test/apiv2/20-containers.at
@@ -37,7 +37,7 @@ t GET libpod/containers/json?limit=1 200 \
.[0].IsInfra=false
# Make sure `last` works, which is an alias for `limit`.
-# See https://github.com/containers/libpod/issues/6413.
+# See https://github.com/containers/podman/issues/6413.
t GET libpod/containers/json?last=1 200 \
length=1 \
.[0].Id~[0-9a-f]\\{64\\} \
diff --git a/test/e2e/attach_test.go b/test/e2e/attach_test.go
index 9fd1466aa..7b18f71ac 100644
--- a/test/e2e/attach_test.go
+++ b/test/e2e/attach_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -7,7 +5,7 @@ import (
"syscall"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -42,6 +40,7 @@ var _ = Describe("Podman attach", func() {
})
It("podman attach to non-running container", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"create", "--name", "test1", "-d", "-i", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -52,6 +51,7 @@ var _ = Describe("Podman attach", func() {
})
It("podman container attach to non-running container", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"container", "create", "--name", "test1", "-d", "-i", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -87,6 +87,7 @@ var _ = Describe("Podman attach", func() {
Expect(podmanTest.NumberOfContainersRunning()).To(Equal(1))
})
It("podman attach to the latest container", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"run", "-d", "--name", "test1", ALPINE, "/bin/sh", "-c", "while true; do echo test1; sleep 1; done"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
diff --git a/test/e2e/build_test.go b/test/e2e/build_test.go
index 9c8078f16..1046ffcea 100644
--- a/test/e2e/build_test.go
+++ b/test/e2e/build_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -9,7 +7,7 @@ import (
"runtime"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -40,6 +38,7 @@ var _ = Describe("Podman build", func() {
// Let's first do the most simple build possible to make sure stuff is
// happy and then clean up after ourselves to make sure that works too.
It("podman build and remove basic alpine", func() {
+ SkipIfRemote()
session := podmanTest.PodmanNoCache([]string{"build", "build/basicalpine"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -69,6 +68,7 @@ var _ = Describe("Podman build", func() {
// Check that builds with different values for the squash options
// create the appropriate number of layers, then clean up after.
It("podman build basic alpine with squash", func() {
+ SkipIfRemote()
session := podmanTest.PodmanNoCache([]string{"build", "-f", "build/squash/Dockerfile.squash-a", "-t", "test-squash-a:latest", "build/squash"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -154,6 +154,7 @@ var _ = Describe("Podman build", func() {
})
It("podman build basic alpine and print id to external file", func() {
+ SkipIfRemote()
// Switch to temp dir and restore it afterwards
cwd, err := os.Getwd()
diff --git a/test/e2e/checkpoint_test.go b/test/e2e/checkpoint_test.go
index e9d60f507..73ef8520b 100644
--- a/test/e2e/checkpoint_test.go
+++ b/test/e2e/checkpoint_test.go
@@ -7,8 +7,8 @@ import (
"os"
"os/exec"
- "github.com/containers/libpod/v2/pkg/criu"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/criu"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/commit_test.go b/test/e2e/commit_test.go
index b7bc2c7e8..568ee080d 100644
--- a/test/e2e/commit_test.go
+++ b/test/e2e/commit_test.go
@@ -5,7 +5,7 @@ import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/common_test.go b/test/e2e/common_test.go
index 51f290159..ed55484e3 100644
--- a/test/e2e/common_test.go
+++ b/test/e2e/common_test.go
@@ -13,10 +13,11 @@ import (
"testing"
"time"
- "github.com/containers/libpod/v2/libpod/define"
- "github.com/containers/libpod/v2/pkg/inspect"
- "github.com/containers/libpod/v2/pkg/rootless"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/libpod/define"
+ "github.com/containers/podman/v2/pkg/cgroups"
+ "github.com/containers/podman/v2/pkg/inspect"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/containers/storage"
"github.com/containers/storage/pkg/reexec"
"github.com/containers/storage/pkg/stringid"
@@ -151,6 +152,8 @@ var _ = SynchronizedBeforeSuite(func() []byte {
return []byte(path)
}, func(data []byte) {
+ cwd, _ := os.Getwd()
+ INTEGRATION_ROOT = filepath.Join(cwd, "../../")
LockTmpDir = string(data)
})
@@ -595,3 +598,31 @@ func SkipIfNotFedora() {
ginkgo.Skip("Test can only run on Fedora")
}
}
+
+func isRootless() bool {
+ return os.Geteuid() != 0
+}
+
+func SkipIfCgroupV1() {
+ cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
+ Expect(err).To(BeNil())
+
+ if !cgroupsv2 {
+ Skip("Skip on systems with cgroup V1 systems")
+ }
+}
+
+func SkipIfCgroupV2() {
+ cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
+ Expect(err).To(BeNil())
+
+ if cgroupsv2 {
+ Skip("Skip on systems with cgroup V2 systems")
+ }
+}
+
+// PodmanAsUser is the exec call to podman on the filesystem with the specified uid/gid and environment
+func (p *PodmanTestIntegration) PodmanAsUser(args []string, uid, gid uint32, cwd string, env []string) *PodmanSessionIntegration {
+ podmanSession := p.PodmanAsUserBase(args, uid, gid, cwd, env, false, false, nil)
+ return &PodmanSessionIntegration{podmanSession}
+}
diff --git a/test/e2e/config/containers.conf b/test/e2e/config/containers.conf
index 0a07676c4..5f852468d 100644
--- a/test/e2e/config/containers.conf
+++ b/test/e2e/config/containers.conf
@@ -50,3 +50,5 @@ dns_servers=[ "1.2.3.4", ]
dns_options=[ "debug", ]
tz = "Pacific/Honolulu"
+
+umask = "0002"
diff --git a/test/e2e/container_inspect_test.go b/test/e2e/container_inspect_test.go
index a10a634e7..e84fd9f2e 100644
--- a/test/e2e/container_inspect_test.go
+++ b/test/e2e/container_inspect_test.go
@@ -3,8 +3,8 @@ package integration
import (
"os"
- "github.com/containers/libpod/v2/pkg/annotations"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/annotations"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/containers_conf_test.go b/test/e2e/containers_conf_test.go
index 23d8dd197..1054f55f6 100644
--- a/test/e2e/containers_conf_test.go
+++ b/test/e2e/containers_conf_test.go
@@ -10,7 +10,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -218,6 +218,17 @@ var _ = Describe("Podman run", func() {
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring("HST"))
+ })
+ It("podman run containers.conf umask", func() {
+ //containers.conf umask set to 0002
+ if !strings.Contains(podmanTest.OCIRuntime, "crun") {
+ Skip("Test only works on crun")
+ }
+ session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "sh", "-c", "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("0002"))
})
+
})
diff --git a/test/e2e/cp_test.go b/test/e2e/cp_test.go
index 6fed6a0ac..df43c1b87 100644
--- a/test/e2e/cp_test.go
+++ b/test/e2e/cp_test.go
@@ -9,7 +9,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/create_staticip_test.go b/test/e2e/create_staticip_test.go
index e52b37417..606c1b10d 100644
--- a/test/e2e/create_staticip_test.go
+++ b/test/e2e/create_staticip_test.go
@@ -1,12 +1,11 @@
-// +build !remote
-
package integration
import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -19,7 +18,6 @@ var _ = Describe("Podman create with --ip flag", func() {
)
BeforeEach(func() {
- SkipIfRootless()
tempdir, err = CreateTempDirInTempDir()
if err != nil {
os.Exit(1)
@@ -39,18 +37,21 @@ var _ = Describe("Podman create with --ip flag", func() {
})
It("Podman create --ip with garbage address", func() {
+ SkipIfRootless()
result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", "114232346", ALPINE, "ls"})
result.WaitWithDefaultTimeout()
Expect(result).To(ExitWithError())
})
It("Podman create --ip with v6 address", func() {
+ SkipIfRootless()
result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", "2001:db8:bad:beef::1", ALPINE, "ls"})
result.WaitWithDefaultTimeout()
Expect(result).To(ExitWithError())
})
It("Podman create --ip with non-allocatable IP", func() {
+ SkipIfRootless()
result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", "203.0.113.124", ALPINE, "ls"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
@@ -64,19 +65,25 @@ var _ = Describe("Podman create with --ip flag", func() {
ip := GetRandomIPAddress()
result := podmanTest.Podman([]string{"create", "--name", "test", "--ip", ip, ALPINE, "ip", "addr"})
result.WaitWithDefaultTimeout()
- Expect(result.ExitCode()).To(Equal(0))
+ // Rootless static ip assignment should error
+ if rootless.IsRootless() {
+ Expect(result.ExitCode()).To(Equal(125))
+ } else {
+ Expect(result.ExitCode()).To(Equal(0))
- result = podmanTest.Podman([]string{"start", "test"})
- result.WaitWithDefaultTimeout()
- Expect(result.ExitCode()).To(Equal(0))
+ result = podmanTest.Podman([]string{"start", "test"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
- result = podmanTest.Podman([]string{"logs", "test"})
- result.WaitWithDefaultTimeout()
- Expect(result.ExitCode()).To(Equal(0))
- Expect(result.OutputToString()).To(ContainSubstring(ip + "/16"))
+ result = podmanTest.Podman([]string{"logs", "test"})
+ result.WaitWithDefaultTimeout()
+ Expect(result.ExitCode()).To(Equal(0))
+ Expect(result.OutputToString()).To(ContainSubstring(ip + "/16"))
+ }
})
It("Podman create two containers with the same IP", func() {
+ SkipIfRootless()
ip := GetRandomIPAddress()
result := podmanTest.Podman([]string{"create", "--name", "test1", "--ip", ip, ALPINE, "sleep", "999"})
result.WaitWithDefaultTimeout()
diff --git a/test/e2e/create_staticmac_test.go b/test/e2e/create_staticmac_test.go
index fbe11440c..adffdc1ca 100644
--- a/test/e2e/create_staticmac_test.go
+++ b/test/e2e/create_staticmac_test.go
@@ -1,11 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -18,7 +17,6 @@ var _ = Describe("Podman run with --mac-address flag", func() {
)
BeforeEach(func() {
- SkipIfRootless()
tempdir, err = CreateTempDirInTempDir()
if err != nil {
os.Exit(1)
@@ -40,7 +38,11 @@ var _ = Describe("Podman run with --mac-address flag", func() {
It("Podman run --mac-address", func() {
result := podmanTest.Podman([]string{"run", "--mac-address", "92:d0:c6:0a:29:34", ALPINE, "ip", "addr"})
result.WaitWithDefaultTimeout()
- Expect(result.ExitCode()).To(Equal(0))
- Expect(result.OutputToString()).To(ContainSubstring("92:d0:c6:0a:29:34"))
+ if rootless.IsRootless() {
+ Expect(result.ExitCode()).To(Equal(125))
+ } else {
+ Expect(result.ExitCode()).To(Equal(0))
+ Expect(result.OutputToString()).To(ContainSubstring("92:d0:c6:0a:29:34"))
+ }
})
})
diff --git a/test/e2e/create_test.go b/test/e2e/create_test.go
index f21f17d39..72a3a7717 100644
--- a/test/e2e/create_test.go
+++ b/test/e2e/create_test.go
@@ -5,8 +5,9 @@ import (
"io/ioutil"
"os"
"path/filepath"
+ "strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -499,4 +500,46 @@ var _ = Describe("Podman create", func() {
Expect(data[0].Config.Timezone).To(Equal("local"))
})
+ It("podman create --umask", func() {
+ if !strings.Contains(podmanTest.OCIRuntime, "crun") {
+ Skip("Test only works on crun")
+ }
+
+ session := podmanTest.Podman([]string{"create", "--name", "default", ALPINE})
+ session.WaitWithDefaultTimeout()
+ inspect := podmanTest.Podman([]string{"inspect", "default"})
+ inspect.WaitWithDefaultTimeout()
+ data := inspect.InspectContainerToJSON()
+ Expect(len(data)).To(Equal(1))
+ Expect(data[0].Config.Umask).To(Equal("0022"))
+
+ session = podmanTest.Podman([]string{"create", "--umask", "0002", "--name", "umask", ALPINE})
+ session.WaitWithDefaultTimeout()
+ inspect = podmanTest.Podman([]string{"inspect", "umask"})
+ inspect.WaitWithDefaultTimeout()
+ data = inspect.InspectContainerToJSON()
+ Expect(len(data)).To(Equal(1))
+ Expect(data[0].Config.Umask).To(Equal("0002"))
+
+ session = podmanTest.Podman([]string{"create", "--umask", "0077", "--name", "fedora", fedoraMinimal})
+ session.WaitWithDefaultTimeout()
+ inspect = podmanTest.Podman([]string{"inspect", "fedora"})
+ inspect.WaitWithDefaultTimeout()
+ data = inspect.InspectContainerToJSON()
+ Expect(len(data)).To(Equal(1))
+ Expect(data[0].Config.Umask).To(Equal("0077"))
+
+ session = podmanTest.Podman([]string{"create", "--umask", "22", "--name", "umask-short", ALPINE})
+ session.WaitWithDefaultTimeout()
+ inspect = podmanTest.Podman([]string{"inspect", "umask-short"})
+ inspect.WaitWithDefaultTimeout()
+ data = inspect.InspectContainerToJSON()
+ Expect(len(data)).To(Equal(1))
+ Expect(data[0].Config.Umask).To(Equal("0022"))
+
+ session = podmanTest.Podman([]string{"create", "--umask", "9999", "--name", "bad", ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ Expect(session.ErrorToString()).To(ContainSubstring("Invalid umask"))
+ })
})
diff --git a/test/e2e/diff_test.go b/test/e2e/diff_test.go
index f854c667e..6a71f4d70 100644
--- a/test/e2e/diff_test.go
+++ b/test/e2e/diff_test.go
@@ -4,7 +4,7 @@ import (
"os"
"sort"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/events_test.go b/test/e2e/events_test.go
index 93c51098f..7bbbe2e03 100644
--- a/test/e2e/events_test.go
+++ b/test/e2e/events_test.go
@@ -7,7 +7,7 @@ import (
"strings"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -136,6 +136,7 @@ var _ = Describe("Podman events", func() {
Expect(ec).To(Equal(0))
test := podmanTest.Podman([]string{"events", "--stream=false", "--format", "json"})
test.WaitWithDefaultTimeout()
+ Expect(test.ExitCode()).To(BeZero())
jsonArr := test.OutputToStringArray()
Expect(len(jsonArr)).To(Not(BeZero()))
eventsMap := make(map[string]string)
@@ -143,10 +144,10 @@ var _ = Describe("Podman events", func() {
Expect(err).To(BeNil())
_, exist := eventsMap["Status"]
Expect(exist).To(BeTrue())
- Expect(test.ExitCode()).To(BeZero())
test = podmanTest.Podman([]string{"events", "--stream=false", "--format", "{{json.}}"})
test.WaitWithDefaultTimeout()
+ Expect(test.ExitCode()).To(BeZero())
jsonArr = test.OutputToStringArray()
Expect(len(jsonArr)).To(Not(BeZero()))
eventsMap = make(map[string]string)
@@ -154,6 +155,5 @@ var _ = Describe("Podman events", func() {
Expect(err).To(BeNil())
_, exist = eventsMap["Status"]
Expect(exist).To(BeTrue())
- Expect(test.ExitCode()).To(BeZero())
})
})
diff --git a/test/e2e/exec_test.go b/test/e2e/exec_test.go
index 0e60c4a7d..f5d15d3bd 100644
--- a/test/e2e/exec_test.go
+++ b/test/e2e/exec_test.go
@@ -5,7 +5,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/exists_test.go b/test/e2e/exists_test.go
index f509bdff6..1076dfc61 100644
--- a/test/e2e/exists_test.go
+++ b/test/e2e/exists_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/export_test.go b/test/e2e/export_test.go
index dda1c5a62..4faacd626 100644
--- a/test/e2e/export_test.go
+++ b/test/e2e/export_test.go
@@ -4,7 +4,7 @@ import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/generate_kube_test.go b/test/e2e/generate_kube_test.go
index 987e4779c..1ec8d51c1 100644
--- a/test/e2e/generate_kube_test.go
+++ b/test/e2e/generate_kube_test.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/ghodss/yaml"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
@@ -254,8 +252,6 @@ var _ = Describe("Podman generate kube", func() {
})
It("podman generate with user and reimport kube on pod", func() {
- // This test fails on ubuntu due to https://github.com/seccomp/containers-golang/pull/27
- SkipIfNotFedora()
podName := "toppod"
_, rc, _ := podmanTest.CreatePod(podName)
Expect(rc).To(Equal(0))
diff --git a/test/e2e/generate_systemd_test.go b/test/e2e/generate_systemd_test.go
index 63c12d2e8..d114744c4 100644
--- a/test/e2e/generate_systemd_test.go
+++ b/test/e2e/generate_systemd_test.go
@@ -6,7 +6,7 @@ import (
"io/ioutil"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/healthcheck_run_test.go b/test/e2e/healthcheck_run_test.go
index c92b908be..c020860ea 100644
--- a/test/e2e/healthcheck_run_test.go
+++ b/test/e2e/healthcheck_run_test.go
@@ -5,7 +5,7 @@ import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/history_test.go b/test/e2e/history_test.go
index 3ecee5d49..fea3f4d43 100644
--- a/test/e2e/history_test.go
+++ b/test/e2e/history_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/images_test.go b/test/e2e/images_test.go
index 6c2be1a4f..b22964dc1 100644
--- a/test/e2e/images_test.go
+++ b/test/e2e/images_test.go
@@ -6,7 +6,7 @@ import (
"sort"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/docker/go-units"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
diff --git a/test/e2e/import_test.go b/test/e2e/import_test.go
index 92ee49b8b..feedb2a31 100644
--- a/test/e2e/import_test.go
+++ b/test/e2e/import_test.go
@@ -6,7 +6,7 @@ import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/info_test.go b/test/e2e/info_test.go
index 8aa9712fd..6ca75848c 100644
--- a/test/e2e/info_test.go
+++ b/test/e2e/info_test.go
@@ -7,8 +7,8 @@ import (
"os/exec"
"path/filepath"
- "github.com/containers/libpod/v2/pkg/rootless"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/init_test.go b/test/e2e/init_test.go
index 1bf07dcc8..068da5f2a 100644
--- a/test/e2e/init_test.go
+++ b/test/e2e/init_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/inspect_test.go b/test/e2e/inspect_test.go
index eaecf2837..f7b953356 100644
--- a/test/e2e/inspect_test.go
+++ b/test/e2e/inspect_test.go
@@ -4,7 +4,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/opencontainers/selinux/go-selinux"
diff --git a/test/e2e/kill_test.go b/test/e2e/kill_test.go
index 449b6da24..3984c3414 100644
--- a/test/e2e/kill_test.go
+++ b/test/e2e/kill_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/libpod_suite_remote_test.go b/test/e2e/libpod_suite_remote_test.go
index 7a067e861..874789b5e 100644
--- a/test/e2e/libpod_suite_remote_test.go
+++ b/test/e2e/libpod_suite_remote_test.go
@@ -15,7 +15,7 @@ import (
"syscall"
"time"
- "github.com/containers/libpod/v2/pkg/rootless"
+ "github.com/containers/podman/v2/pkg/rootless"
"github.com/onsi/ginkgo"
)
@@ -28,11 +28,6 @@ func SkipIfRootless() {
ginkgo.Skip("This function is not enabled for rootless podman")
}
}
-func SkipIfRootlessV2() {
- if os.Geteuid() != 0 {
- ginkgo.Skip("This function is not enabled for v2 rootless podman")
- }
-}
// Podman is the exec call to podman on the filesystem
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
@@ -219,5 +214,3 @@ func (p *PodmanTestIntegration) DelayForService() error {
func populateCache(podman *PodmanTestIntegration) {}
func removeCache() {}
-func SkipIfCgroupV1() {}
-func SkipIfCgroupV2() {}
diff --git a/test/e2e/libpod_suite_test.go b/test/e2e/libpod_suite_test.go
index 105fcf6a8..bfd898108 100644
--- a/test/e2e/libpod_suite_test.go
+++ b/test/e2e/libpod_suite_test.go
@@ -9,44 +9,18 @@ import (
"path/filepath"
"strings"
- "github.com/containers/libpod/v2/pkg/cgroups"
. "github.com/onsi/ginkgo"
- . "github.com/onsi/gomega"
)
func SkipIfRemote() {
}
-func SkipIfCgroupV1() {
- cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
- Expect(err).To(BeNil())
-
- if !cgroupsv2 {
- Skip("Skip on systems with cgroup V1 systems")
- }
-}
-
-func SkipIfCgroupV2() {
- cgroupsv2, err := cgroups.IsCgroup2UnifiedMode()
- Expect(err).To(BeNil())
-
- if cgroupsv2 {
- Skip("Skip on systems with cgroup V2 systems")
- }
-}
-
func SkipIfRootless() {
if os.Geteuid() != 0 {
Skip("This function is not enabled for rootless podman")
}
}
-func SkipIfRootlessV2() {
- if os.Geteuid() != 0 {
- Skip("This function is not enabled for v2 rootless podman")
- }
-}
-
// Podman is the exec call to podman on the filesystem
func (p *PodmanTestIntegration) Podman(args []string) *PodmanSessionIntegration {
podmanSession := p.PodmanBase(args, false, false)
@@ -72,12 +46,6 @@ func (p *PodmanTestIntegration) PodmanNoEvents(args []string) *PodmanSessionInte
return &PodmanSessionIntegration{podmanSession}
}
-// PodmanAsUser is the exec call to podman on the filesystem with the specified uid/gid and environment
-func (p *PodmanTestIntegration) PodmanAsUser(args []string, uid, gid uint32, cwd string, env []string) *PodmanSessionIntegration {
- podmanSession := p.PodmanAsUserBase(args, uid, gid, cwd, env, false, false, nil)
- return &PodmanSessionIntegration{podmanSession}
-}
-
func (p *PodmanTestIntegration) setDefaultRegistriesConfigEnv() {
defaultFile := filepath.Join(INTEGRATION_ROOT, "test/registries.conf")
os.Setenv("REGISTRIES_CONFIG_PATH", defaultFile)
diff --git a/test/e2e/libpod_suite_varlink_test.go b/test/e2e/libpod_suite_varlink_test.go
index f040f4fea..750c8cd09 100644
--- a/test/e2e/libpod_suite_varlink_test.go
+++ b/test/e2e/libpod_suite_varlink_test.go
@@ -14,7 +14,7 @@ import (
"syscall"
"time"
- "github.com/containers/libpod/v2/pkg/rootless"
+ "github.com/containers/podman/v2/pkg/rootless"
"github.com/onsi/ginkgo"
)
diff --git a/test/e2e/load_test.go b/test/e2e/load_test.go
index df2613334..6a7f15e1f 100644
--- a/test/e2e/load_test.go
+++ b/test/e2e/load_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -7,7 +5,7 @@ import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -125,6 +123,7 @@ var _ = Describe("Podman load", func() {
})
It("podman load directory", func() {
+ SkipIfRemote()
outdir := filepath.Join(podmanTest.TempDir, "alpine")
save := podmanTest.PodmanNoCache([]string{"save", "--format", "oci-dir", "-o", outdir, ALPINE})
@@ -228,6 +227,7 @@ var _ = Describe("Podman load", func() {
})
It("podman load localhost registry from dir", func() {
+ SkipIfRemote()
outfile := filepath.Join(podmanTest.TempDir, "load")
setup := podmanTest.PodmanNoCache([]string{"tag", BB, "hello:world"})
diff --git a/test/e2e/login_logout_test.go b/test/e2e/login_logout_test.go
index 3bdce970b..52357b00a 100644
--- a/test/e2e/login_logout_test.go
+++ b/test/e2e/login_logout_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -11,7 +9,7 @@ import (
"strconv"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
"github.com/onsi/ginkgo/config"
. "github.com/onsi/gomega"
diff --git a/test/e2e/logs_test.go b/test/e2e/logs_test.go
index dd69e4ce8..381336b8b 100644
--- a/test/e2e/logs_test.go
+++ b/test/e2e/logs_test.go
@@ -6,7 +6,7 @@ import (
"os/exec"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/manifest_test.go b/test/e2e/manifest_test.go
index 3bee15bd0..69b7b771b 100644
--- a/test/e2e/manifest_test.go
+++ b/test/e2e/manifest_test.go
@@ -5,7 +5,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/mount_rootless_test.go b/test/e2e/mount_rootless_test.go
new file mode 100644
index 000000000..312258532
--- /dev/null
+++ b/test/e2e/mount_rootless_test.go
@@ -0,0 +1,83 @@
+// +build !remote
+
+package integration
+
+import (
+ "os"
+
+ . "github.com/containers/podman/v2/test/utils"
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+var _ = Describe("Podman mount", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest *PodmanTestIntegration
+ )
+
+ BeforeEach(func() {
+ if os.Geteuid() == 0 {
+ Skip("This function is not enabled for rootfull podman")
+ }
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanTestCreate(tempdir)
+ podmanTest.Setup()
+ podmanTest.SeedImages()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ f := CurrentGinkgoTestDescription()
+ processTestResult(f)
+
+ })
+
+ It("podman mount", func() {
+ setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+ cid := setup.OutputToString()
+
+ mount := podmanTest.Podman([]string{"mount", cid})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).ToNot(Equal(0))
+ Expect(mount.ErrorToString()).To(ContainSubstring("podman unshare"))
+ })
+
+ It("podman unshare podman mount", func() {
+ setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+ cid := setup.OutputToString()
+
+ session := podmanTest.Podman([]string{"unshare", PODMAN_BINARY, "mount", cid})
+ session.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+ })
+
+ It("podman image mount", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ mount := podmanTest.PodmanNoCache([]string{"image", "mount", ALPINE})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).ToNot(Equal(0))
+ Expect(mount.ErrorToString()).To(ContainSubstring("podman unshare"))
+ })
+
+ It("podman unshare image podman mount", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ session := podmanTest.Podman([]string{"unshare", PODMAN_BINARY, "image", "mount", ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+ })
+})
diff --git a/test/e2e/mount_test.go b/test/e2e/mount_test.go
index 36d1f856d..a2b448337 100644
--- a/test/e2e/mount_test.go
+++ b/test/e2e/mount_test.go
@@ -5,7 +5,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -80,6 +80,11 @@ var _ = Describe("Podman mount", func() {
Expect(j.ExitCode()).To(Equal(0))
Expect(j.IsJSONOutputValid()).To(BeTrue())
+ j = podmanTest.Podman([]string{"mount", "--format='{{.foobar}}'"})
+ j.WaitWithDefaultTimeout()
+ Expect(j.ExitCode()).ToNot(Equal(0))
+ Expect(j.ErrorToString()).To(ContainSubstring("unknown --format"))
+
umount := podmanTest.Podman([]string{"umount", cid})
umount.WaitWithDefaultTimeout()
Expect(umount.ExitCode()).To(Equal(0))
@@ -277,4 +282,143 @@ var _ = Describe("Podman mount", func() {
umount.WaitWithDefaultTimeout()
Expect(umount.ExitCode()).To(Equal(0))
})
+
+ It("podman image mount", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ images := podmanTest.PodmanNoCache([]string{"images"})
+ images.WaitWithDefaultTimeout()
+ Expect(images.ExitCode()).To(Equal(0))
+
+ mount := podmanTest.PodmanNoCache([]string{"image", "mount", ALPINE})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+
+ umount := podmanTest.PodmanNoCache([]string{"image", "umount", ALPINE})
+ umount.WaitWithDefaultTimeout()
+ Expect(umount.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(Equal(""))
+
+ // Mount multiple times
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount", ALPINE})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount", ALPINE})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+
+ // Unmount once
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount", ALPINE})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "umount", "--all"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ })
+
+ It("podman mount with json format", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", fedoraMinimal})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ mount := podmanTest.PodmanNoCache([]string{"image", "mount", fedoraMinimal})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+
+ j := podmanTest.PodmanNoCache([]string{"image", "mount", "--format=json"})
+ j.WaitWithDefaultTimeout()
+ Expect(j.ExitCode()).To(Equal(0))
+ Expect(j.IsJSONOutputValid()).To(BeTrue())
+
+ umount := podmanTest.PodmanNoCache([]string{"image", "umount", fedoraMinimal})
+ umount.WaitWithDefaultTimeout()
+ Expect(umount.ExitCode()).To(Equal(0))
+ })
+
+ It("podman mount many", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", fedoraMinimal})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ setup = podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ setup = podmanTest.PodmanNoCache([]string{"pull", "busybox"})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
+ mount1 := podmanTest.PodmanNoCache([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"})
+ mount1.WaitWithDefaultTimeout()
+ Expect(mount1.ExitCode()).To(Equal(0))
+
+ umount := podmanTest.PodmanNoCache([]string{"image", "umount", fedoraMinimal, ALPINE})
+ umount.WaitWithDefaultTimeout()
+ Expect(umount.ExitCode()).To(Equal(0))
+
+ mount := podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(ContainSubstring("busybox"))
+
+ mount1 = podmanTest.PodmanNoCache([]string{"image", "unmount", "busybox"})
+ mount1.WaitWithDefaultTimeout()
+ Expect(mount1.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(Equal(""))
+
+ mount1 = podmanTest.PodmanNoCache([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"})
+ mount1.WaitWithDefaultTimeout()
+ Expect(mount1.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal))
+ Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
+
+ umount = podmanTest.PodmanNoCache([]string{"image", "umount", "--all"})
+ umount.WaitWithDefaultTimeout()
+ Expect(umount.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(Equal(""))
+
+ mount1 = podmanTest.PodmanNoCache([]string{"image", "mount", "--all"})
+ mount1.WaitWithDefaultTimeout()
+ Expect(mount1.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal))
+ Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
+
+ umount = podmanTest.PodmanNoCache([]string{"image", "umount", "--all"})
+ umount.WaitWithDefaultTimeout()
+ Expect(umount.ExitCode()).To(Equal(0))
+
+ mount = podmanTest.PodmanNoCache([]string{"image", "mount"})
+ mount.WaitWithDefaultTimeout()
+ Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount.OutputToString()).To(Equal(""))
+ })
})
diff --git a/test/e2e/namespace_test.go b/test/e2e/namespace_test.go
index 70472f384..916ceada0 100644
--- a/test/e2e/namespace_test.go
+++ b/test/e2e/namespace_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -35,6 +33,7 @@ var _ = Describe("Podman namespaces", func() {
})
It("podman namespace test", func() {
+ SkipIfRemote()
podman1 := podmanTest.Podman([]string{"--namespace", "test1", "run", "-d", ALPINE, "echo", "hello"})
podman1.WaitWithDefaultTimeout()
Expect(podman1.ExitCode()).To(Equal(0))
diff --git a/test/e2e/negative_test.go b/test/e2e/negative_test.go
index 1deaf1f67..9c879fb8b 100644
--- a/test/e2e/negative_test.go
+++ b/test/e2e/negative_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/network_create_test.go b/test/e2e/network_create_test.go
index 83b0ce32c..fcd324cd1 100644
--- a/test/e2e/network_create_test.go
+++ b/test/e2e/network_create_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -10,8 +8,8 @@ import (
"strings"
cniversion "github.com/containernetworking/cni/pkg/version"
- "github.com/containers/libpod/v2/pkg/network"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/network"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/pkg/errors"
@@ -140,6 +138,7 @@ var _ = Describe("Podman network create", func() {
})
It("podman network create with name and subnet", func() {
+ SkipIfRemote()
var (
results []network.NcList
)
diff --git a/test/e2e/network_test.go b/test/e2e/network_test.go
index 85f3566b1..f427afa67 100644
--- a/test/e2e/network_test.go
+++ b/test/e2e/network_test.go
@@ -9,7 +9,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/containers/storage/pkg/stringid"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
diff --git a/test/e2e/pause_test.go b/test/e2e/pause_test.go
index e3256b1e5..db9f92e0c 100644
--- a/test/e2e/pause_test.go
+++ b/test/e2e/pause_test.go
@@ -7,8 +7,8 @@ import (
"path/filepath"
"strings"
- "github.com/containers/libpod/v2/pkg/cgroups"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/cgroups"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/play_kube_test.go b/test/e2e/play_kube_test.go
index 23604f47d..053e27126 100644
--- a/test/e2e/play_kube_test.go
+++ b/test/e2e/play_kube_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -8,9 +6,10 @@ import (
"io/ioutil"
"os"
"path/filepath"
+ "strings"
"text/template"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -50,6 +49,10 @@ spec:
{{ range .Cmd }}
- {{.}}
{{ end }}
+ args:
+ {{ range .Arg }}
+ - {{.}}
+ {{ end }}
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@@ -82,6 +85,11 @@ spec:
{{ end }}
privileged: false
readOnlyRootFilesystem: false
+ ports:
+ - containerPort: {{ .Port }}
+ hostIP: {{ .HostIP }}
+ hostPort: {{ .Port }}
+ protocol: TCP
workingDir: /
{{ end }}
{{ end }}
@@ -129,6 +137,10 @@ spec:
{{ range .Cmd }}
- {{.}}
{{ end }}
+ args:
+ {{ range .Arg }}
+ - {{.}}
+ {{ end }}
env:
- name: PATH
value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@@ -171,6 +183,7 @@ spec:
var (
defaultCtrName = "testCtr"
defaultCtrCmd = []string{"top"}
+ defaultCtrArg = []string{"-d", "1.5"}
defaultCtrImage = ALPINE
defaultPodName = "testPod"
defaultDeploymentName = "testDeployment"
@@ -322,17 +335,20 @@ type Ctr struct {
Name string
Image string
Cmd []string
+ Arg []string
SecurityContext bool
Caps bool
CapAdd []string
CapDrop []string
PullPolicy string
+ HostIP string
+ Port string
}
// getCtr takes a list of ctrOptions and returns a Ctr with sane defaults
// and the configured options
func getCtr(options ...ctrOption) *Ctr {
- c := Ctr{defaultCtrName, defaultCtrImage, defaultCtrCmd, true, false, nil, nil, ""}
+ c := Ctr{defaultCtrName, defaultCtrImage, defaultCtrCmd, defaultCtrArg, true, false, nil, nil, "", "", ""}
for _, option := range options {
option(&c)
}
@@ -347,6 +363,12 @@ func withCmd(cmd []string) ctrOption {
}
}
+func withArg(arg []string) ctrOption {
+ return func(c *Ctr) {
+ c.Arg = arg
+ }
+}
+
func withImage(img string) ctrOption {
return func(c *Ctr) {
c.Image = img
@@ -379,6 +401,13 @@ func withPullPolicy(policy string) ctrOption {
}
}
+func withHostIP(ip string, port string) ctrOption {
+ return func(c *Ctr) {
+ c.HostIP = ip
+ c.Port = port
+ }
+}
+
func getCtrNameInPod(pod *Pod) string {
return fmt.Sprintf("%s-%s", pod.Name, defaultCtrName)
}
@@ -430,6 +459,7 @@ var _ = Describe("Podman generate kube", func() {
})
It("podman play kube test correct command", func() {
+ SkipIfRemote()
pod := getPod()
err := generatePodKubeYaml(pod, kubeYaml)
Expect(err).To(BeNil())
@@ -438,14 +468,52 @@ var _ = Describe("Podman generate kube", func() {
kube.WaitWithDefaultTimeout()
Expect(kube.ExitCode()).To(Equal(0))
- inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod)})
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ .Config.Cmd }}'"})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+ // Use the defined command to override the image's command
+ correctCmd := "[" + strings.Join(defaultCtrCmd, " ") + " " + strings.Join(defaultCtrArg, " ")
+ Expect(inspect.OutputToString()).To(ContainSubstring(correctCmd))
+ })
+
+ It("podman play kube test correct command with only set command in yaml file", func() {
+ SkipIfRemote()
+ pod := getPod(withCtr(getCtr(withCmd([]string{"echo", "hello"}), withArg(nil))))
+ err := generatePodKubeYaml(pod, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ .Config.Cmd }}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(defaultCtrCmd[0]))
+ // Use the defined command to override the image's command, and don't set the args
+ // so the full command in result should not contains the image's command
+ Expect(inspect.OutputToString()).To(ContainSubstring(`[echo hello]`))
+ })
+
+ It("podman play kube test correct command with only set args in yaml file", func() {
+ pod := getPod(withCtr(getCtr(withImage(redis), withCmd(nil), withArg([]string{"echo", "hello"}))))
+ err := generatePodKubeYaml(pod, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(pod), "--format", "'{{ .Config.Cmd }}'"})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+ // this image's ENTRYPOINT is called `docker-entrypoint.sh`
+ // so result should be `docker-entrypoint.sh + withArg(...)`
+ Expect(inspect.OutputToString()).To(ContainSubstring(`[docker-entrypoint.sh echo hello]`))
})
It("podman play kube test correct output", func() {
- p := getPod(withCtr(getCtr(withCmd([]string{"echo", "hello"}))))
+ SkipIfRemote()
+ p := getPod(withCtr(getCtr(withCmd([]string{"echo", "hello"}), withArg([]string{"world"}))))
err := generatePodKubeYaml(p, kubeYaml)
Expect(err).To(BeNil())
@@ -457,12 +525,12 @@ var _ = Describe("Podman generate kube", func() {
logs := podmanTest.Podman([]string{"logs", getCtrNameInPod(p)})
logs.WaitWithDefaultTimeout()
Expect(logs.ExitCode()).To(Equal(0))
- Expect(logs.OutputToString()).To(ContainSubstring("hello"))
+ Expect(logs.OutputToString()).To(ContainSubstring("hello world"))
inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(p), "--format", "'{{ .Config.Cmd }}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
- Expect(inspect.OutputToString()).To(ContainSubstring("hello"))
+ Expect(inspect.OutputToString()).To(ContainSubstring(`[echo hello world]`))
})
It("podman play kube test hostname", func() {
@@ -498,7 +566,7 @@ var _ = Describe("Podman generate kube", func() {
It("podman play kube cap add", func() {
capAdd := "CAP_SYS_ADMIN"
- ctr := getCtr(withCapAdd([]string{capAdd}), withCmd([]string{"cat", "/proc/self/status"}))
+ ctr := getCtr(withCapAdd([]string{capAdd}), withCmd([]string{"cat", "/proc/self/status"}), withArg(nil))
pod := getPod(withCtr(ctr))
err := generatePodKubeYaml(pod, kubeYaml)
@@ -548,6 +616,7 @@ var _ = Describe("Podman generate kube", func() {
})
It("podman play kube seccomp container level", func() {
+ SkipIfRemote()
// expect play kube is expected to set a seccomp label if it's applied as an annotation
jsonFile, err := podmanTest.CreateSeccompJson(seccompPwdEPERM)
if err != nil {
@@ -556,7 +625,7 @@ var _ = Describe("Podman generate kube", func() {
}
ctrAnnotation := "container.seccomp.security.alpha.kubernetes.io/" + defaultCtrName
- ctr := getCtr(withCmd([]string{"pwd"}))
+ ctr := getCtr(withCmd([]string{"pwd"}), withArg(nil))
pod := getPod(withCtr(ctr), withAnnotation(ctrAnnotation, "localhost/"+filepath.Base(jsonFile)))
err = generatePodKubeYaml(pod, kubeYaml)
@@ -574,6 +643,7 @@ var _ = Describe("Podman generate kube", func() {
})
It("podman play kube seccomp pod level", func() {
+ SkipIfRemote()
// expect play kube is expected to set a seccomp label if it's applied as an annotation
jsonFile, err := podmanTest.CreateSeccompJson(seccompPwdEPERM)
if err != nil {
@@ -582,7 +652,7 @@ var _ = Describe("Podman generate kube", func() {
}
defer os.Remove(jsonFile)
- ctr := getCtr(withCmd([]string{"pwd"}))
+ ctr := getCtr(withCmd([]string{"pwd"}), withArg(nil))
pod := getPod(withCtr(ctr), withAnnotation("seccomp.security.alpha.kubernetes.io/pod", "localhost/"+filepath.Base(jsonFile)))
err = generatePodKubeYaml(pod, kubeYaml)
@@ -725,6 +795,7 @@ spec:
// Deployment related tests
It("podman play kube deployment 1 replica test correct command", func() {
+ SkipIfRemote()
deployment := getDeployment()
err := generateDeploymentKubeYaml(deployment, kubeYaml)
Expect(err).To(BeNil())
@@ -734,13 +805,16 @@ spec:
Expect(kube.ExitCode()).To(Equal(0))
podNames := getPodNamesInDeployment(deployment)
- inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(&podNames[0])})
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(&podNames[0]), "--format", "'{{ .Config.Cmd }}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(defaultCtrCmd[0]))
+ // yaml's command shuold override the image's Entrypoint
+ correctCmd := "[" + strings.Join(defaultCtrCmd, " ") + " " + strings.Join(defaultCtrArg, " ")
+ Expect(inspect.OutputToString()).To(ContainSubstring(correctCmd))
})
It("podman play kube deployment more than 1 replica test correct command", func() {
+ SkipIfRemote()
var i, numReplicas int32
numReplicas = 5
deployment := getDeployment(withReplicas(numReplicas))
@@ -752,11 +826,31 @@ spec:
Expect(kube.ExitCode()).To(Equal(0))
podNames := getPodNamesInDeployment(deployment)
+ correctCmd := "[" + strings.Join(defaultCtrCmd, " ") + " " + strings.Join(defaultCtrArg, " ")
for i = 0; i < numReplicas; i++ {
- inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(&podNames[i])})
+ inspect := podmanTest.Podman([]string{"inspect", getCtrNameInPod(&podNames[i]), "--format", "'{{ .Config.Cmd }}'"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
- Expect(inspect.OutputToString()).To(ContainSubstring(defaultCtrCmd[0]))
+ Expect(inspect.OutputToString()).To(ContainSubstring(correctCmd))
}
})
+
+ It("podman play kube test with network portbindings", func() {
+ ip := "127.0.0.100"
+ port := "5000"
+ ctr := getCtr(withHostIP(ip, port), withImage(BB))
+
+ pod := getPod(withCtr(ctr))
+ err := generatePodKubeYaml(pod, kubeYaml)
+ Expect(err).To(BeNil())
+
+ kube := podmanTest.Podman([]string{"play", "kube", kubeYaml})
+ kube.WaitWithDefaultTimeout()
+ Expect(kube.ExitCode()).To(Equal(0))
+
+ inspect := podmanTest.Podman([]string{"port", getCtrNameInPod(pod)})
+ inspect.WaitWithDefaultTimeout()
+ Expect(inspect.ExitCode()).To(Equal(0))
+ Expect(inspect.OutputToString()).To(Equal("5000/tcp -> 127.0.0.100:5000"))
+ })
})
diff --git a/test/e2e/pod_create_test.go b/test/e2e/pod_create_test.go
index 57737ad59..5c9b41c62 100644
--- a/test/e2e/pod_create_test.go
+++ b/test/e2e/pod_create_test.go
@@ -7,7 +7,8 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -238,17 +239,20 @@ var _ = Describe("Podman pod create", func() {
})
It("podman create pod with IP address", func() {
- SkipIfRootless()
name := "test"
ip := GetRandomIPAddress()
podCreate := podmanTest.Podman([]string{"pod", "create", "--ip", ip, "--name", name})
podCreate.WaitWithDefaultTimeout()
- Expect(podCreate.ExitCode()).To(Equal(0))
-
- podResolvConf := podmanTest.Podman([]string{"run", "--pod", name, "-ti", "--rm", ALPINE, "ip", "addr"})
- podResolvConf.WaitWithDefaultTimeout()
- Expect(podResolvConf.ExitCode()).To(Equal(0))
- Expect(strings.Contains(podResolvConf.OutputToString(), ip)).To(BeTrue())
+ // Rootless should error
+ if rootless.IsRootless() {
+ Expect(podCreate.ExitCode()).To(Equal(125))
+ } else {
+ Expect(podCreate.ExitCode()).To(Equal(0))
+ podResolvConf := podmanTest.Podman([]string{"run", "--pod", name, "-ti", "--rm", ALPINE, "ip", "addr"})
+ podResolvConf.WaitWithDefaultTimeout()
+ Expect(podResolvConf.ExitCode()).To(Equal(0))
+ Expect(strings.Contains(podResolvConf.OutputToString(), ip)).To(BeTrue())
+ }
})
It("podman create pod with IP address and no infra should fail", func() {
@@ -262,17 +266,20 @@ var _ = Describe("Podman pod create", func() {
It("podman create pod with MAC address", func() {
SkipIfRemote()
- SkipIfRootless()
name := "test"
mac := "92:d0:c6:0a:29:35"
podCreate := podmanTest.Podman([]string{"pod", "create", "--mac-address", mac, "--name", name})
podCreate.WaitWithDefaultTimeout()
- Expect(podCreate.ExitCode()).To(Equal(0))
-
- podResolvConf := podmanTest.Podman([]string{"run", "--pod", name, "-ti", "--rm", ALPINE, "ip", "addr"})
- podResolvConf.WaitWithDefaultTimeout()
- Expect(podResolvConf.ExitCode()).To(Equal(0))
- Expect(strings.Contains(podResolvConf.OutputToString(), mac)).To(BeTrue())
+ // Rootless should error
+ if rootless.IsRootless() {
+ Expect(podCreate.ExitCode()).To(Equal(125))
+ } else {
+ Expect(podCreate.ExitCode()).To(Equal(0))
+ podResolvConf := podmanTest.Podman([]string{"run", "--pod", name, "-ti", "--rm", ALPINE, "ip", "addr"})
+ podResolvConf.WaitWithDefaultTimeout()
+ Expect(podResolvConf.ExitCode()).To(Equal(0))
+ Expect(strings.Contains(podResolvConf.OutputToString(), mac)).To(BeTrue())
+ }
})
It("podman create pod with MAC address and no infra should fail", func() {
diff --git a/test/e2e/pod_infra_container_test.go b/test/e2e/pod_infra_container_test.go
index 49105310b..98f1b5174 100644
--- a/test/e2e/pod_infra_container_test.go
+++ b/test/e2e/pod_infra_container_test.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
"strconv"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -227,6 +225,7 @@ var _ = Describe("Podman pod create", func() {
})
It("podman pod container can override pod pid NS", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"pod", "create", "--share", "pid"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -258,6 +257,7 @@ var _ = Describe("Podman pod create", func() {
})
It("podman pod container can override pod not sharing pid", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"pod", "create", "--share", "net"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -283,6 +283,7 @@ var _ = Describe("Podman pod create", func() {
})
It("podman pod container can override pod ipc NS", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"pod", "create", "--share", "ipc"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
diff --git a/test/e2e/pod_inspect_test.go b/test/e2e/pod_inspect_test.go
index 16bf1c4c9..ccdf0a423 100644
--- a/test/e2e/pod_inspect_test.go
+++ b/test/e2e/pod_inspect_test.go
@@ -4,9 +4,8 @@ import (
"encoding/json"
"os"
- "github.com/containers/libpod/v2/libpod/define"
-
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/libpod/define"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_kill_test.go b/test/e2e/pod_kill_test.go
index 8f39f969a..d7462e16d 100644
--- a/test/e2e/pod_kill_test.go
+++ b/test/e2e/pod_kill_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_pause_test.go b/test/e2e/pod_pause_test.go
index 192738809..ec06b7df7 100644
--- a/test/e2e/pod_pause_test.go
+++ b/test/e2e/pod_pause_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_pod_namespaces.go b/test/e2e/pod_pod_namespaces.go
index fce131e20..f72f98b5f 100644
--- a/test/e2e/pod_pod_namespaces.go
+++ b/test/e2e/pod_pod_namespaces.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -63,6 +61,7 @@ var _ = Describe("Podman pod create", func() {
})
It("podman pod container dontshare PIDNS", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"pod", "create"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
diff --git a/test/e2e/pod_prune_test.go b/test/e2e/pod_prune_test.go
index 21dfe2ebf..0346cfdc8 100644
--- a/test/e2e/pod_prune_test.go
+++ b/test/e2e/pod_prune_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_ps_test.go b/test/e2e/pod_ps_test.go
index 83852f278..602d9d577 100644
--- a/test/e2e/pod_ps_test.go
+++ b/test/e2e/pod_ps_test.go
@@ -5,7 +5,7 @@ import (
"os"
"sort"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_restart_test.go b/test/e2e/pod_restart_test.go
index 77a65a922..9fe6c1a85 100644
--- a/test/e2e/pod_restart_test.go
+++ b/test/e2e/pod_restart_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_rm_test.go b/test/e2e/pod_rm_test.go
index 7395cada7..918d0eb32 100644
--- a/test/e2e/pod_rm_test.go
+++ b/test/e2e/pod_rm_test.go
@@ -7,7 +7,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_start_test.go b/test/e2e/pod_start_test.go
index 371339f51..2f0160e99 100644
--- a/test/e2e/pod_start_test.go
+++ b/test/e2e/pod_start_test.go
@@ -7,7 +7,7 @@ import (
"strconv"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_stats_test.go b/test/e2e/pod_stats_test.go
index 74d1c1838..04475a799 100644
--- a/test/e2e/pod_stats_test.go
+++ b/test/e2e/pod_stats_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_stop_test.go b/test/e2e/pod_stop_test.go
index dec59b3db..2363974cc 100644
--- a/test/e2e/pod_stop_test.go
+++ b/test/e2e/pod_stop_test.go
@@ -4,7 +4,7 @@ import (
"io/ioutil"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/pod_top_test.go b/test/e2e/pod_top_test.go
index f86d23d84..2cb7a623e 100644
--- a/test/e2e/pod_top_test.go
+++ b/test/e2e/pod_top_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -7,7 +5,7 @@ import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -58,6 +56,7 @@ var _ = Describe("Podman top", func() {
})
It("podman pod top on pod", func() {
+ SkipIfRemote()
_, ec, podid := podmanTest.CreatePod("")
Expect(ec).To(Equal(0))
diff --git a/test/e2e/port_test.go b/test/e2e/port_test.go
index 897505588..fce092e2d 100644
--- a/test/e2e/port_test.go
+++ b/test/e2e/port_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -7,7 +5,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -49,6 +47,7 @@ var _ = Describe("Podman port", func() {
})
It("podman port -l nginx", func() {
+ SkipIfRemote()
session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
@@ -64,6 +63,7 @@ var _ = Describe("Podman port", func() {
})
It("podman container port -l nginx", func() {
+ SkipIfRemote()
session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
@@ -79,6 +79,7 @@ var _ = Describe("Podman port", func() {
})
It("podman port -l port nginx", func() {
+ SkipIfRemote()
session, cid := podmanTest.RunNginxWithHealthCheck("")
Expect(session.ExitCode()).To(Equal(0))
@@ -127,18 +128,18 @@ var _ = Describe("Podman port", func() {
lock2 := GetPortLock("5001")
defer lock2.Unlock()
- setup := podmanTest.Podman([]string{"run", "-dt", "-p", "5000:5000", "-p", "5001:5001", ALPINE, "top"})
+ setup := podmanTest.Podman([]string{"run", "--name", "test", "-dt", "-p", "5000:5000", "-p", "5001:5001", ALPINE, "top"})
setup.WaitWithDefaultTimeout()
Expect(setup.ExitCode()).To(BeZero())
// Check that the first port was honored
- result1 := podmanTest.Podman([]string{"port", "-l", "5000"})
+ result1 := podmanTest.Podman([]string{"port", "test", "5000"})
result1.WaitWithDefaultTimeout()
Expect(result1.ExitCode()).To(BeZero())
Expect(result1.LineInOuputStartsWith("0.0.0.0:5000")).To(BeTrue())
// Check that the second port was honored
- result2 := podmanTest.Podman([]string{"port", "-l", "5001"})
+ result2 := podmanTest.Podman([]string{"port", "test", "5001"})
result2.WaitWithDefaultTimeout()
Expect(result2.ExitCode()).To(BeZero())
Expect(result2.LineInOuputStartsWith("0.0.0.0:5001")).To(BeTrue())
diff --git a/test/e2e/prune_test.go b/test/e2e/prune_test.go
index a51b9565c..1d592a42d 100644
--- a/test/e2e/prune_test.go
+++ b/test/e2e/prune_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/ps_test.go b/test/e2e/ps_test.go
index 152c85704..281968fcd 100644
--- a/test/e2e/ps_test.go
+++ b/test/e2e/ps_test.go
@@ -7,7 +7,7 @@ import (
"sort"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/docker/go-units"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
diff --git a/test/e2e/pull_test.go b/test/e2e/pull_test.go
index eec2877e8..6d1cb6cbc 100644
--- a/test/e2e/pull_test.go
+++ b/test/e2e/pull_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -9,7 +7,7 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -237,6 +235,7 @@ var _ = Describe("Podman pull", func() {
})
It("podman pull from docker-archive", func() {
+ SkipIfRemote()
podmanTest.RestoreArtifact(ALPINE)
tarfn := filepath.Join(podmanTest.TempDir, "alp.tar")
session := podmanTest.PodmanNoCache([]string{"save", "-o", tarfn, "alpine"})
@@ -255,6 +254,7 @@ var _ = Describe("Podman pull", func() {
})
It("podman pull from oci-archive", func() {
+ SkipIfRemote()
podmanTest.RestoreArtifact(ALPINE)
tarfn := filepath.Join(podmanTest.TempDir, "oci-alp.tar")
session := podmanTest.PodmanNoCache([]string{"save", "--format", "oci-archive", "-o", tarfn, "alpine"})
@@ -273,6 +273,7 @@ var _ = Describe("Podman pull", func() {
})
It("podman pull from local directory", func() {
+ SkipIfRemote()
podmanTest.RestoreArtifact(ALPINE)
dirpath := filepath.Join(podmanTest.TempDir, "alpine")
os.MkdirAll(dirpath, os.ModePerm)
@@ -297,6 +298,7 @@ var _ = Describe("Podman pull", func() {
})
It("podman pull from local OCI directory", func() {
+ SkipIfRemote()
podmanTest.RestoreArtifact(ALPINE)
dirpath := filepath.Join(podmanTest.TempDir, "alpine")
os.MkdirAll(dirpath, os.ModePerm)
diff --git a/test/e2e/push_test.go b/test/e2e/push_test.go
index a05291d06..1ff2095c0 100644
--- a/test/e2e/push_test.go
+++ b/test/e2e/push_test.go
@@ -8,8 +8,8 @@ import (
"path/filepath"
"strings"
- "github.com/containers/libpod/v2/pkg/rootless"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/restart_test.go b/test/e2e/restart_test.go
index e5cab500f..4348eae3b 100644
--- a/test/e2e/restart_test.go
+++ b/test/e2e/restart_test.go
@@ -4,7 +4,7 @@ import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/rm_test.go b/test/e2e/rm_test.go
index 7ddfae0cb..764d25ba5 100644
--- a/test/e2e/rm_test.go
+++ b/test/e2e/rm_test.go
@@ -4,7 +4,7 @@ import (
"io/ioutil"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/rmi_test.go b/test/e2e/rmi_test.go
index 73a54039a..4db6a1962 100644
--- a/test/e2e/rmi_test.go
+++ b/test/e2e/rmi_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/run_apparmor_test.go b/test/e2e/run_apparmor_test.go
new file mode 100644
index 000000000..53cac9529
--- /dev/null
+++ b/test/e2e/run_apparmor_test.go
@@ -0,0 +1,158 @@
+// +build !remote
+
+package integration
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+
+ "github.com/containers/common/pkg/apparmor"
+ . "github.com/containers/podman/v2/test/utils"
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+)
+
+func skipIfAppArmorEnabled() {
+ if apparmor.IsEnabled() {
+ Skip("Apparmor is enabled")
+ }
+}
+func skipIfAppArmorDisabled() {
+ if !apparmor.IsEnabled() {
+ Skip("Apparmor is not enabled")
+ }
+}
+
+var _ = Describe("Podman run", func() {
+ var (
+ tempdir string
+ err error
+ podmanTest *PodmanTestIntegration
+ )
+
+ BeforeEach(func() {
+ tempdir, err = CreateTempDirInTempDir()
+ if err != nil {
+ os.Exit(1)
+ }
+ podmanTest = PodmanTestCreate(tempdir)
+ podmanTest.Setup()
+ podmanTest.SeedImages()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ f := CurrentGinkgoTestDescription()
+ processTestResult(f)
+
+ })
+
+ It("podman run apparmor default", func() {
+ skipIfAppArmorDisabled()
+ session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal(apparmor.Profile))
+ })
+
+ It("podman run no apparmor --privileged", func() {
+ skipIfAppArmorDisabled()
+ session := podmanTest.Podman([]string{"create", "--privileged", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal(""))
+ })
+
+ It("podman run no apparmor --security-opt=apparmor.Profile --privileged", func() {
+ skipIfAppArmorDisabled()
+ session := podmanTest.Podman([]string{"create", "--security-opt", fmt.Sprintf("apparmor=%s", apparmor.Profile), "--privileged", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal(apparmor.Profile))
+ })
+
+ It("podman run apparmor aa-test-profile", func() {
+ skipIfAppArmorDisabled()
+ aaProfile := `
+#include <tunables/global>
+profile aa-test-profile flags=(attach_disconnected,mediate_deleted) {
+ #include <abstractions/base>
+ deny mount,
+ deny /sys/[^f]*/** wklx,
+ deny /sys/f[^s]*/** wklx,
+ deny /sys/fs/[^c]*/** wklx,
+ deny /sys/fs/c[^g]*/** wklx,
+ deny /sys/fs/cg[^r]*/** wklx,
+ deny /sys/firmware/efi/efivars/** rwklx,
+ deny /sys/kernel/security/** rwklx,
+}
+`
+ aaFile := filepath.Join(os.TempDir(), "aaFile")
+ Expect(ioutil.WriteFile(aaFile, []byte(aaProfile), 0755)).To(BeNil())
+ parse := SystemExec("apparmor_parser", []string{"-Kr", aaFile})
+ Expect(parse.ExitCode()).To(Equal(0))
+
+ session := podmanTest.Podman([]string{"create", "--security-opt", "apparmor=aa-test-profile", "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal("aa-test-profile"))
+ })
+
+ It("podman run apparmor invalid", func() {
+ skipIfAppArmorDisabled()
+ session := podmanTest.Podman([]string{"run", "--security-opt", "apparmor=invalid", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).ToNot(Equal(0))
+ })
+
+ It("podman run apparmor unconfined", func() {
+ skipIfAppArmorDisabled()
+ session := podmanTest.Podman([]string{"create", "--security-opt", "apparmor=unconfined", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal("unconfined"))
+ })
+
+ It("podman run apparmor disabled --security-opt apparmor fails", func() {
+ skipIfAppArmorEnabled()
+ // Should fail if user specifies apparmor on disabled system
+ session := podmanTest.Podman([]string{"create", "--security-opt", fmt.Sprintf("apparmor=%s", apparmor.Profile), ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).ToNot(Equal(0))
+ })
+
+ It("podman run apparmor disabled no default", func() {
+ skipIfAppArmorEnabled()
+ // Should succeed if user specifies apparmor on disabled system
+ session := podmanTest.Podman([]string{"create", ALPINE, "ls"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ cid := session.OutputToString()
+ // Verify that apparmor.Profile is being set
+ inspect := podmanTest.InspectContainer(cid)
+ Expect(inspect[0].AppArmorProfile).To(Equal(""))
+ })
+})
diff --git a/test/e2e/run_cgroup_parent_test.go b/test/e2e/run_cgroup_parent_test.go
index ed3292139..992f3eda2 100644
--- a/test/e2e/run_cgroup_parent_test.go
+++ b/test/e2e/run_cgroup_parent_test.go
@@ -5,7 +5,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_cleanup_test.go b/test/e2e/run_cleanup_test.go
index 7c83acc40..f293e709a 100644
--- a/test/e2e/run_cleanup_test.go
+++ b/test/e2e/run_cleanup_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -35,6 +33,7 @@ var _ = Describe("Podman run exit", func() {
})
It("podman run -d mount cleanup test", func() {
+ SkipIfRemote()
SkipIfRootless()
result := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
diff --git a/test/e2e/run_cpu_test.go b/test/e2e/run_cpu_test.go
index b4785c513..401447579 100644
--- a/test/e2e/run_cpu_test.go
+++ b/test/e2e/run_cpu_test.go
@@ -1,13 +1,11 @@
-// +build !remote
-
package integration
import (
"io/ioutil"
"os"
- "github.com/containers/libpod/v2/pkg/cgroups"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/cgroups"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_device_test.go b/test/e2e/run_device_test.go
index a5e1e0269..43c258eac 100644
--- a/test/e2e/run_device_test.go
+++ b/test/e2e/run_device_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -75,11 +73,17 @@ var _ = Describe("Podman run device", func() {
It("podman run device host device and container device parameter are directories", func() {
SkipIfRootless()
- SystemExec("mkdir", []string{"/dev/foodevdir"})
- SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"})
- session := podmanTest.Podman([]string{"run", "-q", "--device", "/dev/foodevdir:/dev/bar", ALPINE, "ls", "/dev/bar/null"})
+ Expect(os.MkdirAll("/dev/foodevdir", os.ModePerm)).To(BeNil())
+ defer os.RemoveAll("/dev/foodevdir")
+
+ mknod := SystemExec("mknod", []string{"/dev/foodevdir/null", "c", "1", "3"})
+ mknod.WaitWithDefaultTimeout()
+ Expect(mknod.ExitCode()).To(Equal(0))
+
+ session := podmanTest.Podman([]string{"run", "-q", "--device", "/dev/foodevdir:/dev/bar", ALPINE, "stat", "-c%t:%T", "/dev/bar/null"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("1:3"))
})
It("podman run device host device with --privileged", func() {
diff --git a/test/e2e/run_dns_test.go b/test/e2e/run_dns_test.go
index beed80fd2..0ec2535aa 100644
--- a/test/e2e/run_dns_test.go
+++ b/test/e2e/run_dns_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_entrypoint_test.go b/test/e2e/run_entrypoint_test.go
index 741019770..c1061be85 100644
--- a/test/e2e/run_entrypoint_test.go
+++ b/test/e2e/run_entrypoint_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -46,6 +44,7 @@ CMD []
})
It("podman run entrypoint", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
`
@@ -57,6 +56,7 @@ ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
})
It("podman run entrypoint with cmd", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
CMD [ "-v"]
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
@@ -69,6 +69,7 @@ ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
})
It("podman run entrypoint with user cmd overrides image cmd", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
CMD [ "-v"]
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
@@ -81,6 +82,7 @@ ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
})
It("podman run entrypoint with user cmd no image cmd", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
`
@@ -92,6 +94,7 @@ ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
})
It("podman run user entrypoint overrides image entrypoint and image cmd", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
CMD ["-i"]
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
@@ -109,6 +112,7 @@ ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
})
It("podman run user entrypoint with command overrides image entrypoint and image cmd", func() {
+ SkipIfRemote()
dockerfile := `FROM docker.io/library/alpine:latest
CMD ["-i"]
ENTRYPOINT ["grep", "Alpine", "/etc/os-release"]
diff --git a/test/e2e/run_env_test.go b/test/e2e/run_env_test.go
index c6fb1ad1b..801a3d014 100644
--- a/test/e2e/run_env_test.go
+++ b/test/e2e/run_env_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_exit_test.go b/test/e2e/run_exit_test.go
index 2382fb279..0579e29fa 100644
--- a/test/e2e/run_exit_test.go
+++ b/test/e2e/run_exit_test.go
@@ -3,8 +3,8 @@ package integration
import (
"os"
- "github.com/containers/libpod/v2/libpod/define"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/libpod/define"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_memory_test.go b/test/e2e/run_memory_test.go
index 5ae45b62f..21ad00b43 100644
--- a/test/e2e/run_memory_test.go
+++ b/test/e2e/run_memory_test.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
- "github.com/containers/libpod/v2/pkg/cgroups"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/cgroups"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_networking_test.go b/test/e2e/run_networking_test.go
index 467d0c5ef..bf96db197 100644
--- a/test/e2e/run_networking_test.go
+++ b/test/e2e/run_networking_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -235,11 +233,40 @@ var _ = Describe("Podman run networking", func() {
Expect(ncBusy).To(ExitWithError())
})
+ It("podman run network expose host port 8081 to container port 8000 using rootlesskit port handler", func() {
+ session := podmanTest.Podman([]string{"run", "--network", "slirp4netns:port_handler=rootlesskit", "-dt", "-p", "8081:8000", ALPINE, "/bin/sh"})
+ session.Wait(30)
+ Expect(session.ExitCode()).To(Equal(0))
+
+ ncBusy := SystemExec("nc", []string{"-l", "-p", "8081"})
+ Expect(ncBusy).To(ExitWithError())
+ })
+
+ It("podman run network expose host port 8082 to container port 8000 using slirp4netns port handler", func() {
+ session := podmanTest.Podman([]string{"run", "--network", "slirp4netns:port_handler=slirp4netns", "-dt", "-p", "8082:8000", ALPINE, "/bin/sh"})
+ session.Wait(30)
+ Expect(session.ExitCode()).To(Equal(0))
+ ncBusy := SystemExec("nc", []string{"-l", "-p", "8082"})
+ Expect(ncBusy).To(ExitWithError())
+ })
+
+ It("podman run network expose host port 8080 to container port 8000 using invalid port handler", func() {
+ session := podmanTest.Podman([]string{"run", "--network", "slirp4netns:port_handler=invalid", "-dt", "-p", "8080:8000", ALPINE, "/bin/sh"})
+ session.Wait(30)
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ })
+
+ It("podman run slirp4netns network with host loopback", func() {
+ session := podmanTest.Podman([]string{"run", "--network", "slirp4netns:allow_host_loopback=true", ALPINE, "ping", "-c1", "10.0.2.2"})
+ session.Wait(30)
+ Expect(session.ExitCode()).To(Equal(0))
+ })
+
It("podman run network expose ports in image metadata", func() {
- session := podmanTest.Podman([]string{"create", "-dt", "-P", nginx})
+ session := podmanTest.Podman([]string{"create", "--name", "test", "-dt", "-P", nginx})
session.Wait(90)
Expect(session.ExitCode()).To(Equal(0))
- results := podmanTest.Podman([]string{"inspect", "-l"})
+ results := podmanTest.Podman([]string{"inspect", "test"})
results.Wait(30)
Expect(results.ExitCode()).To(Equal(0))
Expect(results.OutputToString()).To(ContainSubstring(`"80/tcp":`))
@@ -248,11 +275,11 @@ var _ = Describe("Podman run networking", func() {
It("podman run network expose duplicate host port results in error", func() {
SkipIfRootless()
- session := podmanTest.Podman([]string{"run", "-dt", "-p", "80", ALPINE, "/bin/sh"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "-dt", "-p", "80", ALPINE, "/bin/sh"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- inspect := podmanTest.Podman([]string{"inspect", "-l"})
+ inspect := podmanTest.Podman([]string{"inspect", "test"})
inspect.WaitWithDefaultTimeout()
Expect(inspect.ExitCode()).To(Equal(0))
@@ -407,6 +434,7 @@ var _ = Describe("Podman run networking", func() {
})
It("podman run in custom CNI network with --static-ip", func() {
+ SkipIfRemote()
SkipIfRootless()
netName := "podmantestnetwork"
ipAddr := "10.20.30.128"
diff --git a/test/e2e/run_ns_test.go b/test/e2e/run_ns_test.go
index 96ca2fc56..5242e04d2 100644
--- a/test/e2e/run_ns_test.go
+++ b/test/e2e/run_ns_test.go
@@ -1,12 +1,11 @@
-// +build !remote
-
package integration
import (
"os"
+ "os/exec"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -104,4 +103,34 @@ var _ = Describe("Podman run ns", func() {
session.WaitWithDefaultTimeout()
Expect(session).To(ExitWithError())
})
+
+ It("podman run --ipc=host --pid=host", func() {
+ cmd := exec.Command("ls", "-l", "/proc/self/ns/pid")
+ res, err := cmd.Output()
+ Expect(err).To(BeNil())
+ fields := strings.Split(string(res), " ")
+ hostPidNS := strings.TrimSuffix(fields[len(fields)-1], "\n")
+
+ cmd = exec.Command("ls", "-l", "/proc/self/ns/ipc")
+ res, err = cmd.Output()
+ Expect(err).To(BeNil())
+ fields = strings.Split(string(res), " ")
+ hostIpcNS := strings.TrimSuffix(fields[len(fields)-1], "\n")
+
+ session := podmanTest.Podman([]string{"run", "--ipc=host", "--pid=host", ALPINE, "ls", "-l", "/proc/self/ns/pid"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ fields = strings.Split(session.OutputToString(), " ")
+ ctrPidNS := strings.TrimSuffix(fields[len(fields)-1], "\n")
+
+ session = podmanTest.Podman([]string{"run", "--ipc=host", "--pid=host", ALPINE, "ls", "-l", "/proc/self/ns/ipc"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ fields = strings.Split(session.OutputToString(), " ")
+ ctrIpcNS := strings.TrimSuffix(fields[len(fields)-1], "\n")
+
+ Expect(hostPidNS).To(Equal(ctrPidNS))
+ Expect(hostIpcNS).To(Equal(ctrIpcNS))
+ })
+
})
diff --git a/test/e2e/run_passwd_test.go b/test/e2e/run_passwd_test.go
index 5df8e1649..8dea7d39b 100644
--- a/test/e2e/run_passwd_test.go
+++ b/test/e2e/run_passwd_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_privileged_test.go b/test/e2e/run_privileged_test.go
index 03fb71656..ca8da981f 100644
--- a/test/e2e/run_privileged_test.go
+++ b/test/e2e/run_privileged_test.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_restart_test.go b/test/e2e/run_restart_test.go
index 0a1c7e134..6150d63e5 100644
--- a/test/e2e/run_restart_test.go
+++ b/test/e2e/run_restart_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -35,11 +33,12 @@ var _ = Describe("Podman run restart containers", func() {
})
It("Podman start after successful run", func() {
- session := podmanTest.Podman([]string{"run", ALPINE, "ls"})
+ SkipIfRemote()
+ session := podmanTest.Podman([]string{"run", "--name", "test", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- session2 := podmanTest.Podman([]string{"start", "--attach", "--latest"})
+ session2 := podmanTest.Podman([]string{"start", "--attach", "test"})
session2.WaitWithDefaultTimeout()
Expect(session2.ExitCode()).To(Equal(0))
})
diff --git a/test/e2e/run_seccomp.go b/test/e2e/run_seccomp.go
index a6a14618c..7d04cc60a 100644
--- a/test/e2e/run_seccomp.go
+++ b/test/e2e/run_seccomp.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_security_labels.go b/test/e2e/run_security_labels.go
index 148b18daa..e907607b5 100644
--- a/test/e2e/run_security_labels.go
+++ b/test/e2e/run_security_labels.go
@@ -1,12 +1,10 @@
-// +build !remote
-
package integration
import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -129,6 +127,7 @@ var _ = Describe("Podman generate kube", func() {
})
It("podman container runlabel (podman --version)", func() {
+ SkipIfRemote()
PodmanDockerfile := `
FROM alpine:latest
LABEL io.containers.capabilities=chown,mknod`
diff --git a/test/e2e/run_selinux_test.go b/test/e2e/run_selinux_test.go
index 7c1946534..cef8a8d50 100644
--- a/test/e2e/run_selinux_test.go
+++ b/test/e2e/run_selinux_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/opencontainers/selinux/go-selinux"
diff --git a/test/e2e/run_signal_test.go b/test/e2e/run_signal_test.go
index d3b77ae73..2350fe1e5 100644
--- a/test/e2e/run_signal_test.go
+++ b/test/e2e/run_signal_test.go
@@ -11,8 +11,8 @@ import (
"syscall"
"time"
- "github.com/containers/libpod/v2/pkg/rootless"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"golang.org/x/sys/unix"
diff --git a/test/e2e/run_staticip_test.go b/test/e2e/run_staticip_test.go
index 8377636cf..f62c52099 100644
--- a/test/e2e/run_staticip_test.go
+++ b/test/e2e/run_staticip_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -8,7 +6,7 @@ import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/run_test.go b/test/e2e/run_test.go
index 9d48f1540..1f9cc3cb0 100644
--- a/test/e2e/run_test.go
+++ b/test/e2e/run_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -13,8 +11,8 @@ import (
"syscall"
"time"
- "github.com/containers/libpod/v2/pkg/cgroups"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/cgroups"
+ . "github.com/containers/podman/v2/test/utils"
"github.com/containers/storage/pkg/stringid"
"github.com/mrunalp/fileutils"
. "github.com/onsi/ginkgo"
@@ -160,10 +158,10 @@ var _ = Describe("Podman run", func() {
})
It("podman run a container with --init", func() {
- session := podmanTest.Podman([]string{"run", "--init", ALPINE, "ls"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "--init", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- result := podmanTest.Podman([]string{"inspect", "-l"})
+ result := podmanTest.Podman([]string{"inspect", "test"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
conData := result.InspectContainerToJSON()
@@ -172,10 +170,10 @@ var _ = Describe("Podman run", func() {
})
It("podman run a container with --init and --init-path", func() {
- session := podmanTest.Podman([]string{"run", "--init", "--init-path", "/usr/libexec/podman/catatonit", ALPINE, "ls"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "--init", "--init-path", "/usr/libexec/podman/catatonit", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- result := podmanTest.Podman([]string{"inspect", "-l"})
+ result := podmanTest.Podman([]string{"inspect", "test"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
conData := result.InspectContainerToJSON()
@@ -184,10 +182,10 @@ var _ = Describe("Podman run", func() {
})
It("podman run a container without --init", func() {
- session := podmanTest.Podman([]string{"run", ALPINE, "ls"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- result := podmanTest.Podman([]string{"inspect", "-l"})
+ result := podmanTest.Podman([]string{"inspect", "test"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
conData := result.InspectContainerToJSON()
@@ -259,11 +257,14 @@ var _ = Describe("Podman run", func() {
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring("00000000a80425fb"))
+ })
+ It("podman run user capabilities test with image", func() {
+ SkipIfRemote()
dockerfile := `FROM busybox
USER bin`
podmanTest.BuildImage(dockerfile, "test", "false")
- session = podmanTest.Podman([]string{"run", "--rm", "--user", "bin", "test", "grep", "CapBnd", "/proc/self/status"})
+ session := podmanTest.Podman([]string{"run", "--rm", "--user", "bin", "test", "grep", "CapBnd", "/proc/self/status"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring("00000000a80425fb"))
@@ -510,6 +511,7 @@ USER bin`
})
It("podman run with secrets", func() {
+ SkipIfRemote()
containersDir := filepath.Join(podmanTest.TempDir, "containers")
err := os.MkdirAll(containersDir, 0755)
Expect(err).To(BeNil())
@@ -674,6 +676,7 @@ USER bin`
})
It("podman run with built-in volume image", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"run", "--rm", redis, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -820,16 +823,22 @@ USER mail`
})
It("podman run --rm should work", func() {
- session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "ls"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "--rm", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"wait", "test"})
+ session.WaitWithDefaultTimeout()
+ Expect(session).To(ExitWithError())
numContainers := podmanTest.NumberOfContainers()
Expect(numContainers).To(Equal(0))
})
It("podman run --rm failed container should delete itself", func() {
- session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "foo"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "--rm", ALPINE, "foo"})
+ session.WaitWithDefaultTimeout()
+ Expect(session).To(ExitWithError())
+ session = podmanTest.Podman([]string{"wait", "test"})
session.WaitWithDefaultTimeout()
Expect(session).To(ExitWithError())
@@ -841,6 +850,10 @@ USER mail`
session := podmanTest.Podman([]string{"run", ALPINE, "foo"})
session.WaitWithDefaultTimeout()
Expect(session).To(ExitWithError())
+ // If remote we could have a race condition
+ session = podmanTest.Podman([]string{"wait", "test"})
+ session.WaitWithDefaultTimeout()
+ Expect(session).To(ExitWithError())
numContainers := podmanTest.NumberOfContainers()
Expect(numContainers).To(Equal(1))
@@ -881,7 +894,7 @@ USER mail`
})
It("podman run with restart-policy always restarts containers", func() {
-
+ SkipIfRemote()
testDir := filepath.Join(podmanTest.RunRoot, "restart-test")
err := os.MkdirAll(testDir, 0755)
Expect(err).To(BeNil())
@@ -995,14 +1008,12 @@ USER mail`
})
It("podman run should fail with nonexist authfile", func() {
- SkipIfRemote()
session := podmanTest.Podman([]string{"run", "--authfile", "/tmp/nonexist", ALPINE, "ls"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Not(Equal(0)))
})
It("podman run --device-cgroup-rule", func() {
- SkipIfRemote()
SkipIfRootless()
deviceCgroupRule := "c 42:* rwm"
session := podmanTest.Podman([]string{"run", "--name", "test", "-d", "--device-cgroup-rule", deviceCgroupRule, ALPINE, "top"})
@@ -1081,4 +1092,35 @@ USER mail`
Expect(session.ExitCode()).To(Equal(0))
Expect(session.OutputToString()).To(ContainSubstring(limit))
})
+
+ It("podman run umask", func() {
+ if !strings.Contains(podmanTest.OCIRuntime, "crun") {
+ Skip("Test only works on crun")
+ }
+
+ session := podmanTest.Podman([]string{"run", "--rm", ALPINE, "sh", "-c", "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("0022"))
+
+ session = podmanTest.Podman([]string{"run", "--umask", "0002", "--rm", ALPINE, "sh", "-c", "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("0002"))
+
+ session = podmanTest.Podman([]string{"run", "--umask", "0077", "--rm", fedoraMinimal, "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("0077"))
+
+ session = podmanTest.Podman([]string{"run", "--umask", "22", "--rm", ALPINE, "sh", "-c", "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ Expect(session.OutputToString()).To(Equal("0022"))
+
+ session = podmanTest.Podman([]string{"run", "--umask", "9999", "--rm", ALPINE, "sh", "-c", "umask"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ Expect(session.ErrorToString()).To(ContainSubstring("Invalid umask"))
+ })
})
diff --git a/test/e2e/run_userns_test.go b/test/e2e/run_userns_test.go
index 2ddb84a94..25f8d0d15 100644
--- a/test/e2e/run_userns_test.go
+++ b/test/e2e/run_userns_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -9,7 +7,7 @@ import (
"os/user"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -54,7 +52,7 @@ var _ = Describe("Podman UserNS support", func() {
// It essentially repeats the test above but with the `-it` short option
// that broke execution at:
- // https://github.com/containers/libpod/pull/1066#issuecomment-403562116
+ // https://github.com/containers/podman/pull/1066#issuecomment-403562116
// To avoid a potential future regression, use this as a test.
It("podman uidmapping and gidmapping with short-opts", func() {
session := podmanTest.Podman([]string{"run", "--uidmap=0:1:5000", "--gidmap=0:200:5000", "-it", "alpine", "echo", "hello"})
diff --git a/test/e2e/run_volume_test.go b/test/e2e/run_volume_test.go
index 92988ff87..c729423a3 100644
--- a/test/e2e/run_volume_test.go
+++ b/test/e2e/run_volume_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -9,7 +7,8 @@ import (
"path/filepath"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/onsi/gomega/gexec"
@@ -198,6 +197,7 @@ var _ = Describe("Podman run with volumes", func() {
})
It("podman run with volumes and suid/dev/exec options", func() {
+ SkipIfRemote()
mountPath := filepath.Join(podmanTest.TempDir, "secrets")
os.Mkdir(mountPath, 0755)
@@ -227,6 +227,7 @@ var _ = Describe("Podman run with volumes", func() {
})
It("podman run with tmpfs named volume mounts and unmounts", func() {
+ SkipIfRemote()
SkipIfRootless()
volName := "testvol"
mkVolume := podmanTest.Podman([]string{"volume", "create", "--opt", "type=tmpfs", "--opt", "device=tmpfs", "--opt", "o=nodev", "testvol"})
@@ -314,6 +315,7 @@ var _ = Describe("Podman run with volumes", func() {
})
It("podman run with anonymous volume", func() {
+ SkipIfRemote()
list1 := podmanTest.Podman([]string{"volume", "list", "--quiet"})
list1.WaitWithDefaultTimeout()
Expect(list1.ExitCode()).To(Equal(0))
@@ -332,6 +334,7 @@ var _ = Describe("Podman run with volumes", func() {
})
It("podman rm -v removes anonymous volume", func() {
+ SkipIfRemote()
list1 := podmanTest.Podman([]string{"volume", "list", "--quiet"})
list1.WaitWithDefaultTimeout()
Expect(list1.ExitCode()).To(Equal(0))
@@ -433,6 +436,7 @@ var _ = Describe("Podman run with volumes", func() {
})
It("Podman mount over image volume with trailing /", func() {
+ SkipIfRemote()
image := "podman-volume-test:trailing"
dockerfile := `
FROM alpine:latest
@@ -450,4 +454,93 @@ VOLUME /test/`
Expect(data[0].Mounts[0].Source).To(Equal("/tmp"))
Expect(data[0].Mounts[0].Destination).To(Equal("/test"))
})
+
+ It("podman run with overlay volume flag", func() {
+ SkipIfRemote()
+ if os.Getenv("container") != "" {
+ Skip("Overlay mounts not supported when running in a container")
+ }
+ if rootless.IsRootless() {
+ if _, err := exec.LookPath("fuse_overlay"); err != nil {
+ Skip("Fuse-Overlayfs required for rootless overlay mount test")
+ }
+ }
+ mountPath := filepath.Join(podmanTest.TempDir, "secrets")
+ os.Mkdir(mountPath, 0755)
+ testFile := filepath.Join(mountPath, "test1")
+ f, err := os.Create(testFile)
+ f.Close()
+
+ // Make sure host directory gets mounted in to container as overlay
+ session := podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:/run/test:O", mountPath), ALPINE, "grep", "/run/test", "/proc/self/mountinfo"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ found, matches := session.GrepString("/run/test")
+ Expect(found).Should(BeTrue())
+ Expect(matches[0]).To(ContainSubstring("overlay"))
+
+ // Make sure host files show up in the container
+ session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:/run/test:O", mountPath), ALPINE, "ls", "/run/test/test1"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ // Make sure modifications in container do not show up on host
+ session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:/run/test:O", mountPath), ALPINE, "touch", "/run/test/container"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ _, err = os.Stat(filepath.Join(mountPath, "container"))
+ Expect(err).To(Not(BeNil()))
+
+ // Make sure modifications in container disappear when container is stopped
+ session = podmanTest.Podman([]string{"create", "-d", "-v", fmt.Sprintf("%s:/run/test:O", mountPath), ALPINE, "top"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"start", "-l"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"exec", "-l", "touch", "/run/test/container"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"exec", "-l", "ls", "/run/test/container"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"stop", "-l"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"start", "-l"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ session = podmanTest.Podman([]string{"exec", "-l", "ls", "/run/test/container"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ })
+
+ It("overlay volume conflicts with named volume and mounts", func() {
+ mountPath := filepath.Join(podmanTest.TempDir, "secrets")
+ os.Mkdir(mountPath, 0755)
+ testFile := filepath.Join(mountPath, "test1")
+ f, err := os.Create(testFile)
+ Expect(err).To(BeNil())
+ f.Close()
+ mountSrc := filepath.Join(podmanTest.TempDir, "vol-test1")
+ err = os.MkdirAll(mountSrc, 0755)
+ Expect(err).To(BeNil())
+ mountDest := "/run/test"
+ volName := "myvol"
+
+ session := podmanTest.Podman([]string{"volume", "create", volName})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ // overlay and named volume destinations conflict
+ session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:%s:O", mountPath, mountDest), "-v", fmt.Sprintf("%s:%s", volName, mountDest), ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ // overlay and bind mount destinations conflict
+ session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:%s:O", mountPath, mountDest), "--mount", fmt.Sprintf("type=bind,src=%s,target=%s", mountSrc, mountDest), ALPINE})
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ // overlay and tmpfs mount destinations conflict
+ session = podmanTest.Podman([]string{"run", "--rm", "-v", fmt.Sprintf("%s:%s:O", mountPath, mountDest), "--mount", fmt.Sprintf("type=tmpfs,target=%s", mountDest), ALPINE})
+ Expect(session.ExitCode()).To(Not(Equal(0)))
+ })
})
diff --git a/test/e2e/runlabel_test.go b/test/e2e/runlabel_test.go
index 3383fbd1e..de79b2b98 100644
--- a/test/e2e/runlabel_test.go
+++ b/test/e2e/runlabel_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -48,6 +46,7 @@ var _ = Describe("podman container runlabel", func() {
})
It("podman container runlabel (podman --version)", func() {
+ SkipIfRemote()
image := "podman-runlabel-test:podman"
podmanTest.BuildImage(PodmanDockerfile, image, "false")
@@ -61,6 +60,7 @@ var _ = Describe("podman container runlabel", func() {
})
It("podman container runlabel (ls -la)", func() {
+ SkipIfRemote()
image := "podman-runlabel-test:ls"
podmanTest.BuildImage(LsDockerfile, image, "false")
diff --git a/test/e2e/save_test.go b/test/e2e/save_test.go
index 1e035c3e5..e1396f1b2 100644
--- a/test/e2e/save_test.go
+++ b/test/e2e/save_test.go
@@ -4,8 +4,8 @@ import (
"os"
"path/filepath"
- "github.com/containers/libpod/v2/pkg/rootless"
- . "github.com/containers/libpod/v2/test/utils"
+ "github.com/containers/podman/v2/pkg/rootless"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/search_test.go b/test/e2e/search_test.go
index aeab3ac56..1e7dff697 100644
--- a/test/e2e/search_test.go
+++ b/test/e2e/search_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -10,7 +8,7 @@ import (
"strconv"
"text/template"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -229,6 +227,7 @@ registries = ['{{.Host}}:{{.Port}}']`
})
It("podman search attempts HTTP if registry is in registries.insecure and force secure is false", func() {
+ SkipIfRemote()
if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le")
}
@@ -269,6 +268,7 @@ registries = ['{{.Host}}:{{.Port}}']`
})
It("podman search doesn't attempt HTTP if force secure is true", func() {
+ SkipIfRemote()
if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le")
}
@@ -307,6 +307,7 @@ registries = ['{{.Host}}:{{.Port}}']`
})
It("podman search doesn't attempt HTTP if registry is not listed as insecure", func() {
+ SkipIfRemote()
if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le")
}
@@ -345,6 +346,7 @@ registries = ['{{.Host}}:{{.Port}}']`
})
It("podman search doesn't attempt HTTP if one registry is not listed as insecure", func() {
+ SkipIfRemote()
if podmanTest.Host.Arch == "ppc64le" {
Skip("No registry image for ppc64le")
}
diff --git a/test/e2e/start_test.go b/test/e2e/start_test.go
index bf62a65f2..78410c9cf 100644
--- a/test/e2e/start_test.go
+++ b/test/e2e/start_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/stats_test.go b/test/e2e/stats_test.go
index 37a99076e..ff6ddce7e 100644
--- a/test/e2e/stats_test.go
+++ b/test/e2e/stats_test.go
@@ -7,7 +7,7 @@ import (
"os"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/stop_test.go b/test/e2e/stop_test.go
index 417bba321..22cd2e7ae 100644
--- a/test/e2e/stop_test.go
+++ b/test/e2e/stop_test.go
@@ -5,7 +5,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/system_connection_test.go b/test/e2e/system_connection_test.go
new file mode 100644
index 000000000..a23d50f29
--- /dev/null
+++ b/test/e2e/system_connection_test.go
@@ -0,0 +1,176 @@
+package integration
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+
+ "github.com/containers/common/pkg/config"
+ . "github.com/containers/podman/v2/test/utils"
+ . "github.com/onsi/ginkgo"
+ . "github.com/onsi/gomega"
+ . "github.com/onsi/gomega/gbytes"
+ . "github.com/onsi/gomega/gexec"
+)
+
+var _ = Describe("podman system connection", func() {
+ ConfPath := struct {
+ Value string
+ IsSet bool
+ }{}
+
+ var (
+ podmanTest *PodmanTestIntegration
+ )
+
+ BeforeEach(func() {
+ ConfPath.Value, ConfPath.IsSet = os.LookupEnv("CONTAINERS_CONF")
+ conf, err := ioutil.TempFile("", "containersconf")
+ if err != nil {
+ panic(err)
+ }
+ os.Setenv("CONTAINERS_CONF", conf.Name())
+
+ tempdir, err := CreateTempDirInTempDir()
+ if err != nil {
+ panic(err)
+ }
+ podmanTest = PodmanTestCreate(tempdir)
+ podmanTest.Setup()
+ })
+
+ AfterEach(func() {
+ podmanTest.Cleanup()
+ os.Remove(os.Getenv("CONTAINERS_CONF"))
+ if ConfPath.IsSet {
+ os.Setenv("CONTAINERS_CONF", ConfPath.Value)
+ } else {
+ os.Unsetenv("CONTAINERS_CONF")
+ }
+
+ f := CurrentGinkgoTestDescription()
+ timedResult := fmt.Sprintf("Test: %s completed in %f seconds", f.TestText, f.Duration.Seconds())
+ GinkgoWriter.Write([]byte(timedResult))
+ })
+
+ It("add", func() {
+ cmd := []string{"system", "connection", "add",
+ "--default",
+ "--identity", "~/.ssh/id_rsa",
+ "QA",
+ "ssh://root@server.fubar.com:2222/run/podman/podman.sock",
+ }
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.Out).Should(Say(""))
+
+ cfg, err := config.ReadCustomConfig()
+ Expect(err).ShouldNot(HaveOccurred())
+ Expect(cfg.Engine.ActiveService).To(Equal("QA"))
+ Expect(cfg.Engine.ServiceDestinations["QA"]).To(Equal(
+ config.Destination{
+ URI: "ssh://root@server.fubar.com:2222/run/podman/podman.sock",
+ Identity: "~/.ssh/id_rsa",
+ },
+ ))
+
+ cmd = []string{"system", "connection", "rename",
+ "QA",
+ "QE",
+ }
+ session = podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+
+ cfg, err = config.ReadCustomConfig()
+ Expect(err).ShouldNot(HaveOccurred())
+ Expect(cfg.Engine.ActiveService).To(Equal("QE"))
+ Expect(cfg.Engine.ServiceDestinations["QE"]).To(Equal(
+ config.Destination{
+ URI: "ssh://root@server.fubar.com:2222/run/podman/podman.sock",
+ Identity: "~/.ssh/id_rsa",
+ },
+ ))
+ })
+
+ It("remove", func() {
+ cmd := []string{"system", "connection", "add",
+ "--default",
+ "--identity", "~/.ssh/id_rsa",
+ "QA",
+ "ssh://root@server.fubar.com:2222/run/podman/podman.sock",
+ }
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+
+ for i := 0; i < 2; i++ {
+ cmd = []string{"system", "connection", "remove", "QA"}
+ session = podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.Out).Should(Say(""))
+
+ cfg, err := config.ReadCustomConfig()
+ Expect(err).ShouldNot(HaveOccurred())
+ Expect(cfg.Engine.ActiveService).To(BeEmpty())
+ Expect(cfg.Engine.ServiceDestinations).To(BeEmpty())
+ }
+ })
+
+ It("default", func() {
+ for _, name := range []string{"devl", "qe"} {
+ cmd := []string{"system", "connection", "add",
+ "--default",
+ "--identity", "~/.ssh/id_rsa",
+ name,
+ "ssh://root@server.fubar.com:2222/run/podman/podman.sock",
+ }
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ }
+
+ cmd := []string{"system", "connection", "default", "devl"}
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.Out).Should(Say(""))
+
+ cfg, err := config.ReadCustomConfig()
+ Expect(err).ShouldNot(HaveOccurred())
+ Expect(cfg.Engine.ActiveService).To(Equal("devl"))
+
+ cmd = []string{"system", "connection", "list"}
+ session = podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.Out).Should(Say("Name *Identity *URI"))
+ })
+
+ It("failed default", func() {
+ cmd := []string{"system", "connection", "default", "devl"}
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).ShouldNot(Exit(0))
+ Expect(session.Err).Should(Say("destination is not defined"))
+ })
+
+ It("failed rename", func() {
+ cmd := []string{"system", "connection", "rename", "devl", "QE"}
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).ShouldNot(Exit(0))
+ Expect(session.Err).Should(Say("destination is not defined"))
+ })
+
+ It("empty list", func() {
+ cmd := []string{"system", "connection", "list"}
+ session := podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.Out).Should(Say(""))
+ Expect(session.Err).Should(Say(""))
+ })
+})
diff --git a/test/e2e/system_df_test.go b/test/e2e/system_df_test.go
index 16a8dbb7e..c184e1d01 100644
--- a/test/e2e/system_df_test.go
+++ b/test/e2e/system_df_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -7,7 +5,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -37,6 +35,7 @@ var _ = Describe("podman system df", func() {
})
It("podman system df", func() {
+ SkipIfRemote()
session := podmanTest.Podman([]string{"create", ALPINE})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
@@ -60,4 +59,18 @@ var _ = Describe("podman system df", func() {
Expect(containers[1]).To(Equal("2"))
Expect(volumes[2]).To(Equal("1"))
})
+
+ It("podman system df image with no tag", func() {
+ session := podmanTest.PodmanNoCache([]string{"create", ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session = podmanTest.PodmanNoCache([]string{"image", "untag", ALPINE})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+
+ session = podmanTest.PodmanNoCache([]string{"system", "df"})
+ session.WaitWithDefaultTimeout()
+ Expect(session.ExitCode()).To(Equal(0))
+ })
})
diff --git a/test/e2e/system_reset_test.go b/test/e2e/system_reset_test.go
index 3e16e28d8..1c174e690 100644
--- a/test/e2e/system_reset_test.go
+++ b/test/e2e/system_reset_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/systemd_test.go b/test/e2e/systemd_test.go
index 7b9be2275..b5114e429 100644
--- a/test/e2e/systemd_test.go
+++ b/test/e2e/systemd_test.go
@@ -1,5 +1,3 @@
-// +build !remote
-
package integration
import (
@@ -8,7 +6,7 @@ import (
"strings"
"time"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/tag_test.go b/test/e2e/tag_test.go
index 39d0d24db..72d5cad77 100644
--- a/test/e2e/tag_test.go
+++ b/test/e2e/tag_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/top_test.go b/test/e2e/top_test.go
index 157a7fe46..c182b88e6 100644
--- a/test/e2e/top_test.go
+++ b/test/e2e/top_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -55,22 +53,22 @@ var _ = Describe("Podman top", func() {
})
It("podman top on container", func() {
- session := podmanTest.Podman([]string{"run", "-d", ALPINE, "top", "-d", "2"})
+ session := podmanTest.Podman([]string{"run", "--name", "test", "-d", ALPINE, "top", "-d", "2"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- result := podmanTest.Podman([]string{"top", "-l"})
+ result := podmanTest.Podman([]string{"top", "test"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1))
})
It("podman container top on container", func() {
- session := podmanTest.Podman([]string{"container", "run", "-d", ALPINE, "top", "-d", "2"})
+ session := podmanTest.Podman([]string{"container", "run", "--name", "test", "-d", ALPINE, "top", "-d", "2"})
session.WaitWithDefaultTimeout()
Expect(session.ExitCode()).To(Equal(0))
- result := podmanTest.Podman([]string{"container", "top", "-l"})
+ result := podmanTest.Podman([]string{"container", "top", "test"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
Expect(len(result.OutputToStringArray())).To(BeNumerically(">", 1))
diff --git a/test/e2e/tree_test.go b/test/e2e/tree_test.go
index c4436962f..c6eb0a6eb 100644
--- a/test/e2e/tree_test.go
+++ b/test/e2e/tree_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/trust_test.go b/test/e2e/trust_test.go
index 62ebc903f..ecdf27a2e 100644
--- a/test/e2e/trust_test.go
+++ b/test/e2e/trust_test.go
@@ -8,7 +8,7 @@ import (
"os"
"path/filepath"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/unshare_test.go b/test/e2e/unshare_test.go
index ba8bf5963..a0c41b6f3 100644
--- a/test/e2e/unshare_test.go
+++ b/test/e2e/unshare_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/untag_test.go b/test/e2e/untag_test.go
index e0e8d060a..4e6dd6462 100644
--- a/test/e2e/untag_test.go
+++ b/test/e2e/untag_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
@@ -33,7 +33,11 @@ var _ = Describe("Podman untag", func() {
})
It("podman untag all", func() {
- Skip(v2remotefail)
+ SkipIfRemote()
+ setup := podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
tags := []string{ALPINE, "registry.com/foo:bar", "localhost/foo:bar"}
cmd := []string{"tag"}
@@ -63,6 +67,10 @@ var _ = Describe("Podman untag", func() {
})
It("podman tag/untag - tag normalization", func() {
+ setup := podmanTest.PodmanNoCache([]string{"pull", ALPINE})
+ setup.WaitWithDefaultTimeout()
+ Expect(setup.ExitCode()).To(Equal(0))
+
tests := []struct {
tag, normalized string
}{
diff --git a/test/e2e/version_test.go b/test/e2e/version_test.go
index eb1d1b733..9ddbcc58f 100644
--- a/test/e2e/version_test.go
+++ b/test/e2e/version_test.go
@@ -3,8 +3,8 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
- "github.com/containers/libpod/v2/version"
+ . "github.com/containers/podman/v2/test/utils"
+ "github.com/containers/podman/v2/version"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
. "github.com/onsi/gomega/gexec"
diff --git a/test/e2e/volume_create_test.go b/test/e2e/volume_create_test.go
index a734cdc1a..8c44e57e4 100644
--- a/test/e2e/volume_create_test.go
+++ b/test/e2e/volume_create_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/volume_inspect_test.go b/test/e2e/volume_inspect_test.go
index d7bdaaccc..7ff1d63b4 100644
--- a/test/e2e/volume_inspect_test.go
+++ b/test/e2e/volume_inspect_test.go
@@ -4,7 +4,7 @@ import (
"os"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/volume_ls_test.go b/test/e2e/volume_ls_test.go
index 647cb7a49..377b721d0 100644
--- a/test/e2e/volume_ls_test.go
+++ b/test/e2e/volume_ls_test.go
@@ -4,7 +4,7 @@ import (
"fmt"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/volume_prune_test.go b/test/e2e/volume_prune_test.go
index c4fafa406..c8521ebe7 100644
--- a/test/e2e/volume_prune_test.go
+++ b/test/e2e/volume_prune_test.go
@@ -1,11 +1,9 @@
-// +build !remote
-
package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/volume_rm_test.go b/test/e2e/volume_rm_test.go
index fd79be126..a072bc824 100644
--- a/test/e2e/volume_rm_test.go
+++ b/test/e2e/volume_rm_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/e2e/wait_test.go b/test/e2e/wait_test.go
index ea693c115..3758acab8 100644
--- a/test/e2e/wait_test.go
+++ b/test/e2e/wait_test.go
@@ -3,7 +3,7 @@ package integration
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/endpoint/commit.go b/test/endpoint/commit.go
index ff671f572..97e10efb0 100644
--- a/test/endpoint/commit.go
+++ b/test/endpoint/commit.go
@@ -6,7 +6,7 @@ import (
"encoding/json"
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/endpoint/endpoint.go b/test/endpoint/endpoint.go
index 3352f36f2..0593b05cd 100644
--- a/test/endpoint/endpoint.go
+++ b/test/endpoint/endpoint.go
@@ -13,8 +13,8 @@ import (
"syscall"
"time"
- "github.com/containers/libpod/v2/pkg/rootless"
- iopodman "github.com/containers/libpod/v2/pkg/varlink"
+ "github.com/containers/podman/v2/pkg/rootless"
+ iopodman "github.com/containers/podman/v2/pkg/varlink"
. "github.com/onsi/ginkgo"
"github.com/onsi/gomega/gexec"
)
diff --git a/test/endpoint/exists_test.go b/test/endpoint/exists_test.go
index 4278f2bfd..f7fa8eb44 100644
--- a/test/endpoint/exists_test.go
+++ b/test/endpoint/exists_test.go
@@ -5,7 +5,7 @@ package endpoint
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/endpoint/pull_test.go b/test/endpoint/pull_test.go
index 06813125e..b3683b7db 100644
--- a/test/endpoint/pull_test.go
+++ b/test/endpoint/pull_test.go
@@ -5,7 +5,7 @@ package endpoint
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/endpoint/setup.go b/test/endpoint/setup.go
index f784e5696..56cab06b0 100644
--- a/test/endpoint/setup.go
+++ b/test/endpoint/setup.go
@@ -10,8 +10,8 @@ import (
"path/filepath"
"strings"
- "github.com/containers/libpod/v2/pkg/rootless"
- iopodman "github.com/containers/libpod/v2/pkg/varlink"
+ "github.com/containers/podman/v2/pkg/rootless"
+ iopodman "github.com/containers/podman/v2/pkg/varlink"
"github.com/containers/storage/pkg/stringid"
"github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
diff --git a/test/endpoint/version_test.go b/test/endpoint/version_test.go
index 90f2c7043..b1c8ad867 100644
--- a/test/endpoint/version_test.go
+++ b/test/endpoint/version_test.go
@@ -5,8 +5,8 @@ package endpoint
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
- "github.com/containers/libpod/v2/version"
+ . "github.com/containers/podman/v2/test/utils"
+ "github.com/containers/podman/v2/version"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/system/015-help.bats b/test/system/015-help.bats
index 3d05b44fe..76d29d22c 100644
--- a/test/system/015-help.bats
+++ b/test/system/015-help.bats
@@ -78,7 +78,8 @@ function check_help() {
if ! expr "$usage" : '.*[A-Z]' >/dev/null; then
if [ "$cmd" != "help" ]; then
dprint "$command_string invalid-arg"
- run_podman 125 "$@" $cmd invalid-arg
+ run_podman '?' "$@" $cmd invalid-arg
+ is "$status" 125 "'$command_string invalid-arg' - exit status"
is "$output" "Error: .* takes no arguments" \
"'$command_string' with extra (invalid) arguments"
fi
@@ -104,7 +105,8 @@ function check_help() {
# The </dev/null protects us from 'podman login' which will
# try to read username/password from stdin.
dprint "$command_string (without required args)"
- run_podman 125 "$@" $cmd </dev/null
+ run_podman '?' "$@" $cmd </dev/null
+ is "$status" 125 "'$command_string' with no arguments - exit status"
is "$output" "Error:.* \(require\|specif\|must\|provide\|need\|choose\|accepts\)" \
"'$command_string' without required arg"
@@ -126,7 +128,8 @@ function check_help() {
local rhs=$(sed -e 's/^[^A-Z]\+[A-Z]/X/' -e 's/ | /-or-/g' <<<"$usage")
local n_args=$(wc -w <<<"$rhs")
- run_podman 125 "$@" $cmd $(seq --format='x%g' 0 $n_args)
+ run_podman '?' "$@" $cmd $(seq --format='x%g' 0 $n_args)
+ is "$status" 125 "'$command_string' with >$n_args arguments - exit status"
is "$output" "Error:.* \(takes no arguments\|requires exactly $n_args arg\|accepts at most\|too many arguments\|accepts $n_args arg(s), received\|accepts between .* and .* arg(s), received \)" \
"'$command_string' with >$n_args arguments"
@@ -140,13 +143,17 @@ function check_help() {
# Any command that takes subcommands, must throw error if called
# without one.
dprint "podman $@"
- run_podman 125 "$@"
- is "$output" "Error: missing command .*$@ COMMAND"
+ run_podman '?' "$@"
+ is "$status" 125 "'podman $*' without any subcommand - exit status"
+ is "$output" "Error: missing command .*$@ COMMAND" \
+ "'podman $*' without any subcommand - expected error message"
# Assume that 'NoSuchCommand' is not a command
dprint "podman $@ NoSuchCommand"
- run_podman 125 "$@" NoSuchCommand
- is "$output" "Error: unrecognized command .*$@ NoSuchCommand"
+ run_podman '?' "$@" NoSuchCommand
+ is "$status" 125 "'podman $* NoSuchCommand' - exit status"
+ is "$output" "Error: unrecognized command .*$@ NoSuchCommand" \
+ "'podman $* NoSuchCommand' - expected error message"
# This can happen if the output of --help changes, such as between
# the old command parser and cobra.
diff --git a/test/system/030-run.bats b/test/system/030-run.bats
index 13fec20ad..04d1e4eac 100644
--- a/test/system/030-run.bats
+++ b/test/system/030-run.bats
@@ -87,7 +87,7 @@ echo $rand | 0 | $rand
}
# 'run --rm' goes through different code paths and may lose exit status.
-# See https://github.com/containers/libpod/issues/3795
+# See https://github.com/containers/podman/issues/3795
@test "podman run --rm" {
run_podman 0 run --rm $IMAGE /bin/true
diff --git a/test/system/055-rm.bats b/test/system/055-rm.bats
index 6a381a187..c8475c3e9 100644
--- a/test/system/055-rm.bats
+++ b/test/system/055-rm.bats
@@ -42,7 +42,7 @@ load helpers
# so what we do is start the 'rm' beforehand and monitor the exit status
# of the 'sleep' container.
#
-# See https://github.com/containers/libpod/issues/3795
+# See https://github.com/containers/podman/issues/3795
@test "podman rm -f" {
rand=$(random_string 30)
( sleep 3; run_podman rm -f $rand ) &
diff --git a/test/system/070-build.bats b/test/system/070-build.bats
index 793c2e5a0..627b9caa6 100644
--- a/test/system/070-build.bats
+++ b/test/system/070-build.bats
@@ -86,7 +86,7 @@ EOF
cat >$tmpdir/Dockerfile <<EOF
FROM $IMAGE
-ADD https://github.com/containers/libpod/blob/master/README.md /tmp/
+ADD https://github.com/containers/podman/blob/master/README.md /tmp/
EOF
run_podman build -t add_url $tmpdir
run_podman run --rm add_url stat /tmp/README.md
@@ -109,6 +109,7 @@ EOF
s_env1=$(random_string 20)
s_env2=$(random_string 25)
s_env3=$(random_string 30)
+ s_env4=$(random_string 40)
# Label name: make sure it begins with a letter! jq barfs if you
# try to ask it for '.foo.<N>xyz', i.e. any string beginning with digit
@@ -118,11 +119,17 @@ EOF
# Command to run on container startup with no args
cat >$tmpdir/mycmd <<EOF
#!/bin/sh
+PATH=/usr/bin:/bin
pwd
echo "\$1"
-echo "\$MYENV1"
-echo "\$MYENV2"
-echo "\$MYENV3"
+printenv | grep MYENV | sort | sed -e 's/^MYENV.=//'
+EOF
+
+ # For overridding with --env-file
+ cat >$PODMAN_TMPDIR/env-file <<EOF
+MYENV3=$s_env3
+http_proxy=http-proxy-in-env-file
+https_proxy=https-proxy-in-env-file
EOF
cat >$tmpdir/Containerfile <<EOF
@@ -130,11 +137,25 @@ FROM $IMAGE
LABEL $label_name=$label_value
RUN mkdir $workdir
WORKDIR $workdir
+
+# Test for #7094 - chowning of invalid symlinks
+RUN mkdir -p /a/b/c
+RUN ln -s /no/such/nonesuch /a/b/c/badsymlink
+RUN ln -s /bin/mydefaultcmd /a/b/c/goodsymlink
+RUN touch /a/b/c/myfile
+RUN chown -h 1:2 /a/b/c/badsymlink /a/b/c/goodsymlink /a/b/c/myfile
+VOLUME /a/b/c
+
+# Test for environment passing and override
ENV MYENV1=$s_env1
-ENV MYENV2 $s_env2
-ENV MYENV3 this-should-be-overridden
+ENV MYENV2 this-should-be-overridden-by-env-host
+ENV MYENV3 this-should-be-overridden-by-env-file
+ENV MYENV4 this-should-be-overridden-by-cmdline
+ENV http_proxy http-proxy-in-image
+ENV ftp_proxy ftp-proxy-in-image
ADD mycmd /bin/mydefaultcmd
RUN chmod 755 /bin/mydefaultcmd
+RUN chown 2:3 /bin/mydefaultcmd
CMD ["/bin/mydefaultcmd","$s_echo"]
EOF
@@ -143,12 +164,28 @@ EOF
run_podman build -t build_test -f build-test/Containerfile build-test
# Run without args - should run the above script. Verify its output.
- run_podman run --rm -e MYENV3="$s_env3" build_test
+ export MYENV2="$s_env2"
+ export MYENV3="env-file-should-override-env-host!"
+ run_podman run --rm \
+ --env-file=$PODMAN_TMPDIR/env-file \
+ --env-host \
+ -e MYENV4="$s_env4" \
+ build_test
is "${lines[0]}" "$workdir" "container default command: pwd"
is "${lines[1]}" "$s_echo" "container default command: output from echo"
is "${lines[2]}" "$s_env1" "container default command: env1"
is "${lines[3]}" "$s_env2" "container default command: env2"
- is "${lines[4]}" "$s_env3" "container default command: env3 (from cmdline)"
+ is "${lines[4]}" "$s_env3" "container default command: env3 (from envfile)"
+ is "${lines[5]}" "$s_env4" "container default command: env4 (from cmdline)"
+
+ # Proxies - environment should override container, but not env-file
+ http_proxy=http-proxy-from-env ftp_proxy=ftp-proxy-from-env \
+ run_podman run --rm --env-file=$PODMAN_TMPDIR/env-file \
+ build_test \
+ printenv http_proxy https_proxy ftp_proxy
+ is "${lines[0]}" "http-proxy-in-env-file" "env-file overrides env"
+ is "${lines[1]}" "https-proxy-in-env-file" "env-file sets proxy var"
+ is "${lines[2]}" "ftp-proxy-from-env" "ftp-proxy is passed through"
# test that workdir is set for command-line commands also
run_podman run --rm build_test pwd
@@ -159,8 +196,9 @@ EOF
run_podman image inspect build_test
tests="
Env[1] | MYENV1=$s_env1
-Env[2] | MYENV2=$s_env2
-Env[3] | MYENV3=this-should-be-overridden
+Env[2] | MYENV2=this-should-be-overridden-by-env-host
+Env[3] | MYENV3=this-should-be-overridden-by-env-file
+Env[4] | MYENV4=this-should-be-overridden-by-cmdline
Cmd[0] | /bin/mydefaultcmd
Cmd[1] | $s_echo
WorkingDir | $workdir
@@ -173,10 +211,49 @@ Labels.$label_name | $label_value
is "$actual" "$expect" "jq .Config.$field"
done
+ # Bad symlink in volume. Prior to #7094, well, we wouldn't actually
+ # get here because any 'podman run' on a volume that had symlinks,
+ # be they dangling or valid, would barf with
+ # Error: chown <mountpath>/_data/symlink: ENOENT
+ run_podman run --rm build_test stat -c'%u:%g:%N' /a/b/c/badsymlink
+ is "$output" "0:0:'/a/b/c/badsymlink' -> '/no/such/nonesuch'" \
+ "bad symlink to nonexistent file is chowned and preserved"
+
+ run_podman run --rm build_test stat -c'%u:%g:%N' /a/b/c/goodsymlink
+ is "$output" "0:0:'/a/b/c/goodsymlink' -> '/bin/mydefaultcmd'" \
+ "good symlink to existing file is chowned and preserved"
+
+ run_podman run --rm build_test stat -c'%u:%g' /bin/mydefaultcmd
+ is "$output" "2:3" "target of symlink is not chowned"
+
+ run_podman run --rm build_test stat -c'%u:%g:%N' /a/b/c/myfile
+ is "$output" "0:0:/a/b/c/myfile" "file in volume is chowned to root"
+
# Clean up
run_podman rmi -f build_test
}
+@test "podman build - stdin test" {
+ if is_remote && is_rootless; then
+ skip "unreliable with podman-remote and rootless; #2972"
+ fi
+
+ # Random workdir, and multiple random strings to verify command & env
+ workdir=/$(random_string 10)
+ PODMAN_TIMEOUT=240 run_podman build -t build_test - << EOF
+FROM $IMAGE
+RUN mkdir $workdir
+WORKDIR $workdir
+RUN /bin/echo 'Test'
+EOF
+ is "$output" ".*STEP 5: COMMIT" "COMMIT seen in log"
+
+ run_podman run --rm build_test pwd
+ is "$output" "$workdir" "pwd command in container"
+
+ run_podman rmi -f build_test
+}
+
function teardown() {
# A timeout or other error in 'build' can leave behind stale images
# that podman can't even see and which will cascade into subsequent
diff --git a/test/system/130-kill.bats b/test/system/130-kill.bats
index 7c2b9bed8..c16e64c58 100644
--- a/test/system/130-kill.bats
+++ b/test/system/130-kill.bats
@@ -11,7 +11,7 @@ load helpers
# Workaround: run 'env --default-signal sh' instead of just 'sh' in
# the container. Since env on our regular alpine image doesn't support
# that flag, we need to pull fedora-minimal. See:
- # https://github.com/containers/libpod/issues/5004
+ # https://github.com/containers/podman/issues/5004
# FIXME: remove this kludge once we get rid of podman-remote
local _image=$IMAGE
local _sh_cmd="sh"
diff --git a/test/system/200-pod.bats b/test/system/200-pod.bats
index 0e9d9132e..0ad555305 100644
--- a/test/system/200-pod.bats
+++ b/test/system/200-pod.bats
@@ -165,9 +165,13 @@ function random_ip() {
# Create a pod with all the desired options
# FIXME: --ip=$ip fails:
# Error adding network: failed to allocate all requested IPs
+ local mac_option="--mac-address=$mac"
+ if is_rootless; then
+ mac_option=
+ fi
run_podman pod create --name=mypod \
--pod-id-file=$pod_id_file \
- --mac-address=$mac \
+ $mac_option \
--hostname=$hostname \
--add-host "$add_host_n:$add_host_ip" \
--dns "$dns_server" \
@@ -181,7 +185,7 @@ function random_ip() {
is "$(<$pod_id_file)" "$pod_id" "contents of pod-id-file"
# Check each of the options
- if ! is_rootless; then
+ if [ -n "$mac_option" ]; then
run_podman run --rm --pod mypod $IMAGE ip link show
# 'ip' outputs hex in lower-case, ${expr,,} converts UC to lc
is "$output" ".* link/ether ${mac,,} " "requested MAC address was set"
diff --git a/test/system/500-networking.bats b/test/system/500-networking.bats
index c9d1984d0..234bc1187 100644
--- a/test/system/500-networking.bats
+++ b/test/system/500-networking.bats
@@ -5,7 +5,7 @@
load helpers
-# Copied from tsweeney's https://github.com/containers/libpod/issues/4827
+# Copied from tsweeney's https://github.com/containers/podman/issues/4827
@test "podman networking: port on localhost" {
skip_if_remote
random_1=$(random_string 30)
diff --git a/test/system/TODO.md b/test/system/TODO.md
index f0d311626..e47292f26 100644
--- a/test/system/TODO.md
+++ b/test/system/TODO.md
@@ -15,7 +15,7 @@ CI configuration file.](../../.cirrus.yml)
# Execution
-When working from a clone of [the libpod repository](https://github.com/containers/libpod),
+When working from a clone of [the libpod repository](https://github.com/containers/podman),
the main entry-point for humans and automation is `make localsystem`. When operating
from a packaged version of the system-tests, the entry-point may vary as appropriate.
Running the packaged system-tests assumes the version of Podman matches the test
diff --git a/test/system/helpers.bash b/test/system/helpers.bash
index 4239ef876..abca91739 100644
--- a/test/system/helpers.bash
+++ b/test/system/helpers.bash
@@ -404,7 +404,13 @@ function find_exec_pid_files() {
#
# This obviously screws us up when we look at output results.
#
-# This function removes the warning from $output and $lines
+# This function removes the warning from $output and $lines. We don't
+# do a full string match because there's another variant of that message:
+#
+# WARNING: Creating device "/dev/null" with same type, major and minor as existing "/dev/foodevdir/null".
+#
+# (We should never again see that precise error ever again, but we could
+# see variants of it).
#
function remove_same_dev_warning() {
# No input arguments. We operate in-place on $output and $lines
@@ -412,7 +418,7 @@ function remove_same_dev_warning() {
local i=0
local -a new_lines=()
while [[ $i -lt ${#lines[@]} ]]; do
- if expr "${lines[$i]}" : 'WARNING: .* same type, major.* multiple' >/dev/null; then
+ if expr "${lines[$i]}" : 'WARNING: .* same type, major' >/dev/null; then
:
else
new_lines+=("${lines[$i]}")
diff --git a/test/system/helpers.t b/test/system/helpers.t
index a022f11c4..bee09505c 100755
--- a/test/system/helpers.t
+++ b/test/system/helpers.t
@@ -6,7 +6,7 @@
# anything if we have to mess with them.
#
-source $(dirname $0)/helpers.bash
+source "$(dirname $0)"/helpers.bash
die() {
echo "$(basename $0): $*" >&2
diff --git a/test/utils/common_function_test.go b/test/utils/common_function_test.go
index c08877204..26bb8b473 100644
--- a/test/utils/common_function_test.go
+++ b/test/utils/common_function_test.go
@@ -8,7 +8,7 @@ import (
"reflect"
"strings"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/ginkgo/extensions/table"
. "github.com/onsi/gomega"
diff --git a/test/utils/podmansession_test.go b/test/utils/podmansession_test.go
index fa0b6ec50..d0e2f3d06 100644
--- a/test/utils/podmansession_test.go
+++ b/test/utils/podmansession_test.go
@@ -1,7 +1,7 @@
package utils_test
import (
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/utils/podmantest_test.go b/test/utils/podmantest_test.go
index f4d994c3d..538d55d8d 100644
--- a/test/utils/podmantest_test.go
+++ b/test/utils/podmantest_test.go
@@ -3,7 +3,7 @@ package utils_test
import (
"os"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
)
diff --git a/test/utils/utils_suite_test.go b/test/utils/utils_suite_test.go
index a8a5c6e93..01549f06e 100644
--- a/test/utils/utils_suite_test.go
+++ b/test/utils/utils_suite_test.go
@@ -7,7 +7,7 @@ import (
"strings"
"testing"
- . "github.com/containers/libpod/v2/test/utils"
+ . "github.com/containers/podman/v2/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
"github.com/onsi/gomega/gexec"