//go:build integration package docker import ( "testing" ) func TestListContainersAgainstLiveDaemon(t *testing.T) { cli, err := New() if err != nil { t.Skipf("Docker daemon not available: %v", err) return } defer func() { if err := cli.Close(); err != nil { t.Logf("close failed: %v", err) } }() containers, err := cli.ListContainers(t.Context()) if err != nil { t.Fatalf("ListContainers: %v", err) } for i, c := range containers { if c.ID == "" { t.Errorf("container %d has empty ID", i) } if c.Name == "" { t.Errorf("container %d has empty Name", i) } if c.State == "" { t.Errorf("container %d has empty State", i) } if c.Image == "" { t.Errorf("container %d has empty Image", i) } if len(c.Name) > 0 && c.Name[0] == '/' { t.Errorf("container %d name %q has leading slash", i, c.Name) } } t.Logf("found %d containers", len(containers)) for _, c := range containers { t.Logf(" %s: %s (%s)", c.Name, c.State, c.Status) } } func TestConfigEndpointsAgainstLiveDaemon(t *testing.T) { cli, err := New() if err != nil { t.Skipf("Docker daemon not available: %v", err) return } defer func() { if err := cli.Close(); err != nil { t.Logf("close failed: %v", err) } }() ctx := t.Context() images, err := cli.ListImages(ctx) if err != nil { t.Fatalf("ListImages: %v", err) } for i, img := range images { if img.ID == "" { t.Errorf("image %d has empty ID", i) } if len(img.RepoTags) == 0 { t.Errorf("image %d has no repo tags (dangling should be filtered)", i) } } t.Logf("found %d images", len(images)) volumes, err := cli.ListVolumes(ctx) if err != nil { t.Fatalf("ListVolumes: %v", err) } t.Logf("found %d volumes", len(volumes)) networks, err := cli.ListNetworks(ctx) if err != nil { t.Fatalf("ListNetworks: %v", err) } for i, n := range networks { if n.Name == "" { t.Errorf("network %d has empty Name", i) } } t.Logf("found %d networks", len(networks)) containers, err := cli.ListContainers(ctx) if err != nil { t.Fatalf("ListContainers: %v", err) } if len(containers) == 0 { t.Skip("no containers running; skipping inspect/history checks") } cfg, err := cli.InspectContainerConfig(ctx, containers[0].ID) if err != nil { t.Fatalf("InspectContainerConfig: %v", err) } t.Logf("container %s: image=%s status=%s env=%d vars", containers[0].Name, cfg.Image, cfg.Status, len(cfg.Env)) if len(images) > 0 { layers, err := cli.ImageHistory(ctx, images[0].ID) if err != nil { t.Fatalf("ImageHistory: %v", err) } t.Logf("image %s has %d layers", images[0].RepoTags[0], len(layers)) } }