Skip to content

Commit b798926

Browse files
hwwwimdelapenya
andauthored
fix: use regex to find container by name (#558)
Co-authored-by: Manuel de la Peña <[email protected]>
1 parent 5e65c25 commit b798926

File tree

2 files changed

+42
-4
lines changed

2 files changed

+42
-4
lines changed

docker.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1128,9 +1128,11 @@ func (p *DockerProvider) findContainerByName(ctx context.Context, name string) (
11281128
if name == "" {
11291129
return nil, nil
11301130
}
1131+
1132+
// Note that, 'name' filter will use regex to find the containers
11311133
filter := filters.NewArgs(filters.KeyValuePair{
11321134
Key: "name",
1133-
Value: name,
1135+
Value: fmt.Sprintf("^%s$", name),
11341136
})
11351137
containers, err := p.client.ContainerList(ctx, types.ContainerListOptions{Filters: filter})
11361138
if err != nil {

docker_test.go

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import (
55
"database/sql"
66
"errors"
77
"fmt"
8+
// Import mysql into the scope of this package (required)
9+
_ "github.com/go-sql-driver/mysql"
810
"io"
911
"io/ioutil"
1012
"math/rand"
@@ -29,9 +31,6 @@ import (
2931

3032
"github.com/docker/docker/api/types/volume"
3133

32-
// Import mysql into the scope of this package (required)
33-
_ "github.com/go-sql-driver/mysql"
34-
3534
"github.com/docker/docker/api/types"
3635
"github.com/docker/docker/api/types/filters"
3736
"github.com/docker/docker/client"
@@ -2496,3 +2495,40 @@ func randomString() string {
24962495
}
24972496
return b.String()
24982497
}
2498+
2499+
func TestDockerProviderFindContainerByName(t *testing.T) {
2500+
ctx := context.Background()
2501+
provider, err := NewDockerProvider(WithLogger(TestLogger(t)))
2502+
require.NoError(t, err)
2503+
2504+
c1, err := GenericContainer(ctx, GenericContainerRequest{
2505+
ProviderType: providerType,
2506+
ContainerRequest: ContainerRequest{
2507+
Name: "test",
2508+
Image: "nginx:1.17.6",
2509+
WaitingFor: wait.ForExposedPort(),
2510+
},
2511+
Started: true,
2512+
})
2513+
require.NoError(t, err)
2514+
c1Name, err := c1.Name(ctx)
2515+
require.NoError(t, err)
2516+
terminateContainerOnEnd(t, ctx, c1)
2517+
2518+
c2, err := GenericContainer(ctx, GenericContainerRequest{
2519+
ProviderType: providerType,
2520+
ContainerRequest: ContainerRequest{
2521+
Name: "test2",
2522+
Image: "nginx:1.17.6",
2523+
WaitingFor: wait.ForExposedPort(),
2524+
},
2525+
Started: true,
2526+
})
2527+
require.NoError(t, err)
2528+
terminateContainerOnEnd(t, ctx, c2)
2529+
2530+
c, err := provider.findContainerByName(ctx, "test")
2531+
assert.NoError(t, err)
2532+
require.NotNil(t, c)
2533+
assert.Contains(t, c.Names, c1Name)
2534+
}

0 commit comments

Comments
 (0)