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 <bbaude@redhat.com>
This commit is contained in:
Brent Baude 2025-04-21 14:29:39 -05:00
parent b849550997
commit 71504eedfb
6 changed files with 16 additions and 16 deletions

View File

@ -80,11 +80,8 @@ func list(cmd *cobra.Command, args []string) error {
return err return err
} }
switch { if report.IsJSON(cliOpts.Format) {
case report.IsJSON(cliOpts.Format):
return outputJSON(responses) return outputJSON(responses)
case len(responses) < 1:
return nil
} }
return outputTemplate(cmd, responses) return outputTemplate(cmd, responses)
} }

View File

@ -377,7 +377,7 @@ var _ = Describe("Podman prune", func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) 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 // One Pod should not be pruned as it was running
Expect(podmanTest.NumberOfPods()).To(Equal(1)) Expect(podmanTest.NumberOfPods()).To(Equal(1))

View File

@ -55,7 +55,7 @@ var _ = Describe("podman system reset", Serial, func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
session = podmanTest.Podman([]string{"container", "ls", "-q"}) session = podmanTest.Podman([]string{"container", "ls", "-q"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()

View File

@ -17,6 +17,13 @@ var _ = Describe("Podman volume ls", func() {
}) })
It("podman ls volume", 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 := podmanTest.Podman([]string{"volume", "create", "myvol"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) 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 = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=foo"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty())
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=bar"}) session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=bar"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
@ -105,7 +111,6 @@ var _ = Describe("Podman volume ls", func() {
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=baz"}) session = podmanTest.Podman([]string{"volume", "ls", "--filter", "label=foo=baz"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty())
}) })
It("podman ls volume with --filter until flag", func() { 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 = podmanTest.Podman([]string{"volume", "ls", "--filter", "until=50000"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty())
}) })
It("podman volume ls with --filter dangling", func() { 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 = podmanTest.Podman([]string{"volume", "ls", "--filter", "name=volumex"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty())
session = podmanTest.Podman([]string{"volume", "ls", "--filter", "name=volume1"}) session = podmanTest.Podman([]string{"volume", "ls", "--filter", "name=volume1"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()

View File

@ -68,7 +68,7 @@ var _ = Describe("Podman volume prune", func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman prune volume --filter", func() { It("podman prune volume --filter", func() {
@ -163,7 +163,7 @@ var _ = Describe("Podman volume prune", func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman volume prune --filter since/after", func() { It("podman volume prune --filter since/after", func() {

View File

@ -28,7 +28,7 @@ var _ = Describe("Podman volume rm", func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman volume rm with --force flag", func() { 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 = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman volume remove bogus", func() { It("podman volume remove bogus", func() {
@ -73,7 +73,7 @@ var _ = Describe("Podman volume rm", func() {
session = podmanTest.Podman([]string{"volume", "ls"}) session = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman volume rm by partial name", func() { 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 = podmanTest.Podman([]string{"volume", "ls"})
session.WaitWithDefaultTimeout() session.WaitWithDefaultTimeout()
Expect(session).Should(ExitCleanly()) Expect(session).Should(ExitCleanly())
Expect(session.OutputToStringArray()).To(BeEmpty()) Expect(session.OutputToStringArray()).To(HaveLen(1))
}) })
It("podman volume rm by nonunique partial name", func() { It("podman volume rm by nonunique partial name", func() {