返回 DeepSeek-Reasonix
workspace_path_test.go
根目录 / desktop / workspace_path_test.go
1 package main
2
3 import (
4 "os"
5 "path/filepath"
6 "testing"
7
8 "reasonix/internal/control"
9 )
10
11 func TestResolveWorkspacePathForTab(t *testing.T) {
12 parentRoot := robustTempDir(t)
13 childRoot := filepath.Join(parentRoot, "child")
14 if err := os.MkdirAll(childRoot, 0o755); err != nil {
15 t.Fatal(err)
16 }
17 if err := os.WriteFile(filepath.Join(childRoot, "shared.txt"), []byte("child"), 0o644); err != nil {
18 t.Fatal(err)
19 }
20 app := &App{tabs: map[string]*WorkspaceTab{
21 "child": {ID: "child", Scope: "project", WorkspaceRoot: childRoot},
22 }}
23
24 absolutePath, err := app.ResolveWorkspacePathForTab("child", "shared.txt")
25 if err != nil || absolutePath != filepath.Join(childRoot, "shared.txt") {
26 t.Fatalf("ResolveWorkspacePathForTab(child) = (%q, %v)", absolutePath, err)
27 }
28 if _, err := app.ResolveWorkspacePathForTab("missing", "shared.txt"); err == nil {
29 t.Fatal("ResolveWorkspacePathForTab accepted a missing tab")
30 }
31 if _, err := app.ResolveWorkspacePathForTab("child", "../parent-only.txt"); err == nil {
32 t.Fatal("ResolveWorkspacePathForTab accepted a path outside the requested tab workspace")
33 }
34 }
35
36 func TestResolveWorkspacePathForTabExternalFolder(t *testing.T) {
37 external := filepath.Join(robustTempDir(t), "Folder With Spaces")
38 if err := os.MkdirAll(filepath.Join(external, "src"), 0o755); err != nil {
39 t.Fatal(err)
40 }
41 expectedExternal := external
42 if resolved, err := filepath.EvalSymlinks(external); err == nil {
43 expectedExternal = resolved
44 }
45 ctrl := &control.Controller{}
46 token, _, err := ctrl.RegisterExternalFolderRef(external)
47 if err != nil {
48 t.Fatalf("RegisterExternalFolderRef: %v", err)
49 }
50 app := &App{tabs: map[string]*WorkspaceTab{
51 "project": {ID: "project", WorkspaceRoot: robustTempDir(t), Ctrl: ctrl},
52 }}
53
54 absolutePath, err := app.ResolveWorkspacePathForTab("project", token+"/src/outside.txt")
55 want := filepath.Join(expectedExternal, "src", "outside.txt")
56 if err != nil || absolutePath != want {
57 t.Fatalf("ResolveWorkspacePathForTab external = (%q, %v), want %q", absolutePath, err, want)
58 }
59 }
60
60 lines GO