返回 DeepSeek-Reasonix
workspace_slug_test.go
根目录 / internal / config / workspace_slug_test.go
1 package config
2
3 import "testing"
4
5 // WorkspaceSlug folds case on Windows so equivalent spellings of one
6 // workspace (drive-letter case, Explorer renames) map to a single slug —
7 // the same key form agent.CanonicalSessionPath uses for session paths.
8 func TestWorkspaceSlugFoldsCaseOnWindows(t *testing.T) {
9 setRuntimeGOOS(t, "windows")
10 upper := WorkspaceSlug(`C:\Users\Dev\Proj`)
11 lower := WorkspaceSlug(`c:\users\dev\proj`)
12 if upper != lower {
13 t.Fatalf("WorkspaceSlug case-split on windows: %q vs %q", upper, lower)
14 }
15 if want := "c--users-dev-proj"; upper != want {
16 t.Fatalf("WorkspaceSlug = %q, want %q", upper, want)
17 }
18 }
19
20 // Unix paths are case-sensitive: two spellings that differ in case are two
21 // different directories and must keep distinct slugs.
22 func TestWorkspaceSlugPreservesCaseOffWindows(t *testing.T) {
23 setRuntimeGOOS(t, "linux")
24 if got, want := WorkspaceSlug("/Users/Dev/Proj"), "-Users-Dev-Proj"; got != want {
25 t.Fatalf("WorkspaceSlug = %q, want %q", got, want)
26 }
27 if WorkspaceSlug("/users/dev/proj") == WorkspaceSlug("/Users/Dev/Proj") {
28 t.Fatal("WorkspaceSlug folded case off windows; unix paths are case-sensitive")
29 }
30 }
31
31 lines GO