Use regex for "pod ps" name filter to match "ps" behavior

Signed-off-by: Joel Smith <joelsmith@redhat.com>
This commit is contained in:
Joel Smith
2020-11-03 14:59:03 -07:00
parent 5f897d2abe
commit a47fe37a97
2 changed files with 28 additions and 1 deletions

View File

@ -1,6 +1,7 @@
package lpfilters
import (
"regexp"
"strconv"
"strings"
@ -78,7 +79,11 @@ func GeneratePodFilterFunc(filter, filterValue string) (
}, nil
case "name":
return func(p *libpod.Pod) bool {
return strings.Contains(p.Name(), filterValue)
match, err := regexp.MatchString(filterValue, p.Name())
if err != nil {
return false
}
return match
}, nil
case "status":
if !util.StringInSlice(filterValue, []string{"stopped", "running", "paused", "exited", "dead", "created"}) {

View File

@ -107,6 +107,28 @@ var _ = Describe("Podman ps", func() {
Expect(result.ExitCode()).To(Equal(0))
})
It("podman pod ps filter name regexp", func() {
_, ec, podid := podmanTest.CreatePod("mypod")
Expect(ec).To(Equal(0))
_, ec2, _ := podmanTest.CreatePod("mypod1")
Expect(ec2).To(Equal(0))
result := podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "name=mypod"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
output := result.OutputToStringArray()
Expect(len(output)).To(Equal(2))
result = podmanTest.Podman([]string{"pod", "ps", "-q", "--no-trunc", "--filter", "name=mypod$"})
result.WaitWithDefaultTimeout()
Expect(result.ExitCode()).To(Equal(0))
output = result.OutputToStringArray()
Expect(len(output)).To(Equal(1))
Expect(output[0]).To(Equal(podid))
})
It("podman pod ps mutually exclusive flags", func() {
session := podmanTest.Podman([]string{"pod", "ps", "-q", "--format", "{{.ID}}"})
session.WaitWithDefaultTimeout()