mirror of
https://github.com/morluto/rea.git
synced 2026-10-26 17:35:11 +00:00
Convert native directory separators only at Git patch argument production. Exercise fresh, applied and invalid dependency patches in private copies, preserving protectNTFS, and select the regression for Windows CI. Replace the spelling-based mock inventory with one binding-aware Oxlint rule. Canonical test projects own isolation for both Vitest and lint; external temporary CLI probes avoid concurrent test discovery. Validated actual local Git and Oxlint execution, resolved-policy parity, CI selection and report tests. Native Windows verification remains with CI. Refs: #7050
81 lines
2.5 KiB
TypeScript
81 lines
2.5 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { fileURLToPath } from "node:url";
|
|
import { RuleTester } from "oxlint/plugins-dev";
|
|
|
|
import rule from "../../scripts/lint/rules/no-shared-module-mock.mjs";
|
|
|
|
RuleTester.describe = describe;
|
|
RuleTester.it = it;
|
|
|
|
const tester = new RuleTester({
|
|
cwd: fileURLToPath(new URL("../../", import.meta.url)),
|
|
languageOptions: { parserOptions: { lang: "ts" } },
|
|
});
|
|
const sharedFilename = fileURLToPath(
|
|
new URL("./noSharedModuleMockRule.test.ts", import.meta.url),
|
|
);
|
|
const isolatedFilename = fileURLToPath(
|
|
new URL("../process-global/noSharedModuleMockRule.test.ts", import.meta.url),
|
|
);
|
|
|
|
tester.run("no-shared-module-mock", rule, {
|
|
valid: [
|
|
{
|
|
filename: isolatedFilename,
|
|
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
|
|
},
|
|
{
|
|
filename: isolatedFilename,
|
|
code: 'import * as testing from "vitest"; testing.vi.doMock("./dependency.js");',
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import { vi } from "vitest"; vi.spyOn(target, "method");',
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: "const mock = { mock() {} }; mock.mock();",
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'const source = "vi.mock(\\"./dependency.js\\")"; // vi.mock("./dependency.js")',
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import { vi as testing } from "vitest"; function local(testing: { mock(): void }) { testing.mock(); }',
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import * as vitest from "vitest"; function local(vitest: { vi: { mock(): void } }) { vitest.vi.mock(); }',
|
|
},
|
|
{
|
|
filename: fileURLToPath(
|
|
new URL("../../tests/unknown/ignored.test.ts", import.meta.url),
|
|
),
|
|
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
|
|
},
|
|
],
|
|
invalid: [
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import { vi } from "vitest"; vi.mock("./dependency.js");',
|
|
errors: [{ messageId: "shared" }],
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import { vi as testing } from "vitest"; testing.doMock("./dependency.js");',
|
|
errors: [{ messageId: "shared" }],
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import * as testing from "vitest"; testing.vi.mock("./dependency.js");',
|
|
errors: [{ messageId: "shared" }],
|
|
},
|
|
{
|
|
filename: sharedFilename,
|
|
code: 'import * as vitest from "vitest"; vitest.vi["doMock"]("./dependency.js");',
|
|
errors: [{ messageId: "shared" }],
|
|
},
|
|
],
|
|
});
|