Files
2026-07-13 13:00:08 +08:00

31 lines
1.1 KiB
Go

package config
import "testing"
// WorkspaceSlug folds case on Windows so equivalent spellings of one
// workspace (drive-letter case, Explorer renames) map to a single slug —
// the same key form agent.CanonicalSessionPath uses for session paths.
func TestWorkspaceSlugFoldsCaseOnWindows(t *testing.T) {
setRuntimeGOOS(t, "windows")
upper := WorkspaceSlug(`C:\Users\Dev\Proj`)
lower := WorkspaceSlug(`c:\users\dev\proj`)
if upper != lower {
t.Fatalf("WorkspaceSlug case-split on windows: %q vs %q", upper, lower)
}
if want := "c--users-dev-proj"; upper != want {
t.Fatalf("WorkspaceSlug = %q, want %q", upper, want)
}
}
// Unix paths are case-sensitive: two spellings that differ in case are two
// different directories and must keep distinct slugs.
func TestWorkspaceSlugPreservesCaseOffWindows(t *testing.T) {
setRuntimeGOOS(t, "linux")
if got, want := WorkspaceSlug("/Users/Dev/Proj"), "-Users-Dev-Proj"; got != want {
t.Fatalf("WorkspaceSlug = %q, want %q", got, want)
}
if WorkspaceSlug("/users/dev/proj") == WorkspaceSlug("/Users/Dev/Proj") {
t.Fatal("WorkspaceSlug folded case off windows; unix paths are case-sensitive")
}
}