Files
orca/src/main/opencode/opencode-data-directory.test.ts
T
c6c6c71196 fix(opencode): use cross-platform data directory (#10362)
* fix(opencode): use cross-platform data directory

* fix(opencode): honor in-memory database override

* fix(opencode): harden database discovery coverage

* test(opencode): reproduce Windows session discovery

---------

Co-authored-by: OrcaWin <alpha-eng@stably.ai>
Co-authored-by: OrcaWin <293788423+OrcaWin@users.noreply.github.com>
2026-07-28 19:58:49 -07:00

47 lines
1.4 KiB
TypeScript

import { join } from 'node:path'
import { afterEach, describe, expect, it } from 'vitest'
import {
resolveOpenCodeDataDirectory,
resolveOpenCodeStorageDirectory
} from './opencode-data-directory'
function stubPlatform(platform: NodeJS.Platform): void {
Object.defineProperty(process, 'platform', { value: platform, configurable: true })
}
describe('resolveOpenCodeDataDirectory', () => {
const realPlatform = process.platform
afterEach(() => {
stubPlatform(realPlatform)
})
it('uses XDG_DATA_HOME when it is configured', () => {
expect(resolveOpenCodeDataDirectory({ XDG_DATA_HOME: ' /custom/data ' }, '/users/test')).toBe(
join('/custom/data', 'opencode')
)
})
it.each<NodeJS.Platform>(['win32', 'darwin', 'linux'])(
'uses the OpenCode cross-platform default instead of app-data directories on %s',
(platform) => {
stubPlatform(platform)
const environment = {
LOCALAPPDATA: 'C:\\Users\\test\\AppData\\Local',
APPDATA: 'C:\\Users\\test\\AppData\\Roaming',
OPENCODE_CONFIG_DIR: 'C:\\Users\\test\\.config\\opencode'
}
expect(resolveOpenCodeDataDirectory(environment, '/users/test')).toBe(
join('/users/test', '.local', 'share', 'opencode')
)
}
)
it('derives legacy storage from the same data directory', () => {
expect(resolveOpenCodeStorageDirectory({}, '/users/test')).toBe(
join('/users/test', '.local', 'share', 'opencode', 'storage')
)
})
})