summaryrefslogtreecommitdiff
path: root/test/e2e/mount_test.go
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2021-07-14 13:55:00 -0600
committerEd Santiago <santiago@redhat.com>2021-07-15 05:06:33 -0600
commit547fff27033a294d1639ee3f9125f775032f39f5 (patch)
tree056f808343188229738ada44c71432babdcbe391 /test/e2e/mount_test.go
parent61245884abb181ee4dd46280a56dec5f25d2432d (diff)
downloadpodman-547fff27033a294d1639ee3f9125f775032f39f5.tar.gz
podman-547fff27033a294d1639ee3f9125f775032f39f5.tar.bz2
podman-547fff27033a294d1639ee3f9125f775032f39f5.zip
e2e tests: use Should(Exit()) and ExitWithError()
e2e test failures are rife with messages like: Expected 1 to equal 0 These make me cry. They're anti-helpful, requiring the reader to dive into the source code to figure out what those numbers mean. Solution: Go tests have a '.Should(Exit(NNN))' mechanism. I don't know if it spits out a better diagnostic (I have no way to run e2e tests on my laptop), but I have to fantasize that it will, and given the state of our flakes I assume that at least one test will fail and give me the opportunity to see what the error message looks like. THIS IS NOT REVIEWABLE CODE. There is no way for a human to review it. Don't bother. Maybe look at a few random ones for sanity. If you want to really review, here is a reproducer of what I did: cd test/e2e ! positive assertions. The second is the same as the first, ! with the addition of (unnecessary) parentheses because ! some invocations were written that way. The third is BeZero(). perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.To\(Equal\((\d+)\)\)/Expect($1).Should(Exit($2))/' *_test.go perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.To\(\(Equal\((\d+)\)\)\)/Expect($1).Should(Exit($2))/' *_test.go perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.To\(BeZero\(\)\)/Expect($1).Should(Exit(0))/' *_test.go ! Same as above, but handles three non-numeric exit codes ! in run_exit_test.go perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.To\(Equal\((\S+)\)\)/Expect($1).Should(Exit($2))/' *_test.go ! negative assertions. Difference is the spelling of 'To(Not)', ! 'ToNot', and 'NotTo'. I assume those are all the same. perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.To\(Not\(Equal\((0)\)\)\)/Expect($1).To(ExitWithError())/' *_test.go perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.ToNot\(Equal\((0)\)\)/Expect($1).To(ExitWithError())/' *_test.go perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.NotTo\(Equal\((0)\)\)/Expect($1).To(ExitWithError())/' *_test.go ! negative, old use of BeZero() perl -pi -e 's/Expect\((\S+)\.ExitCode\(\)\)\.ToNot\(BeZero\(\)\)/Expect($1).Should(ExitWithError())/' *_test.go Run those on a clean copy of main branch (at the same branch point as my PR, of course), then diff against a checked-out copy of my PR. There should be no differences. Then all you have to review is that my replacements above are sane. UPDATE: nope, that's not enough, you also need to add gomega/gexec to the files that don't have it: perl -pi -e '$_ .= "$1/gexec\"\n" if m!^(.*/onsi/gomega)"!' $(grep -L gomega/gexec $(git log -1 --stat | awk '$1 ~ /test\/e2e\// { print $1}')) UPDATE 2: hand-edit run_volume_test.go UPDATE 3: sigh, add WaitWithDefaultTimeout() to a couple of places UPDATE 4: skip a test due to bug #10935 (race condition) Signed-off-by: Ed Santiago <santiago@redhat.com>
Diffstat (limited to 'test/e2e/mount_test.go')
-rw-r--r--test/e2e/mount_test.go153
1 files changed, 77 insertions, 76 deletions
diff --git a/test/e2e/mount_test.go b/test/e2e/mount_test.go
index ee77f2984..141d1a386 100644
--- a/test/e2e/mount_test.go
+++ b/test/e2e/mount_test.go
@@ -6,6 +6,7 @@ import (
. "github.com/containers/podman/v3/test/utils"
. "github.com/onsi/ginkgo"
. "github.com/onsi/gomega"
+ . "github.com/onsi/gomega/gexec"
)
var _ = Describe("Podman mount", func() {
@@ -37,175 +38,175 @@ var _ = Describe("Podman mount", func() {
It("podman mount", func() {
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
mount := podmanTest.Podman([]string{"mount", cid})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
umount := podmanTest.Podman([]string{"umount", cid})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman container mount", func() {
setup := podmanTest.Podman([]string{"container", "create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
mount := podmanTest.Podman([]string{"container", "mount", cid})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
umount := podmanTest.Podman([]string{"container", "umount", cid})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman mount with json format", func() {
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
mount := podmanTest.Podman([]string{"mount", cid})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
j := podmanTest.Podman([]string{"mount", "--format=json"})
j.WaitWithDefaultTimeout()
- Expect(j.ExitCode()).To(Equal(0))
+ Expect(j).Should(Exit(0))
Expect(j.IsJSONOutputValid()).To(BeTrue())
j = podmanTest.Podman([]string{"mount", "--format='{{.foobar}}'"})
j.WaitWithDefaultTimeout()
- Expect(j.ExitCode()).ToNot(Equal(0))
+ Expect(j).To(ExitWithError())
Expect(j.ErrorToString()).To(ContainSubstring("unknown --format"))
umount := podmanTest.Podman([]string{"umount", cid})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman mount many", func() {
setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup1.WaitWithDefaultTimeout()
- Expect(setup1.ExitCode()).To(Equal(0))
+ Expect(setup1).Should(Exit(0))
cid1 := setup1.OutputToString()
setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup2.WaitWithDefaultTimeout()
- Expect(setup2.ExitCode()).To(Equal(0))
+ Expect(setup2).Should(Exit(0))
cid2 := setup2.OutputToString()
setup3 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup3.WaitWithDefaultTimeout()
- Expect(setup3.ExitCode()).To(Equal(0))
+ Expect(setup3).Should(Exit(0))
cid3 := setup3.OutputToString()
mount1 := podmanTest.Podman([]string{"mount", cid1, cid2, cid3})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
umount := podmanTest.Podman([]string{"umount", cid1, cid2, cid3})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman umount many", func() {
setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup1.WaitWithDefaultTimeout()
- Expect(setup1.ExitCode()).To(Equal(0))
+ Expect(setup1).Should(Exit(0))
cid1 := setup1.OutputToString()
setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup2.WaitWithDefaultTimeout()
- Expect(setup2.ExitCode()).To(Equal(0))
+ Expect(setup2).Should(Exit(0))
cid2 := setup2.OutputToString()
mount1 := podmanTest.Podman([]string{"mount", cid1})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
mount2 := podmanTest.Podman([]string{"mount", cid2})
mount2.WaitWithDefaultTimeout()
- Expect(mount2.ExitCode()).To(Equal(0))
+ Expect(mount2).Should(Exit(0))
umount := podmanTest.Podman([]string{"umount", cid1, cid2})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman umount all", func() {
setup1 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup1.WaitWithDefaultTimeout()
- Expect(setup1.ExitCode()).To(Equal(0))
+ Expect(setup1).Should(Exit(0))
cid1 := setup1.OutputToString()
setup2 := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup2.WaitWithDefaultTimeout()
- Expect(setup2.ExitCode()).To(Equal(0))
+ Expect(setup2).Should(Exit(0))
cid2 := setup2.OutputToString()
mount1 := podmanTest.Podman([]string{"mount", cid1})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
mount2 := podmanTest.Podman([]string{"mount", cid2})
mount2.WaitWithDefaultTimeout()
- Expect(mount2.ExitCode()).To(Equal(0))
+ Expect(mount2).Should(Exit(0))
umount := podmanTest.Podman([]string{"umount", "--all"})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman list mounted container", func() {
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(Equal(""))
mount := podmanTest.Podman([]string{"mount", cid})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(ContainSubstring(cid))
umount := podmanTest.Podman([]string{"umount", cid})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman list running container", func() {
setup := podmanTest.Podman([]string{"run", "-dt", ALPINE, "top"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(ContainSubstring(cid))
stop := podmanTest.Podman([]string{"stop", cid})
stop.WaitWithDefaultTimeout()
- Expect(stop.ExitCode()).To(Equal(0))
+ Expect(stop).Should(Exit(0))
lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(Equal(""))
})
@@ -213,42 +214,42 @@ var _ = Describe("Podman mount", func() {
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid1 := setup.OutputToString()
setup = podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid2 := setup.OutputToString()
setup = podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid3 := setup.OutputToString()
lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(Equal(""))
mount := podmanTest.Podman([]string{"mount", cid1, cid3})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(ContainSubstring(cid1))
Expect(lmount.OutputToString()).ToNot(ContainSubstring(cid2))
Expect(lmount.OutputToString()).To(ContainSubstring(cid3))
umount := podmanTest.Podman([]string{"umount", cid1, cid3})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(Equal(""))
})
@@ -257,95 +258,95 @@ var _ = Describe("Podman mount", func() {
setup := podmanTest.Podman([]string{"create", ALPINE, "ls"})
setup.WaitWithDefaultTimeout()
- Expect(setup.ExitCode()).To(Equal(0))
+ Expect(setup).Should(Exit(0))
cid := setup.OutputToString()
lmount := podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(Equal(""))
mount := podmanTest.Podman([]string{"mount", cid})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
lmount = podmanTest.Podman([]string{"mount", "--notruncate"})
lmount.WaitWithDefaultTimeout()
- Expect(lmount.ExitCode()).To(Equal(0))
+ Expect(lmount).Should(Exit(0))
Expect(lmount.OutputToString()).To(ContainSubstring(cid))
umount := podmanTest.Podman([]string{"umount", cid})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman image mount", func() {
images := podmanTest.Podman([]string{"images"})
images.WaitWithDefaultTimeout()
- Expect(images.ExitCode()).To(Equal(0))
+ Expect(images).Should(Exit(0))
mount := podmanTest.Podman([]string{"image", "mount", ALPINE})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
umount := podmanTest.Podman([]string{"image", "umount", ALPINE})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(Equal(""))
// Mount multiple times
mount = podmanTest.Podman([]string{"image", "mount", ALPINE})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount", ALPINE})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
// Unmount once
mount = podmanTest.Podman([]string{"image", "mount", ALPINE})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
mount = podmanTest.Podman([]string{"image", "umount", "--all"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
})
It("podman mount with json format", func() {
podmanTest.AddImageToRWStore(fedoraMinimal)
mount := podmanTest.Podman([]string{"image", "mount", fedoraMinimal})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
j := podmanTest.Podman([]string{"image", "mount", "--format=json"})
j.WaitWithDefaultTimeout()
- Expect(j.ExitCode()).To(Equal(0))
+ Expect(j).Should(Exit(0))
Expect(j.IsJSONOutputValid()).To(BeTrue())
umount := podmanTest.Podman([]string{"image", "umount", fedoraMinimal})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
})
It("podman umount --all", func() {
podmanTest.AddImageToRWStore(fedoraMinimal)
mount := podmanTest.Podman([]string{"image", "mount", fedoraMinimal})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
umount := podmanTest.Podman([]string{"image", "umount", "--all"})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
Expect(len(umount.OutputToStringArray())).To(Equal(1))
})
@@ -356,66 +357,66 @@ var _ = Describe("Podman mount", func() {
mount1 := podmanTest.Podman([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
umount := podmanTest.Podman([]string{"image", "umount", fedoraMinimal, ALPINE})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
mount := podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(ContainSubstring("busybox"))
mount1 = podmanTest.Podman([]string{"image", "unmount", "busybox"})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(Equal(""))
mount1 = podmanTest.Podman([]string{"image", "mount", fedoraMinimal, ALPINE, "busybox"})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal))
Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
umount = podmanTest.Podman([]string{"image", "umount", "--all"})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(Equal(""))
umount = podmanTest.Podman([]string{"image", "umount", fedoraMinimal, ALPINE})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
mount1 = podmanTest.Podman([]string{"image", "mount", "--all"})
mount1.WaitWithDefaultTimeout()
- Expect(mount1.ExitCode()).To(Equal(0))
+ Expect(mount1).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(ContainSubstring(fedoraMinimal))
Expect(mount.OutputToString()).To(ContainSubstring(ALPINE))
umount = podmanTest.Podman([]string{"image", "umount", "--all"})
umount.WaitWithDefaultTimeout()
- Expect(umount.ExitCode()).To(Equal(0))
+ Expect(umount).Should(Exit(0))
mount = podmanTest.Podman([]string{"image", "mount"})
mount.WaitWithDefaultTimeout()
- Expect(mount.ExitCode()).To(Equal(0))
+ Expect(mount).Should(Exit(0))
Expect(mount.OutputToString()).To(Equal(""))
})
})