mirror of
https://github.com/containers/podman.git
synced 2025-08-06 11:32:07 +08:00

Found by my find-obsolete-skips script. Let's see which, if any, of these skipped tests can be reenabled. Some Skips are "this will never work", not "this is expected to work one day". Update the message on those to reflect that. Some were real bugs in the test framework. Fix those. And, joy of joys, some work today. Remove those skips. Signed-off-by: Ed Santiago <santiago@redhat.com>
177 lines
5.9 KiB
Go
177 lines
5.9 KiB
Go
package integration
|
|
|
|
import (
|
|
"os"
|
|
"path/filepath"
|
|
|
|
. "github.com/containers/podman/v3/test/utils"
|
|
. "github.com/onsi/ginkgo"
|
|
. "github.com/onsi/gomega"
|
|
. "github.com/onsi/gomega/gexec"
|
|
)
|
|
|
|
var _ = Describe("Podman import", 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 import with source and reference", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", outfile, "foobar.com/imported-image:latest"})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
results := podmanTest.Podman([]string{"inspect", "--type", "image", "foobar.com/imported-image:latest"})
|
|
results.WaitWithDefaultTimeout()
|
|
Expect(results).Should(Exit(0))
|
|
})
|
|
|
|
It("podman import without reference", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", outfile})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
// tag the image which proves it is in R/W storage
|
|
tag := podmanTest.Podman([]string{"tag", importImage.OutputToString(), "foo"})
|
|
tag.WaitWithDefaultTimeout()
|
|
Expect(tag).Should(Exit(0))
|
|
})
|
|
|
|
It("podman import with message flag", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", "--message", "importing container test message", outfile, "imported-image"})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
results := podmanTest.Podman([]string{"history", "imported-image", "--format", "{{.Comment}}"})
|
|
results.WaitWithDefaultTimeout()
|
|
Expect(results).Should(Exit(0))
|
|
Expect(results.LineInOutputStartsWith("importing container test message")).To(BeTrue())
|
|
})
|
|
|
|
It("podman import with change flag CMD=<path>", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", "--change", "CMD=/bin/bash", outfile, "imported-image"})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
results := podmanTest.Podman([]string{"inspect", "imported-image"})
|
|
results.WaitWithDefaultTimeout()
|
|
Expect(results).Should(Exit(0))
|
|
imageData := results.InspectImageJSON()
|
|
Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh"))
|
|
Expect(imageData[0].Config.Cmd[1]).To(Equal("-c"))
|
|
Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/bash"))
|
|
})
|
|
|
|
It("podman import with change flag CMD <path>", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", "--change", "CMD /bin/sh", outfile, "imported-image"})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
results := podmanTest.Podman([]string{"inspect", "imported-image"})
|
|
results.WaitWithDefaultTimeout()
|
|
Expect(results).Should(Exit(0))
|
|
imageData := results.InspectImageJSON()
|
|
Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/sh"))
|
|
Expect(imageData[0].Config.Cmd[1]).To(Equal("-c"))
|
|
Expect(imageData[0].Config.Cmd[2]).To(Equal("/bin/sh"))
|
|
})
|
|
|
|
It("podman import with change flag CMD [\"path\",\"path'\"", func() {
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", "--change", "CMD [\"/bin/bash\"]", outfile, "imported-image"})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).Should(Exit(0))
|
|
|
|
results := podmanTest.Podman([]string{"inspect", "imported-image"})
|
|
results.WaitWithDefaultTimeout()
|
|
Expect(results).Should(Exit(0))
|
|
imageData := results.InspectImageJSON()
|
|
Expect(imageData[0].Config.Cmd[0]).To(Equal("/bin/bash"))
|
|
})
|
|
|
|
It("podman import with signature", func() {
|
|
SkipIfRemote("FIXME: remote ignores --signature-policy, #12357")
|
|
|
|
outfile := filepath.Join(podmanTest.TempDir, "container.tar")
|
|
_, ec, cid := podmanTest.RunLsContainer("")
|
|
Expect(ec).To(Equal(0))
|
|
|
|
export := podmanTest.Podman([]string{"export", "-o", outfile, cid})
|
|
export.WaitWithDefaultTimeout()
|
|
Expect(export).Should(Exit(0))
|
|
|
|
importImage := podmanTest.Podman([]string{"import", "--signature-policy", "/no/such/file", outfile})
|
|
importImage.WaitWithDefaultTimeout()
|
|
Expect(importImage).To(ExitWithError())
|
|
|
|
result := podmanTest.Podman([]string{"import", "--signature-policy", "/etc/containers/policy.json", outfile})
|
|
result.WaitWithDefaultTimeout()
|
|
Expect(result).Should(Exit(0))
|
|
})
|
|
})
|