From 71504eedfb6228a8a4b7086c51ffb3d54bcd7d35 Mon Sep 17 00:00:00 2001 From: Brent Baude Date: Mon, 21 Apr 2025 14:29:39 -0500 Subject: [PATCH] Output headers for volume ls when empty To have consistency with other podman commands like `ps` and `images`, `volume ls` should output its headers even when there are no volumes. Fixes: https://github.com/containers/podman/issues/25911 Signed-off-by: Brent Baude --- cmd/podman/volumes/list.go | 5 +---- test/e2e/prune_test.go | 2 +- test/e2e/system_reset_test.go | 2 +- test/e2e/volume_ls_test.go | 11 +++++++---- test/e2e/volume_prune_test.go | 4 ++-- test/e2e/volume_rm_test.go | 8 ++++---- 6 files changed, 16 insertions(+), 16 deletions(-) diff --git a/cmd/podman/volumes/list.go b/cmd/podman/volumes/list.go index 3abfe0cc28..184e61f25e 100644 --- a/cmd/podman/volumes/list.go +++ b/cmd/podman/volumes/list.go @@ -80,11 +80,8 @@ func list(cmd *cobra.Command, args []string) error { return err } - switch { - case report.IsJSON(cliOpts.Format): + if report.IsJSON(cliOpts.Format) { return outputJSON(responses) - case len(responses) < 1: - return nil } return outputTemplate(cmd, responses) } diff --git a/test/e2e/prune_test.go b/test/e2e/prune_test.go index 2b0ff0e012..23a3aecd88 100644 --- a/test/e2e/prune_test.go +++ b/test/e2e/prune_test.go @@ -377,7 +377,7 @@ var _ = Describe("Podman prune", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) // One Pod should not be pruned as it was running Expect(podmanTest.NumberOfPods()).To(Equal(1)) diff --git a/test/e2e/system_reset_test.go b/test/e2e/system_reset_test.go index 679c4ccb3e..46bdac08e3 100644 --- a/test/e2e/system_reset_test.go +++ b/test/e2e/system_reset_test.go @@ -55,7 +55,7 @@ var _ = Describe("podman system reset", Serial, func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) session = podmanTest.Podman([]string{"container", "ls", "-q"}) session.WaitWithDefaultTimeout() diff --git a/test/e2e/volume_ls_test.go b/test/e2e/volume_ls_test.go index d9454c015d..27dce14202 100644 --- a/test/e2e/volume_ls_test.go +++ b/test/e2e/volume_ls_test.go @@ -17,6 +17,13 @@ var _ = Describe("Podman volume ls", func() { }) It("podman ls volume", func() { + // https://github.com/containers/podman/issues/25911 + // Output header for volume ls even when empty + empty := podmanTest.PodmanExitCleanly("volume", "ls") + Expect(empty.OutputToString()).To(ContainSubstring("DRIVER")) + Expect(empty.OutputToString()).To(ContainSubstring("VOLUME NAME")) + Expect(empty.ErrorToStringArray()).To(HaveLen(1)) + session := podmanTest.Podman([]string{"volume", "create", "myvol"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) @@ -94,7 +101,6 @@ var _ = Describe("Podman volume ls", func() { session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=foo"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=bar"}) session.WaitWithDefaultTimeout() @@ -105,7 +111,6 @@ var _ = Describe("Podman volume ls", func() { session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=baz"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) }) It("podman ls volume with --filter until flag", func() { @@ -121,7 +126,6 @@ var _ = Describe("Podman volume ls", func() { session = podmanTest.Podman([]string{"volume", "ls", "--filter", "until=50000"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) }) It("podman volume ls with --filter dangling", func() { @@ -171,7 +175,6 @@ var _ = Describe("Podman volume ls", func() { session = podmanTest.Podman([]string{"volume", "ls", "--filter", "name=volumex"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) session = podmanTest.Podman([]string{"volume", "ls", "--filter", "name=volume1"}) session.WaitWithDefaultTimeout() diff --git a/test/e2e/volume_prune_test.go b/test/e2e/volume_prune_test.go index d8add183f7..f293f38729 100644 --- a/test/e2e/volume_prune_test.go +++ b/test/e2e/volume_prune_test.go @@ -68,7 +68,7 @@ var _ = Describe("Podman volume prune", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman prune volume --filter", func() { @@ -163,7 +163,7 @@ var _ = Describe("Podman volume prune", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman volume prune --filter since/after", func() { diff --git a/test/e2e/volume_rm_test.go b/test/e2e/volume_rm_test.go index 8009a748bb..7333ce1a47 100644 --- a/test/e2e/volume_rm_test.go +++ b/test/e2e/volume_rm_test.go @@ -28,7 +28,7 @@ var _ = Describe("Podman volume rm", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman volume rm with --force flag", func() { @@ -48,7 +48,7 @@ var _ = Describe("Podman volume rm", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman volume remove bogus", func() { @@ -73,7 +73,7 @@ var _ = Describe("Podman volume rm", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman volume rm by partial name", func() { @@ -88,7 +88,7 @@ var _ = Describe("Podman volume rm", func() { session = podmanTest.Podman([]string{"volume", "ls"}) session.WaitWithDefaultTimeout() Expect(session).Should(ExitCleanly()) - Expect(session.OutputToStringArray()).To(BeEmpty()) + Expect(session.OutputToStringArray()).To(HaveLen(1)) }) It("podman volume rm by nonunique partial name", func() {