From 273214d1665f367a03490ec600cc52dc70058ca1 Mon Sep 17 00:00:00 2001 From: Tam Nhu Tran Date: Wed, 29 Apr 2026 17:10:05 -0400 Subject: [PATCH] fix(cliproxy): correct relative import paths in colocated tests --- .../version-checker-stale-cache.test.ts | 16 ++++++++-------- .../__tests__/composite-thinking.test.ts | 2 +- .../proxy/__tests__/https-tunnel-policy.test.ts | 2 +- .../proxy/__tests__/proxy-detector-port.test.ts | 2 +- .../quota/__tests__/quota-fetcher-claude.test.ts | 2 +- .../quota/__tests__/quota-fetcher-codex.test.ts | 10 +++++----- .../__tests__/quota-fetcher-gemini-cli.test.ts | 4 ++-- .../__tests__/quota-monitor-runtime.test.ts | 2 +- .../__tests__/routing-strategy-http.test.ts | 2 +- .../routing/__tests__/routing-strategy.test.ts | 10 +++++----- 10 files changed, 26 insertions(+), 26 deletions(-) diff --git a/src/cliproxy/binary/__tests__/version-checker-stale-cache.test.ts b/src/cliproxy/binary/__tests__/version-checker-stale-cache.test.ts index fe87bdb1..20198d39 100644 --- a/src/cliproxy/binary/__tests__/version-checker-stale-cache.test.ts +++ b/src/cliproxy/binary/__tests__/version-checker-stale-cache.test.ts @@ -31,9 +31,9 @@ describe('version-checker stale cache fallback', () => { const { getVersionCachePath, writeInstalledVersion, - } = await import('../../../src/cliproxy/binary/version-cache'); - const { VERSION_CACHE_DURATION_MS } = await import('../../../src/cliproxy/binary/types'); - const { checkForUpdates } = await import('../../../src/cliproxy/binary/version-checker'); + } = await import('../version-cache'); + const { VERSION_CACHE_DURATION_MS } = await import('../types'); + const { checkForUpdates } = await import('../version-checker'); const plusBinDir = path.join(tempHome, '.ccs', 'cliproxy', 'bin', 'plus'); fs.mkdirSync(plusBinDir, { recursive: true }); @@ -60,9 +60,9 @@ describe('version-checker stale cache fallback', () => { }); it('uses a stale release-list cache when GitHub list lookup fails', async () => { - const { getVersionListCachePath } = await import('../../../src/cliproxy/binary/version-cache'); - const { VERSION_CACHE_DURATION_MS } = await import('../../../src/cliproxy/binary/types'); - const { fetchAllVersions } = await import('../../../src/cliproxy/binary/version-checker'); + const { getVersionListCachePath } = await import('../version-cache'); + const { VERSION_CACHE_DURATION_MS } = await import('../types'); + const { fetchAllVersions } = await import('../version-checker'); const plusBinDir = path.join(tempHome, '.ccs', 'cliproxy', 'bin', 'plus'); fs.mkdirSync(plusBinDir, { recursive: true }); @@ -90,8 +90,8 @@ describe('version-checker stale cache fallback', () => { }); it('skips update lookups when runtime startup prefers the installed binary', async () => { - const { getExecutableName } = await import('../../../src/cliproxy/platform-detector'); - const { ensureBinary } = await import('../../../src/cliproxy/binary/lifecycle'); + const { getExecutableName } = await import('../platform-detector'); + const { ensureBinary } = await import('../lifecycle'); const plusBinDir = path.join(tempHome, '.ccs', 'cliproxy', 'bin', 'plus'); fs.mkdirSync(plusBinDir, { recursive: true }); diff --git a/src/cliproxy/executor/__tests__/composite-thinking.test.ts b/src/cliproxy/executor/__tests__/composite-thinking.test.ts index 5cc2b0f7..f4d7a592 100644 --- a/src/cliproxy/executor/__tests__/composite-thinking.test.ts +++ b/src/cliproxy/executor/__tests__/composite-thinking.test.ts @@ -11,7 +11,7 @@ import { detectTierFromModel, getThinkingValueForTier, } from '../../config/thinking-config'; -import { CLIProxyProvider } from '../types'; +import { CLIProxyProvider } from '../../types'; // ======================================== // applyThinkingSuffix diff --git a/src/cliproxy/proxy/__tests__/https-tunnel-policy.test.ts b/src/cliproxy/proxy/__tests__/https-tunnel-policy.test.ts index d3a219dd..9888351e 100644 --- a/src/cliproxy/proxy/__tests__/https-tunnel-policy.test.ts +++ b/src/cliproxy/proxy/__tests__/https-tunnel-policy.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'bun:test'; -import { shouldStartHttpsTunnel } from '../executor/https-tunnel-policy'; +import { shouldStartHttpsTunnel } from '../../executor/https-tunnel-policy'; describe('HTTPS tunnel startup policy', () => { it('skips the tunnel for single-provider Codex remote HTTPS launches', () => { diff --git a/src/cliproxy/proxy/__tests__/proxy-detector-port.test.ts b/src/cliproxy/proxy/__tests__/proxy-detector-port.test.ts index f1dbe871..5e1889b4 100644 --- a/src/cliproxy/proxy/__tests__/proxy-detector-port.test.ts +++ b/src/cliproxy/proxy/__tests__/proxy-detector-port.test.ts @@ -7,7 +7,7 @@ import { describe, it, expect } from 'bun:test'; import { detectRunningProxy } from '../proxy-detector'; -import { CLIPROXY_DEFAULT_PORT } from '../config/config-generator'; +import { CLIPROXY_DEFAULT_PORT } from '../../config/config-generator'; describe('Proxy Detector Port Validation', () => { describe('detectRunningProxy with invalid ports', () => { diff --git a/src/cliproxy/quota/__tests__/quota-fetcher-claude.test.ts b/src/cliproxy/quota/__tests__/quota-fetcher-claude.test.ts index 07f5d3b3..861ae287 100644 --- a/src/cliproxy/quota/__tests__/quota-fetcher-claude.test.ts +++ b/src/cliproxy/quota/__tests__/quota-fetcher-claude.test.ts @@ -14,7 +14,7 @@ import { fetchClaudeQuota, fetchAllClaudeQuotas, } from '../quota-fetcher-claude'; -import { sanitizeEmail } from '../auth/auth-utils'; +import { sanitizeEmail } from '../../auth/auth-utils'; let tmpDir: string; let originalCcsHome: string | undefined; diff --git a/src/cliproxy/quota/__tests__/quota-fetcher-codex.test.ts b/src/cliproxy/quota/__tests__/quota-fetcher-codex.test.ts index d03b09ab..931c7836 100644 --- a/src/cliproxy/quota/__tests__/quota-fetcher-codex.test.ts +++ b/src/cliproxy/quota/__tests__/quota-fetcher-codex.test.ts @@ -17,7 +17,7 @@ let buildCodexQuotaWindows: typeof import('../quota-fetcher-codex').buildCodexQu let buildCodexCoreUsageSummary: typeof import('../quota-fetcher-codex').buildCodexCoreUsageSummary; let fetchCodexQuota: typeof import('../quota-fetcher-codex').fetchCodexQuota; let getUnknownCodexWindowLabels: typeof import('../quota-fetcher-codex').getUnknownCodexWindowLabels; -let registerAccount: typeof import('../accounts/account-manager').registerAccount; +let registerAccount: typeof import('../../accounts/account-manager').registerAccount; function createCodexAccount( accountId: string, @@ -34,13 +34,13 @@ beforeEach(async () => { mock.restore(); const configGenerator = await import( - `../config/config-generator?codex-config-generator=${moduleVersion}` + `../../config/config-generator?codex-config-generator=${moduleVersion}` ); const accountManager = await import( - `../accounts/account-manager?codex-account-manager=${moduleVersion}` + `../../accounts/account-manager?codex-account-manager=${moduleVersion}` ); - mock.module('../config/config-generator', () => configGenerator); - mock.module('../accounts/account-manager', () => accountManager); + mock.module('../../config/config-generator', () => configGenerator); + mock.module('../../accounts/account-manager', () => accountManager); ({ registerAccount } = accountManager); ({ diff --git a/src/cliproxy/quota/__tests__/quota-fetcher-gemini-cli.test.ts b/src/cliproxy/quota/__tests__/quota-fetcher-gemini-cli.test.ts index dafe57e0..1da9e59f 100644 --- a/src/cliproxy/quota/__tests__/quota-fetcher-gemini-cli.test.ts +++ b/src/cliproxy/quota/__tests__/quota-fetcher-gemini-cli.test.ts @@ -23,7 +23,7 @@ describe('Gemini CLI Quota Fetcher', () => { let fetchGeminiCliQuota: typeof import('../quota-fetcher-gemini-cli').fetchGeminiCliQuota; let resolveGeminiCliProjectId: typeof import('../quota-fetcher-gemini-cli').resolveGeminiCliProjectId; let geminiTestExports: typeof import('../quota-fetcher-gemini-cli').__testExports; - let getProviderAuthDir: typeof import('../config/config-generator').getProviderAuthDir; + let getProviderAuthDir: typeof import('../../config/config-generator').getProviderAuthDir; function writeGeminiToken(token: Record, filename = 'gemini-test.json'): string { const authDir = getProviderAuthDir('gemini'); @@ -59,7 +59,7 @@ describe('Gemini CLI Quota Fetcher', () => { delete process.env.CCS_DIR; const configGenerator = await import( - `../config/config-generator?gemini-config-generator=${moduleVersion}` + `../../config/config-generator?gemini-config-generator=${moduleVersion}` ); ({ buildGeminiCliBuckets, diff --git a/src/cliproxy/quota/__tests__/quota-monitor-runtime.test.ts b/src/cliproxy/quota/__tests__/quota-monitor-runtime.test.ts index 5254c085..16991406 100644 --- a/src/cliproxy/quota/__tests__/quota-monitor-runtime.test.ts +++ b/src/cliproxy/quota/__tests__/quota-monitor-runtime.test.ts @@ -16,7 +16,7 @@ import { stopQuotaMonitor, clearQuotaCache, } from '../quota-manager'; -import { __testExports as executorTestExports } from '../executor'; +import { __testExports as executorTestExports } from '../../executor'; // Setup test isolation let tmpDir: string; diff --git a/src/cliproxy/routing/__tests__/routing-strategy-http.test.ts b/src/cliproxy/routing/__tests__/routing-strategy-http.test.ts index 4e995ab0..8452ba17 100644 --- a/src/cliproxy/routing/__tests__/routing-strategy-http.test.ts +++ b/src/cliproxy/routing/__tests__/routing-strategy-http.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'bun:test'; -import type { ProxyTarget } from '../proxy/proxy-target-resolver'; +import type { ProxyTarget } from '../../proxy/proxy-target-resolver'; async function loadRoutingHttpModule() { return import( diff --git a/src/cliproxy/routing/__tests__/routing-strategy.test.ts b/src/cliproxy/routing/__tests__/routing-strategy.test.ts index a4e8e977..959e63bd 100644 --- a/src/cliproxy/routing/__tests__/routing-strategy.test.ts +++ b/src/cliproxy/routing/__tests__/routing-strategy.test.ts @@ -32,7 +32,7 @@ describe('cliproxy routing strategy service', () => { process.env.CCS_DIR = scopedConfigDir; process.env.CCS_HOME = tempHome; - ({ runWithScopedConfigDir } = await import('../../../src/utils/config-manager')); + ({ runWithScopedConfigDir } = await import('../../../utils/config-manager')); }); afterEach(() => { @@ -91,7 +91,7 @@ describe('cliproxy routing strategy service', () => { it('falls back to the saved local default when live CLIProxy is unavailable', async () => { await withScopedConfig(async () => { - const { mutateUnifiedConfig } = await import('../../../src/config/unified-config-loader'); + const { mutateUnifiedConfig } = await import('../../../config/unified-config-loader'); mutateUnifiedConfig((config) => { if (config.cliproxy) { config.cliproxy.routing = { strategy: 'fill-first' }; @@ -116,7 +116,7 @@ describe('cliproxy routing strategy service', () => { expect(result.applied).toBe('config-only'); expect(result.strategy).toBe('fill-first'); - const { loadUnifiedConfig } = await import('../../../src/config/unified-config-loader'); + const { loadUnifiedConfig } = await import('../../../config/unified-config-loader'); const persisted = loadUnifiedConfig(); expect(persisted?.cliproxy?.routing?.strategy).toBe('fill-first'); }); @@ -171,7 +171,7 @@ describe('cliproxy routing strategy service', () => { it('reads saved local session-affinity settings when live CLIProxy is unavailable', async () => { await withScopedConfig(async () => { - const { mutateUnifiedConfig } = await import('../../../src/config/unified-config-loader'); + const { mutateUnifiedConfig } = await import('../../../config/unified-config-loader'); mutateUnifiedConfig((config) => { if (config.cliproxy) { config.cliproxy.routing = { @@ -206,7 +206,7 @@ describe('cliproxy routing strategy service', () => { expect(result.enabled).toBe(true); expect(result.ttl).toBe('2h'); - const { loadUnifiedConfig } = await import('../../../src/config/unified-config-loader'); + const { loadUnifiedConfig } = await import('../../../config/unified-config-loader'); const persisted = loadUnifiedConfig(); expect(persisted?.cliproxy?.routing?.session_affinity).toBe(true); expect(persisted?.cliproxy?.routing?.session_affinity_ttl).toBe('2h');