test(desktop): canonicalize pnpm fixture paths on Windows

This commit is contained in:
07akioni committed 2026-09-11 11:39:14 +08:00
1 parent ae84dd3381
commit 7fe6acdf8b
1 file changed
+11 -3
+11 -3
View File
@@ -13,7 +13,8 @@ import { resolveDesktopPaths } from '../src/paths.ts'
import { runtimeFixture, writePackage } from './runtime-fixture.ts'
it('installs a real pnpm graph and executes scripts approved by user configuration', async () => {
const root = realpathSync(mkdtempSync(join(tmpdir(), 'desktop-real-pnpm-')))
// pnpm resolves its cwd natively; use the same spelling for Windows 8.3 temp paths.
const root = realpathSync.native(mkdtempSync(join(tmpdir(), 'desktop-real-pnpm-')))
const server = createServer()
const archives = new Map<string, Buffer>()
try {
@@ -59,7 +60,14 @@ it('installs a real pnpm graph and executes scripts approved by user configurati
writeFileSync(join(manager.paths.profile, 'pnpm-workspace.yaml'), `packages:\n - .\nnodeLinker: hoisted\nautoInstallPeers: false\nstoreDir: ${JSON.stringify(join(root, 'store'))}\nallowBuilds:\n fixture-script-dependency: true\n`)
await manager.mutate({ type: 'plugin-add', spec: '[email protected]' }, hooks)
expect(manager.listPlugins()).toEqual([{ name: 'fixture-plugin', version: '1.0.0', enabled: true }])
const built = JSON.parse(readFileSync(join(manager.paths.profile, 'node_modules/fixture-script-dependency/built.json'), 'utf8')) as { node: string }
const builtPath = join(manager.paths.profile, 'node_modules/fixture-script-dependency/built.json')
if (!existsSync(builtPath)) {
const config = (name: string): string => execFileSync(process.execPath, [pnpm, 'config', 'get', name], {
cwd: manager.paths.profile, encoding: 'utf8',
}).trim()
throw new Error(`pnpm install script produced no output: ignoreScripts=${config('ignoreScripts')}, allowBuilds=${config('allowBuilds')}`)
}
const built = JSON.parse(readFileSync(builtPath, 'utf8')) as { node: string }
expect(realpathSync(built.node)).toBe(realpathSync(process.execPath))
const entry = join(dsh, 'identity.mjs')
writeFileSync(entry, `import {identity} from '@deepseek-ai/cordis'; import {identity as plugin} from ${JSON.stringify(pathToFileURL(join(manager.paths.profile, 'node_modules/fixture-plugin/index.js')).href)}; console.log(identity === plugin)`)
@@ -81,7 +89,7 @@ it('installs a real pnpm graph and executes scripts approved by user configurati
}, 30_000)
it.each(['directory', 'file', 'tarball', 'plain'] as const)('installs a %s source through pnpm', async (source) => {
const root = realpathSync(mkdtempSync(join(tmpdir(), 'desktop-local-pnpm-')))
const root = realpathSync.native(mkdtempSync(join(tmpdir(), 'desktop-local-pnpm-')))
try {
const dsh = join(root, 'dsh')
runtimeFixture(dsh)