fix: detect AppData directory paths without trailing separators
This commit is contained in:
parent
5ae45c8c8e
commit
24789334e4
@ -15,6 +15,17 @@ describe("session-directory-resolver", () => {
|
|||||||
expect(result).toBe(true)
|
expect(result).toBe(true)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("returns true when path ends with AppData directory segment", () => {
|
||||||
|
//#given
|
||||||
|
const directory = "C:/Users/test/AppData/Local"
|
||||||
|
|
||||||
|
//#when
|
||||||
|
const result = isWindowsAppDataDirectory(directory)
|
||||||
|
|
||||||
|
//#then
|
||||||
|
expect(result).toBe(true)
|
||||||
|
})
|
||||||
|
|
||||||
test("returns false when path is outside AppData", () => {
|
test("returns false when path is outside AppData", () => {
|
||||||
//#given
|
//#given
|
||||||
const directory = "D:/projects/oh-my-opencode"
|
const directory = "D:/projects/oh-my-opencode"
|
||||||
@ -25,6 +36,17 @@ describe("session-directory-resolver", () => {
|
|||||||
//#then
|
//#then
|
||||||
expect(result).toBe(false)
|
expect(result).toBe(false)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test("returns false for lookalike non-AppData segment", () => {
|
||||||
|
//#given
|
||||||
|
const directory = "D:/projects/appdata/local-tools"
|
||||||
|
|
||||||
|
//#when
|
||||||
|
const result = isWindowsAppDataDirectory(directory)
|
||||||
|
|
||||||
|
//#then
|
||||||
|
expect(result).toBe(false)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
describe("resolveSessionDirectory", () => {
|
describe("resolveSessionDirectory", () => {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
const WINDOWS_APPDATA_SEGMENTS = ["\\appdata\\local\\", "\\appdata\\roaming\\", "\\appdata\\locallow\\"]
|
const WINDOWS_APPDATA_SEGMENTS = ["\\appdata\\local", "\\appdata\\roaming", "\\appdata\\locallow"]
|
||||||
|
|
||||||
function normalizeWindowsPath(directory: string): string {
|
function normalizeWindowsPath(directory: string): string {
|
||||||
return directory.replaceAll("/", "\\").toLowerCase()
|
return directory.replaceAll("/", "\\").toLowerCase()
|
||||||
@ -6,7 +6,9 @@ function normalizeWindowsPath(directory: string): string {
|
|||||||
|
|
||||||
export function isWindowsAppDataDirectory(directory: string): boolean {
|
export function isWindowsAppDataDirectory(directory: string): boolean {
|
||||||
const normalizedDirectory = normalizeWindowsPath(directory)
|
const normalizedDirectory = normalizeWindowsPath(directory)
|
||||||
return WINDOWS_APPDATA_SEGMENTS.some((segment) => normalizedDirectory.includes(segment))
|
return WINDOWS_APPDATA_SEGMENTS.some((segment) => {
|
||||||
|
return normalizedDirectory.endsWith(segment) || normalizedDirectory.includes(`${segment}\\`)
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
export function resolveSessionDirectory(options: {
|
export function resolveSessionDirectory(options: {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user