package docker import ( "context" "os" "testing" "time" ) // TestIntegrationInfo dijalankan hanya bila docker socket tersedia — // di CI runner tanpa socket, test di-skip otomatis. func TestIntegrationInfo(t *testing.T) { if _, err := os.Stat("/var/run/docker.sock"); err != nil { t.Skip("docker socket tidak ada — skip tes integrasi") } c, err := New() if err != nil { t.Fatalf("New: %v", err) } defer c.Close() ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() if err := c.Ping(ctx); err != nil { t.Fatalf("Ping: %v", err) } info, err := c.Info(ctx) if err != nil { t.Fatalf("Info: %v", err) } if info.ServerVersion == "" { t.Fatal("ServerVersion kosong") } t.Logf("engine %s (API %s) · %d/%d kontainer berjalan · %d image · %d CPU · %d MB RAM", info.ServerVersion, info.APIVersion, info.Running, info.Containers, info.Images, info.CPUs, info.MemoryTotal/1024/1024) items, err := c.ListContainers(ctx) if err != nil { t.Fatalf("ListContainers: %v", err) } t.Logf("ListContainers: %d kontainer", len(items)) for i, ct := range items { if i >= 5 { break } t.Logf(" - %-20s %-10s %s", ct.Name, ct.State, ct.Image) } }