Files
miandmhoennig f9c1ae835d Api socket (#5)
Co-authored-by: mhoennig <michael@hoennig.de>
Reviewed-on: #5
2026-09-10 22:09:58 +02:00

43 lines
1.2 KiB
Go

package registry
import (
"os"
"path/filepath"
"strings"
"testing"
)
func noExecutable() (string, error) { return "", os.ErrNotExist }
func TestFindCranePrefersWerkdockCrane(t *testing.T) {
dir := t.TempDir()
configured := filepath.Join(dir, "my-crane")
if err := os.WriteFile(configured, []byte("#!/bin/sh\n"), 0o755); err != nil {
t.Fatal(err)
}
t.Setenv("PATH", "")
got, err := FindCrane(configured, noExecutable)
if err != nil || got != configured {
t.Fatalf("got %q, %v", got, err)
}
if _, err := FindCrane(filepath.Join(dir, "missing"), noExecutable); err == nil || !strings.Contains(err.Error(), "WERKDOCK_CRANE") {
t.Errorf("missing configured binary: got %v", err)
}
}
func TestFindCraneBesideWerkdock(t *testing.T) {
dir := t.TempDir()
beside := filepath.Join(dir, "crane")
if err := os.WriteFile(beside, []byte("#!/bin/sh\n"), 0o755); err != nil {
t.Fatal(err)
}
t.Setenv("PATH", "")
got, err := FindCrane("", func() (string, error) { return filepath.Join(dir, "werkdock"), nil })
if err != nil || got != beside {
t.Fatalf("got %q, %v", got, err)
}
if _, err := FindCrane("", noExecutable); err == nil || !strings.Contains(err.Error(), "crane binary") {
t.Errorf("no crane anywhere: got %v", err)
}
}