diff options
author | Ed Santiago <santiago@redhat.com> | 2021-07-14 13:55:00 -0600 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2021-07-15 05:06:33 -0600 |
commit | 547fff27033a294d1639ee3f9125f775032f39f5 (patch) | |
tree | 056f808343188229738ada44c71432babdcbe391 /test/e2e/mount_test.go | |
parent | 61245884abb181ee4dd46280a56dec5f25d2432d (diff) | |
download | podman-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.go | 153 |
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("")) }) }) |