aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAditya R <arajan@redhat.com>2022-07-05 12:06:47 +0530
committerAditya R <arajan@redhat.com>2022-07-05 12:39:37 +0530
commitefe1176dd90ea38742c53c8588fbc83e6b9aefd6 (patch)
tree95663b42497a6aeddf51637cf35a1827edcf33fe /test
parent3e7e66edad1269420cb45bcabbd93ac4d0e1b585 (diff)
downloadpodman-efe1176dd90ea38742c53c8588fbc83e6b9aefd6.tar.gz
podman-efe1176dd90ea38742c53c8588fbc83e6b9aefd6.tar.bz2
podman-efe1176dd90ea38742c53c8588fbc83e6b9aefd6.zip
specgen,run: support running container from valid manifest list
Following PR adds support for running containers from a manifest list present on localstorage. Before this PR podman only supports running containers from valid images but not from manifest list. So `podman run -it --platform <some> <manifest-list> command` should become functional now and users should be able to resolve images on the bases of provided `--platform` string. Example ``` podman manifest create test podman build --platform linux/amd64,linux/arm64 --manifest test . podman run --rm --platform linux/arm64/v8 test uname -a ``` Closes: https://github.com/containers/podman/issues/14773 Signed-off-by: Aditya R <arajan@redhat.com>
Diffstat (limited to 'test')
-rw-r--r--test/e2e/build/Containerfile.with-platform1
-rw-r--r--test/e2e/run_test.go22
2 files changed, 23 insertions, 0 deletions
diff --git a/test/e2e/build/Containerfile.with-platform b/test/e2e/build/Containerfile.with-platform
new file mode 100644
index 000000000..3bb585a0a
--- /dev/null
+++ b/test/e2e/build/Containerfile.with-platform
@@ -0,0 +1 @@
+FROM --platform=$TARGETPLATFORM alpine
diff --git a/test/e2e/run_test.go b/test/e2e/run_test.go
index 42b01bdcc..2aa5a78db 100644
--- a/test/e2e/run_test.go
+++ b/test/e2e/run_test.go
@@ -73,6 +73,28 @@ var _ = Describe("Podman run", func() {
Expect(session.OutputToString()).To(ContainSubstring("graphRootMounted=1"))
})
+ It("podman run from manifest list", func() {
+ session := podmanTest.Podman([]string{"manifest", "create", "localhost/test:latest"})
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+
+ session = podmanTest.Podman([]string{"build", "-f", "build/Containerfile.with-platform", "--platform", "linux/amd64,linux/arm64", "--manifest", "localhost/test:latest"})
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+
+ session = podmanTest.Podman([]string{"run", "--platform", "linux/arm64", "localhost/test", "uname", "-a"})
+ session.WaitWithDefaultTimeout()
+ exitCode := session.ExitCode()
+ // CI could either support requested platform or not, if it supports then output should contain `aarch64`
+ // if not run should fail with a very specific error i.e `Exec format error` anything other than this should
+ // be marked as failure of test.
+ if exitCode == 0 {
+ Expect(session.OutputToString()).To(ContainSubstring("aarch64"))
+ } else {
+ Expect(session.ErrorToString()).To(ContainSubstring("Exec format error"))
+ }
+ })
+
It("podman run a container based on a complex local image name", func() {
imageName := strings.TrimPrefix(nginx, "quay.io/")
session := podmanTest.Podman([]string{"run", imageName, "ls"})