20 lines
1.2 KiB
JavaScript
20 lines
1.2 KiB
JavaScript
import test from 'node:test';
|
|
import assert from 'node:assert/strict';
|
|
import {mkdtemp,rm} from 'node:fs/promises';
|
|
import {tmpdir} from 'node:os';
|
|
import {join,resolve} from 'node:path';
|
|
import {spawnSync} from 'node:child_process';
|
|
|
|
test('launcher doctor and login status share a dedicated home without requiring Paper or starting login',async t=>{
|
|
const state=await mkdtemp(join(tmpdir(),'mcb-launcher-'));t.after(()=>rm(state,{recursive:true,force:true}));
|
|
const env={...process.env,MCB_STATE_DIR:state,MCB_CODEX_HOME:join(state,'codex-home'),MCB_OPENAI_API_KEY:'',MCB_CODEX_API_KEY:''};
|
|
const run=args=>spawnSync('python3',[resolve('../scripts/bridge.py'),...args,'--config',join(state,'absent-config.yml')],{env,encoding:'utf8',timeout:20_000});
|
|
const doctor=run(['doctor']);assert.equal(doctor.status,0,doctor.stderr);
|
|
const data=JSON.parse(doctor.stdout);assert.equal(data.codex.codexHome,env.MCB_CODEX_HOME);
|
|
assert.equal(data.codex.login.env.MCB_STATE_DIR,state);
|
|
for(const args of [['status'],['login','status'],['login','--status']]){
|
|
const status=run(args);assert.equal(status.status,1,status.stderr);assert.match(status.stdout+status.stderr,/not logged in/i);
|
|
assert.ok(!(status.stdout+status.stderr).includes('device code'));
|
|
}
|
|
});
|