| 63 | |
| 64 | // require() the SDK in a child process so each case gets a fresh module cache. |
| 65 | function requireSdk(mainPkg: string, env: Record<string, string> = {}) { |
| 66 | const code = |
| 67 | `try { const m = require(${JSON.stringify(path.join(mainPkg, 'npm-sdk.js'))});` + |
| 68 | ` process.stdout.write(JSON.stringify({ sentinel: m.SENTINEL, cg: typeof m.CodeGraph })); }` + |
| 69 | ` catch (e) { process.stderr.write(String(e && e.message || e)); process.exit(7); }`; |
| 70 | const r = spawnSync(process.execPath, ['-e', code], { |
| 71 | encoding: 'utf8', |
| 72 | env: { ...process.env, ...env }, |
| 73 | }); |
| 74 | return { status: r.status, stdout: r.stdout, stderr: r.stderr }; |
| 75 | } |
| 76 | |
| 77 | describe('npm-sdk programmatic entry', () => { |
| 78 | it('re-exports the installed platform bundle library', () => { |