@@ -304,6 +304,42 @@ func TestContainerListWithFilter(t *testing.T) {
304304 return nil
305305 })
306306
307+ // should support regexp
308+ base .Cmd ("ps" , "--filter" , "name=.*" + testContainerA .name + ".*" ).AssertOutWithFunc (func (stdout string ) error {
309+ lines := strings .Split (strings .TrimSpace (stdout ), "\n " )
310+ if len (lines ) < 2 {
311+ return fmt .Errorf ("expected at least 2 lines, got %d" , len (lines ))
312+ }
313+
314+ tab := tabutil .NewReader ("CONTAINER ID\t IMAGE\t COMMAND\t CREATED\t STATUS\t PORTS\t NAMES" )
315+ err := tab .ParseHeader (lines [0 ])
316+ if err != nil {
317+ return fmt .Errorf ("failed to parse header: %v" , err )
318+ }
319+
320+ containerName , _ := tab .ReadRow (lines [1 ], "NAMES" )
321+ assert .Equal (t , containerName , testContainerA .name )
322+ return nil
323+ })
324+
325+ // fully anchored regexp
326+ base .Cmd ("ps" , "--filter" , "name=^" + testContainerA .name + "$" ).AssertOutWithFunc (func (stdout string ) error {
327+ lines := strings .Split (strings .TrimSpace (stdout ), "\n " )
328+ if len (lines ) < 2 {
329+ return fmt .Errorf ("expected at least 2 lines, got %d" , len (lines ))
330+ }
331+
332+ tab := tabutil .NewReader ("CONTAINER ID\t IMAGE\t COMMAND\t CREATED\t STATUS\t PORTS\t NAMES" )
333+ err := tab .ParseHeader (lines [0 ])
334+ if err != nil {
335+ return fmt .Errorf ("failed to parse header: %v" , err )
336+ }
337+
338+ containerName , _ := tab .ReadRow (lines [1 ], "NAMES" )
339+ assert .Equal (t , containerName , testContainerA .name )
340+ return nil
341+ })
342+
307343 base .Cmd ("ps" , "-q" , "--filter" , "name=" + testContainerA .name + testContainerA .name ).AssertOutWithFunc (func (stdout string ) error {
308344 lines := strings .Split (strings .TrimSpace (stdout ), "\n " )
309345 if len (lines ) > 0 {
0 commit comments