Commit Graph
10 Commits
Author SHA1 Message Date
can1357 b5da1099af fix(pr-3347): address integration review notes 2026-06-27 02:04:51 +02:00
can1357 82b63976d8 Merge PR #3347: fix(utils): export removeWithRetries + migrate ai test files (@oldschoola) 2026-06-27 02:04:50 +02:00
oldschoolaandcan1357 d87c3e9ed8 fix(utils): increase EBUSY retry delay from 25ms to 50ms
The retry-on-EBUSY logic in removeSyncWithRetries/removeWithRetries
used 40 retries × 25ms = 1 second total. Windows can hold file locks
on SQLite databases for up to ~1.5s after close(), so tests that
already used removeSyncWithRetries (e.g. settings-manager.test.ts,
sdk-credential-disabled-bridge.test.ts) still failed with EBUSY.

Fix: increase the delay to 50ms (40 × 50ms = 2s total window). This
only affects Windows — the retry logic only runs on win32. Linux CI
is unaffected.

(cherry picked from commit ac67e96f1285ce0d80b2022c40c383b7ca262354)
2026-06-26 23:43:03 +02:00
oldschoola 63e075f75d fix(utils): export removeWithRetries for async test cleanup on Windows
The async removeWithRetries function in packages/utils/src/temp.ts was
used internally by TempDir.remove() but not exported, while the sync
variant (removeSyncWithRetries) was exported. This inconsistency forced
tests with async cleanup hooks (afterEach(async () => ...)) to use
fs.rm directly, which fails with EBUSY on Windows when SQLite database
files are still locked by the process.

Fix: export removeWithRetries so async tests can import it from
@oh-my-pi/pi-utils and use retry-enabled cleanup. Migrated
auth-storage-api-key-login.test.ts as a demonstration — 5 EBUSY
failures now pass consistently on Windows.
2026-06-23 12:36:42 -07:00
oldschoola fa903b2b2c fix(test): migrate fs.rmSync to removeSyncWithRetries for EBUSY-safe cleanup
Export removeSyncWithRetries from @oh-my-pi/pi-utils as a standalone
function, then migrate the highest-impact fs.rmSync call sites:

- test/helpers/temp-home-cleanup.ts: 2 fs.rmSync → removeSyncWithRetries
  (affects all tests using the cleanupTempHome helper)
- test/core/apply-patch-regression.test.ts: 16 fs.rmSync → removeSyncWithRetries
  (the most fs.rmSync calls of any test file)

removeSyncWithRetries retries on EBUSY/EPERM/ENOTEMPTY (40x25ms on
Windows), matching TempDir.removeSync's retry logic. On Linux/macOS
(CI) the retries are a no-op — fs.rmSync succeeds immediately.
2026-06-19 17:27:54 -07:00
oldschoola 14252e71cb fix: Windows test failures — path handling, EBUSY, SQLite handle leaks
Fix all Windows-specific test failures caused by path handling problems
and EBUSY errors from unclosed SQLite database handles.

Root causes fixed:
1. POSIX path assumptions: replaced hard-coded file:///tmp, /repo, etc.
   with pathToFileURL/path.resolve/path.join computed expectations
2. shortenPath() now normalizes backslashes to forward slashes after ~
   and respects home directory boundaries
3. HistoryStorage.resetInstance() leaked its Database — added #close()
   that finalizes all prepared statements and closes the DB
4. AgentStorage gained the same resetInstance()/#close() pattern
5. SqliteAuthCredentialStore.close() leaked one-off prepared statements
   from inline this.#db.prepare() calls — wrapped each in try/finally
6. model-cache.ts used a process-global DB even for custom dbPath —
   now opens/closes per-call via withModelCacheDb
7. createAgentSession leaked AuthStorage on construction failure —
   added ownsAuthStorage cleanup in catch block
8. MnemopiBackend.removeDbFiles() now truly best-effort (catches errors)
9. TempDir retry window expanded from 4x10ms to 40x25ms
10. TempDir prefix convention: non-@ prefixes created dirs relative to
    cwd instead of os.tmpdir() — all test temp dirs now use @ prefix
11. Shell-escaped interpolated paths in bash tool tests
12. git core.autocrlf false in autoresearch test repo init

All 522 previously-failing Windows tests now pass.
2026-06-18 21:32:38 -07:00
can1357 e69fa5efd2 style(utils): sort temp.ts imports to satisfy biome
The added node:fs/promises import preceded node:fs, which biome's
organizeImports rejects and fails CI lint. Reorder to unblock merge.

Addresses review feedback on #2382.
2026-06-14 17:27:15 +02:00
oldschoolaandcan1357 0d83a0fabc fix(utils): drop sleepSync type assertion; add EBUSY retry tests 2026-06-14 17:23:06 +02:00
oldschoolaandcan1357 e19516aa91 fix(utils): retry TempDir removal on Windows EBUSY 2026-06-14 17:23:06 +02:00
can1357 2c85f43709 refactor(utils): renamed packages/pi-utils to packages/utils
- Renamed package directory from packages/pi-utils to packages/utils.
- Updated all path aliases and references in tsconfig.base.json to reflect new package location.
- Updated workspace references in bun.lock and package.json to point to new packages/utils directory.
- Updated documentation and build scripts to reference the renamed utils package.
2026-01-29 11:03:27 +01:00