mirror of
https://github.com/stablyai/orca.git
synced 2026-11-01 09:37:33 +00:00
fix(native-chat): prepare SQLite readers for ZCode-only WSL homes
This commit is contained in:
@@ -263,7 +263,7 @@ describe('WSL SQLite runtime preparation', () => {
|
||||
mocks.run.mockResolvedValueOnce(success(''))
|
||||
await prepare([home])
|
||||
await vi.waitFor(async () =>
|
||||
expect((await prepare([home]))[0]?.error).toContain('No OpenCode database')
|
||||
expect((await prepare([home]))[0]?.error).toContain('No OpenCode or ZCode database')
|
||||
)
|
||||
expect(mocks.run).toHaveBeenCalledOnce()
|
||||
expect(mocks.download).not.toHaveBeenCalled()
|
||||
@@ -274,16 +274,19 @@ describe('WSL SQLite runtime preparation', () => {
|
||||
expect(mocks.running).toHaveBeenCalledWith(expect.any(Array), { requireConfirmed: true })
|
||||
})
|
||||
|
||||
it.skipIf(process.platform === 'win32')(
|
||||
'keeps the discovery default visible when guest overrides point elsewhere',
|
||||
async () => {
|
||||
it.skipIf(process.platform === 'win32').each(['opencode', 'zcode'] as const)(
|
||||
'prepares a %s-only distro despite unrelated OpenCode overrides',
|
||||
async (agent) => {
|
||||
await prepared()
|
||||
const script = mocks.run.mock.calls[0]?.[0].script
|
||||
const directory = await mkdtemp(join(tmpdir(), 'orca-wsl-presence-'))
|
||||
try {
|
||||
const data = join(directory, '.local', 'share', 'opencode')
|
||||
const data =
|
||||
agent === 'zcode'
|
||||
? join(directory, '.zcode', 'cli', 'db')
|
||||
: join(directory, '.local', 'share', 'opencode')
|
||||
await mkdir(data, { recursive: true })
|
||||
await writeFile(join(data, 'opencode.db'), '')
|
||||
await writeFile(join(data, agent === 'zcode' ? 'db.sqlite' : 'opencode.db'), '')
|
||||
const result = await runProcess({
|
||||
program: '/bin/sh',
|
||||
args: ['-c', script],
|
||||
|
||||
@@ -113,6 +113,7 @@ async function prepare(distro: string): Promise<OpenCodeWslRuntime> {
|
||||
const hasDatabase = await run({
|
||||
script: [
|
||||
'data="${XDG_DATA_HOME:-$HOME/.local/share}/opencode"',
|
||||
'if [ -f "$HOME/.zcode/cli/db/db.sqlite" ]; then printf present; exit 0; fi',
|
||||
// WSL discovery still enumerates the default data root independently of guest overrides.
|
||||
'for db in "$HOME/.local/share/opencode"/opencode.db "$HOME/.local/share/opencode"/opencode-*.db; do if [ -f "$db" ]; then printf present; exit 0; fi; done',
|
||||
'case "${OPENCODE_DB-}" in',
|
||||
@@ -125,7 +126,7 @@ async function prepare(distro: string): Promise<OpenCodeWslRuntime> {
|
||||
loginPath: 'none'
|
||||
})
|
||||
if (hasDatabase !== 'present') {
|
||||
return { distro, error: 'No OpenCode database is present in this WSL distro.' }
|
||||
return { distro, error: 'No OpenCode or ZCode database is present in this WSL distro.' }
|
||||
}
|
||||
const readerPath = await run({
|
||||
program: 'wslpath',
|
||||
|
||||
Reference in New Issue
Block a user