From 89f32a121bb1560874197bad4b8bcc7c2fa3549c Mon Sep 17 00:00:00 2001 From: Neil <4138956+nwparker@users.noreply.github.com> Date: Tue, 28 Jul 2026 01:30:52 -0700 Subject: [PATCH] fix(lint): restore nested config discovery in changed-code gate (#11130) --- config/scripts/check-changed-code-quality.mjs | 6 ++++-- config/scripts/check-changed-code-quality.test.mjs | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/config/scripts/check-changed-code-quality.mjs b/config/scripts/check-changed-code-quality.mjs index a8fd5b73926..2a3542e78b9 100644 --- a/config/scripts/check-changed-code-quality.mjs +++ b/config/scripts/check-changed-code-quality.mjs @@ -6,10 +6,12 @@ import { pathToFileURL } from 'node:url' import { resolvePullRequestDiffBase } from './git-pull-request-diff-base.mjs' const SOURCE_FILE_PATTERN = /\.(?:[cm]?[jt]sx?)$/ -const OXLINT_SCANS = [ +export const OXLINT_SCANS = [ { + // Why: no --config, so Oxlint keeps discovering nested configs. Pinning the root + // config would apply root rules to mobile/, whose .oxlintrc.json turns them off. label: 'code quality', - args: ['--config', '.oxlintrc.json', '--report-unused-disable-directives-severity', 'warn'] + args: ['--report-unused-disable-directives-severity', 'warn'] }, { label: 'type-aware code quality', diff --git a/config/scripts/check-changed-code-quality.test.mjs b/config/scripts/check-changed-code-quality.test.mjs index 0f68172a5b5..5daca8da49e 100644 --- a/config/scripts/check-changed-code-quality.test.mjs +++ b/config/scripts/check-changed-code-quality.test.mjs @@ -1,5 +1,6 @@ import { describe, expect, it } from 'vitest' import { + OXLINT_SCANS, diagnosticTouchesAddedLines, overlapsAddedLines, parseAddedLineRanges @@ -41,4 +42,13 @@ describe('changed-code quality line matching', () => { diagnosticTouchesAddedLines(diagnostic, new Map([[file, [{ start: 24, end: 24 }]]]), root) ).toBe(true) }) + + // Why: pinning --config disables nested-config discovery, so root rules that + // mobile/.oxlintrc.json turns off would fail the gate on mobile files. + it('lets the untyped scan discover nested configs instead of pinning the root config', () => { + const scan = OXLINT_SCANS.find((candidate) => candidate.label === 'code quality') + + expect(scan.args).not.toContain('--config') + expect(scan.args).not.toContain('--disable-nested-config') + }) })