chore(agent/agentcontainers): skip TestDockerCLIContainerLister by default (#16502)

Addresses a test flake seen here:
https://github.com/coder/coder/actions/runs/13239819615/job/36952521742

Also addresses the case where we would try to run `docker inspect` with
no container IDs, which is a silly thing to do.
This commit is contained in:
Cian Johnston
2025-02-10 12:12:32 +00:00
committed by GitHub
parent 31b1ff7d3b
commit 140f2a9013
2 changed files with 12 additions and 9 deletions

View File

@ -59,6 +59,11 @@ func (dcl *DockerCLILister) List(ctx context.Context) (codersdk.WorkspaceAgentLi
} }
dockerPsStderr := strings.TrimSpace(stderrBuf.String()) dockerPsStderr := strings.TrimSpace(stderrBuf.String())
if len(ids) == 0 {
return codersdk.WorkspaceAgentListContainersResponse{
Warnings: []string{dockerPsStderr},
}, nil
}
// now we can get the detailed information for each container // now we can get the detailed information for each container
// Run `docker inspect` on each container ID // Run `docker inspect` on each container ID

View File

@ -2,8 +2,7 @@ package agentcontainers
import ( import (
"fmt" "fmt"
"os/exec" "os"
"runtime"
"strconv" "strconv"
"strings" "strings"
"testing" "testing"
@ -27,15 +26,14 @@ import (
// dockerCLIContainerLister.List method. It starts a container with a known // dockerCLIContainerLister.List method. It starts a container with a known
// label, lists the containers, and verifies that the expected container is // label, lists the containers, and verifies that the expected container is
// returned. The container is deleted after the test is complete. // returned. The container is deleted after the test is complete.
// As this test creates containers, it is skipped by default.
// It can be run manually as follows:
//
// CODER_TEST_USE_DOCKER=1 go test ./agent/agentcontainers -run TestDockerCLIContainerLister
func TestDockerCLIContainerLister(t *testing.T) { func TestDockerCLIContainerLister(t *testing.T) {
t.Parallel() t.Parallel()
if runtime.GOOS != "linux" { if ctud, ok := os.LookupEnv("CODER_TEST_USE_DOCKER"); !ok || ctud != "1" {
t.Skip("creating containers on non-linux runners is slow and flaky") t.Skip("Set CODER_TEST_USE_DOCKER=1 to run this test")
}
// Conditionally skip if Docker is not available.
if _, err := exec.LookPath("docker"); err != nil {
t.Skip("docker not found in PATH")
} }
pool, err := dockertest.NewPool("") pool, err := dockertest.NewPool("")