From 24a1d634cd1af21e45baec5ae841796e82d563d4 Mon Sep 17 00:00:00 2001 From: oxpoe <324556608+oxpoe@users.noreply.github.com> Date: Fri, 16 Oct 2026 02:11:47 +0700 Subject: [PATCH] test(engine): integrasi podman (skip otomatis bila socket tidak ada) --- internal/docker/podman_test.go | 65 ++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 internal/docker/podman_test.go diff --git a/internal/docker/podman_test.go b/internal/docker/podman_test.go new file mode 100644 index 0000000..11d56c4 --- /dev/null +++ b/internal/docker/podman_test.go @@ -0,0 +1,65 @@ +package docker + +import ( + "context" + "os" + "path/filepath" + "testing" + "time" +) + +// TestIntegrationPodman — dijalankan bila socket Podman tersedia +// (rootless: $XDG_RUNTIME_DIR/podman/podman.sock, atau rootful). +// Mengaktifkan socket rootless: +// +// systemctl --user enable --now podman.socket +func TestIntegrationPodman(t *testing.T) { + host := podmanSocket() + if host == "" { + t.Skip("socket podman tidak ada — lewati") + } + + cl, info, err := Detect(host) + if err != nil { + t.Fatalf("Detect(%s): %v", host, err) + } + defer cl.Close() + if info.Name != "podman" { + t.Fatalf("nama engine harus podman, dapat %q", info.Name) + } + + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + i, err := cl.Info(ctx) + if err != nil { + t.Fatalf("Info: %v", err) + } + t.Logf("podman %s (API %s) · %d/%d kontainer berjalan · %d image", + i.ServerVersion, i.APIVersion, i.Running, i.Containers, i.Images) + + items, err := cl.ListContainers(ctx) + if err != nil { + t.Fatalf("ListContainers: %v", err) + } + t.Logf("ListContainers: %d kontainer", len(items)) + imgs, err := cl.ListImages(ctx) + if err != nil { + t.Fatalf("ListImages: %v", err) + } + t.Logf("ListImages: %d image", len(imgs)) +} + +// podmanSocket — kandidat socket podman yang benar-benar ada (kosong = tidak ada). +func podmanSocket() string { + var cands []string + if xdg := os.Getenv("XDG_RUNTIME_DIR"); xdg != "" { + cands = append(cands, filepath.Join(xdg, "podman", "podman.sock")) + } + cands = append(cands, "/run/podman/podman.sock") + for _, c := range cands { + if _, err := os.Stat(c); err == nil { + return "unix://" + c + } + } + return "" +}