From 7239513b982201abc1641b3960ad41a85af51bf9 Mon Sep 17 00:00:00 2001 From: Tianyi Cui <53024+tianyicui@users.noreply.github.com> Date: Mon, 20 Jul 2026 21:20:55 +0800 Subject: [PATCH] test(fs-sandbox): keep Windows coverage portable --- packages/fs/fs-sandbox/src/containment.ts | 4 +++- packages/fs/fs-sandbox/tests/containment.spec.ts | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/fs/fs-sandbox/src/containment.ts b/packages/fs/fs-sandbox/src/containment.ts index 782ceb151d..41b9bdd08a 100644 --- a/packages/fs/fs-sandbox/src/containment.ts +++ b/packages/fs/fs-sandbox/src/containment.ts @@ -9,9 +9,11 @@ import type { BigIntStats } from 'node:fs' import { stat } from 'node:fs/promises' import { dirname, sep } from 'node:path' +const MISSING_CODES: ReadonlySet = new Set(['ENOENT', 'ENOTDIR']) + function isMissing(error: unknown): boolean { const code = (error as NodeJS.ErrnoException).code - return code === 'ENOENT' || code === 'ENOTDIR' + return MISSING_CODES.has(code) } function comparablePath(path: string, caseSensitive: boolean): string { diff --git a/packages/fs/fs-sandbox/tests/containment.spec.ts b/packages/fs/fs-sandbox/tests/containment.spec.ts index 30821cc826..35dc52029b 100644 --- a/packages/fs/fs-sandbox/tests/containment.spec.ts +++ b/packages/fs/fs-sandbox/tests/containment.spec.ts @@ -27,6 +27,7 @@ describe('filesystem sandbox containment', () => { it('uses case-insensitive lexical comparison for Windows-style containment', async () => { expect(await isPathUnder(join(base.toUpperCase(), 'child'), base.toLowerCase(), false)).toBe(true) + expect(await isPathUnder(join(base, 'case-sensitive-child'), base, true)).toBe(true) }) it('recognizes an alias-equivalent root by filesystem identity for a missing target', async () => {