From 6a10350242dd2dbf8f75152e6b38b2df905ea32a Mon Sep 17 00:00:00 2001 From: Felix Weinberger Date: Fri, 13 Feb 2026 15:27:24 +0000 Subject: [PATCH] fix: recurse into subdirectories when parsing conformance output parseOutputDir only read one level deep, so scenarios with '/' in their name (e.g. auth/metadata-default) were stored in nested subdirectories and never found. This caused tier-check to report 4/23 client conformance when the actual pass rate was 23/23. Also removes accidentally committed pnpm-lock.yaml. --- src/tier-check/checks/test-conformance-results.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/src/tier-check/checks/test-conformance-results.ts b/src/tier-check/checks/test-conformance-results.ts index bef2059..55e4f6d 100644 --- a/src/tier-check/checks/test-conformance-results.ts +++ b/src/tier-check/checks/test-conformance-results.ts @@ -1,6 +1,6 @@ import { execSync } from 'child_process'; -import { mkdtempSync, readFileSync, readdirSync, existsSync } from 'fs'; -import { join } from 'path'; +import { mkdtempSync, readFileSync, existsSync, globSync } from 'fs'; +import { join, dirname } from 'path'; import { tmpdir } from 'os'; import { ConformanceResult } from '../types'; import { listScenarios, listActiveClientScenarios } from '../../scenarios'; @@ -26,10 +26,13 @@ function parseOutputDir(outputDir: string): ConformanceResult { let totalPassed = 0; let totalFailed = 0; - const entries = readdirSync(outputDir); - for (const scenarioName of entries) { - const checksPath = join(outputDir, scenarioName, 'checks.json'); - if (!existsSync(checksPath)) continue; + // Find all checks.json files recursively to handle scenarios with '/' in + // their name (e.g. auth/metadata-default) which create nested subdirectories. + const checksFiles = globSync('**/checks.json', { cwd: outputDir }); + + for (const checksFile of checksFiles) { + const scenarioName = dirname(checksFile); + const checksPath = join(outputDir, checksFile); try { const checks: ConformanceCheck[] = JSON.parse(