fix(cli): honor local installation discovery precedence
This commit is contained in:
@@ -64,6 +64,44 @@ func TestResolveFindsDeployDescriptorFromNestedDirectory(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveUsesLocalCandidateBeforeAncestorCandidate(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
writeDiscoverableProject(t, root)
|
||||
ancestor := writeDiscoverableInstallation(t, root, filepath.Join(root, "deploy", "ancestor"))
|
||||
localDirectory := filepath.Join(root, "frontend", "feature")
|
||||
local := writeDiscoverableInstallation(t, root, filepath.Join(localDirectory, "deploy", "local"))
|
||||
|
||||
got, err := Resolve("", func(string) string { return "" }, localDirectory)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
want, err := filepath.EvalSymlinks(local)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != want {
|
||||
t.Fatalf("Resolve() = %q, want local %q before ancestor %q", got, want, ancestor)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveDiscoversDescriptorFromLinkedWorktree(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
writeDiscoverableLinkedWorktree(t, root)
|
||||
want := writeDiscoverableInstallation(t, root, filepath.Join(root, "deploy", "worktree"))
|
||||
|
||||
got, err := Resolve("", func(string) string { return "" }, filepath.Join(root, "frontend"))
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
canonicalWant, err := filepath.EvalSymlinks(want)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if got != canonicalWant {
|
||||
t.Fatalf("Resolve() = %q, want %q from linked worktree", got, canonicalWant)
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveIgnoresArtifactsAndRejectsAmbiguousValidCandidates(t *testing.T) {
|
||||
root := t.TempDir()
|
||||
writeDiscoverableProject(t, root)
|
||||
@@ -112,13 +150,26 @@ func TestResolveDoesNotSearchAboveTheDiscoveredProjectRoot(t *testing.T) {
|
||||
}
|
||||
|
||||
func writeDiscoverableProject(t *testing.T, root string) {
|
||||
writeDiscoverableProjectWithGitMarker(t, root, false)
|
||||
}
|
||||
|
||||
func writeDiscoverableLinkedWorktree(t *testing.T, root string) {
|
||||
writeDiscoverableProjectWithGitMarker(t, root, true)
|
||||
}
|
||||
|
||||
func writeDiscoverableProjectWithGitMarker(t *testing.T, root string, linkedWorktree bool) {
|
||||
t.Helper()
|
||||
for _, path := range []string{"backend", "frontend", "harness", "tools", "deploy"} {
|
||||
if err := os.MkdirAll(filepath.Join(root, path), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
if err := os.MkdirAll(filepath.Join(root, ".git"), 0o755); err != nil {
|
||||
gitPath := filepath.Join(root, ".git")
|
||||
if linkedWorktree {
|
||||
if err := os.WriteFile(gitPath, []byte("gitdir: /tmp/thothii-worktree.git\n"), 0o600); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
} else if err := os.MkdirAll(gitPath, 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if err := os.WriteFile(filepath.Join(root, "compose.yaml"), []byte("services: {}\n"), 0o600); err != nil {
|
||||
|
||||
Reference in New Issue
Block a user