@@ -548,28 +548,41 @@ describe("codex bin wrapper", () => {
548548
549549 it ( "does not clobber sync-back files that change during rename retry backoff" , ( ) => {
550550 const fixtureRoot = createWrapperFixture ( ) ;
551+ const retryMarkerDir = join ( fixtureRoot , "retry-markers" ) ;
552+ const accountsRetryMarker = join ( retryMarkerDir , "accounts.json.retry-1" ) ;
551553 const fakeBin = createCustomFakeCodexBin ( fixtureRoot , [
552554 "#!/usr/bin/env node" ,
553555 'const { spawn } = require("node:child_process");' ,
554556 'const fs = require("node:fs");' ,
555557 'const path = require("node:path");' ,
556558 'const home = process.env.CODEX_HOME ?? "";' ,
559+ 'const retryMarker = process.env.CODEX_MULTI_AUTH_TEST_RETRY_MARKER ?? "";' ,
557560 'const originalHome = process.env.CODEX_MULTI_AUTH_TEST_EXTERNAL_HOME ?? "";' ,
558- 'fs.writeFileSync(path.join(home, "auth.json"), \'{"token":"shadow"}\\n\', "utf8");' ,
559561 'fs.writeFileSync(path.join(home, "accounts.json"), \'{"accounts":["shadow"]}\\n\', "utf8");' ,
560562 'fs.writeFileSync(path.join(home, ".codex-global-state.json"), \'{"last":"shadow"}\\n\', "utf8");' ,
561- "if (originalHome) {" ,
563+ "if (originalHome && retryMarker ) {" ,
562564 " const mutateScript = [" ,
563565 ' \'const fs = require("node:fs");\',' ,
564566 ' \'const path = require("node:path");\',' ,
565- ' \'const target = process.argv[1];\',' ,
566- ' \'setTimeout(() => {\',' ,
567+ ' \'const markerPath = process.argv[1];\',' ,
568+ ' \'const target = process.argv[2];\',' ,
569+ ' \'const startedAt = Date.now();\',' ,
570+ ' \'const waitForMarker = () => {\',' ,
571+ ' \' if (fs.existsSync(markerPath)) {\',' ,
567572 ' \' fs.writeFileSync(path.join(target, \"accounts.json\"), \"{\\\\\"accounts\\\\\":[\\\\\"external-during-retry\\\\\"]}\\\\n\", \"utf8\");\',' ,
568573 ' \' fs.writeFileSync(path.join(target, \".codex-global-state.json\"), \"{\\\\\"last\\\\\":\\\\\"external-during-retry\\\\\"}\\\\n\", \"utf8\");\',' ,
569574 ' \' process.exit(0);\',' ,
570- ' \'}, 40);\',' ,
575+ ' \' return;\',' ,
576+ ' \' }\',' ,
577+ ' \' if (Date.now() - startedAt > 5000) {\',' ,
578+ ' \' process.exit(2);\',' ,
579+ ' \' return;\',' ,
580+ ' \' }\',' ,
581+ ' \' setTimeout(waitForMarker, 5);\',' ,
582+ ' \'};\',' ,
583+ ' \'waitForMarker();\',' ,
571584 " ].join(\"\\n\");" ,
572- " const mutator = spawn(process.execPath, [\"-e\", mutateScript, originalHome], {" ,
585+ " const mutator = spawn(process.execPath, [\"-e\", mutateScript, retryMarker, originalHome], {" ,
573586 " detached: true," ,
574587 ' stdio: "ignore",' ,
575588 " });" ,
@@ -581,6 +594,7 @@ describe("codex bin wrapper", () => {
581594 const controlledTmp = join ( fixtureRoot , "tmp" ) ;
582595 mkdirSync ( originalHome , { recursive : true } ) ;
583596 mkdirSync ( controlledTmp , { recursive : true } ) ;
597+ mkdirSync ( retryMarkerDir , { recursive : true } ) ;
584598 writeFileSync ( join ( originalHome , "auth.json" ) , '{"token":"original"}\n' , "utf8" ) ;
585599 writeFileSync ( join ( originalHome , "accounts.json" ) , '{"accounts":["original"]}\n' , "utf8" ) ;
586600 writeFileSync ( join ( originalHome , ".codex-global-state.json" ) , '{"last":"original"}\n' , "utf8" ) ;
@@ -593,6 +607,8 @@ describe("codex bin wrapper", () => {
593607 CODEX_MULTI_AUTH_REAL_CODEX_BIN : fakeBin ,
594608 CODEX_HOME : originalHome ,
595609 CODEX_MULTI_AUTH_TEST_EXTERNAL_HOME : originalHome ,
610+ CODEX_MULTI_AUTH_TEST_RETRY_MARKER : accountsRetryMarker ,
611+ CODEX_MULTI_AUTH_TEST_SHADOW_RETRY_MARKER_DIR : retryMarkerDir ,
596612 TMP : controlledTmp ,
597613 TEMP : controlledTmp ,
598614 TMPDIR : controlledTmp ,
@@ -601,7 +617,7 @@ describe("codex bin wrapper", () => {
601617 ) ;
602618
603619 expect ( result . status ) . toBe ( 0 ) ;
604- expect ( readFileSync ( join ( originalHome , "auth.json" ) , "utf8" ) . trim ( ) ) . toBe ( '{"token":"shadow "}' ) ;
620+ expect ( readFileSync ( join ( originalHome , "auth.json" ) , "utf8" ) . trim ( ) ) . toBe ( '{"token":"original "}' ) ;
605621 expect ( readFileSync ( join ( originalHome , "accounts.json" ) , "utf8" ) . trim ( ) ) . toBe (
606622 '{"accounts":["external-during-retry"]}' ,
607623 ) ;
0 commit comments