test: price off the bundled snapshot so upstream reprices can't turn tests red

loadPricing() fetched the live LiteLLM table during tests and live data wins
over the bundled snapshot, so DeepSeek v4 assertions went red when upstream
dropped the off-peak discount. CODEBURN_PRICING_SNAPSHOT_ONLY skips the fetch;
env-isolation sets it for the whole suite.
This commit is contained in:
iamtoruk 2026-08-21 02:21:31 -07:00
parent a48d78f9d2
commit 4866332b91
2 changed files with 21 additions and 8 deletions

View file

@ -225,21 +225,30 @@ function mergeSnapshotFallbacks(pricing: Map<string, ModelCosts>): Map<string, M
return applyBuiltinPriceOverrides(pricing)
}
function setPricingCache(pricing: Map<string, ModelCosts>): void {
pricingCache = pricing
sortedPricingKeys = null
lowercasePricingIndex = null
knownNamespaces = null
}
export async function loadPricing(): Promise<void> {
const cached = await loadCachedPricing()
if (cached) {
pricingCache = mergeSnapshotFallbacks(cached)
sortedPricingKeys = null
lowercasePricingIndex = null
knownNamespaces = null
setPricingCache(mergeSnapshotFallbacks(cached))
return
}
// Test-only escape hatch, set for the whole suite in
// tests/setup/env-isolation.ts: skip the live LiteLLM fetch and price purely
// off the bundled snapshot, so an upstream reprice can't turn tests red.
if (process.env['CODEBURN_PRICING_SNAPSHOT_ONLY']) {
setPricingCache(mergeSnapshotFallbacks(new Map()))
return
}
try {
pricingCache = mergeSnapshotFallbacks(await fetchAndCachePricing())
sortedPricingKeys = null
lowercasePricingIndex = null
knownNamespaces = null
setPricingCache(mergeSnapshotFallbacks(await fetchAndCachePricing()))
} catch {
// snapshot already loaded at init; nothing more to do
}

View file

@ -106,6 +106,10 @@ function applyIsolation(): void {
if (original === undefined) delete process.env[key]
else process.env[key] = original
}
// Price off the bundled LiteLLM snapshot only. Without this, loadPricing()
// fetches the live upstream table, so a mid-week reprice by a provider turns
// pricing assertions red with no local change.
process.env['CODEBURN_PRICING_SNAPSHOT_ONLY'] = '1'
// Pin the timezone so date grouping is deterministic regardless of the dev's
// shell TZ. Clearing it is not enough (Node falls back to the OS zone); a
// non-UTC TZ would otherwise shift day buckets versus a clean CI runner. A