





























@@ -3,6 +3,7 @@ import { describe, expect, it } from "vitest";
3344type OxlintConfig = {
55ignorePatterns?: string[];
6+rules?: Record<string, unknown>;
67};
7889type OxlintTsconfig = {
@@ -16,40 +17,40 @@ function readJson(path: string): unknown {
16171718describe("oxlint config", () => {
1819it("includes bundled extensions in type-aware lint coverage", () => {
19-const tsconfig = readJson<OxlintTsconfig>("tsconfig.oxlint.json");
20+const tsconfig = readJson("tsconfig.oxlint.json") as OxlintTsconfig;
20212122expect(tsconfig.include).toContain("extensions/**/*");
2223expect(tsconfig.exclude ?? []).not.toContain("extensions");
2324});
24252526it("includes scripts in root type-aware lint coverage", () => {
26-const tsconfig = readJson<OxlintTsconfig>("tsconfig.oxlint.json");
27+const tsconfig = readJson("tsconfig.oxlint.json") as OxlintTsconfig;
27282829expect(tsconfig.include).toContain("scripts/**/*");
2930});
30313132it("has a discoverable scripts tsconfig for type-aware linting", () => {
32-const tsconfig = readJson<OxlintTsconfig>("scripts/tsconfig.json");
33+const tsconfig = readJson("scripts/tsconfig.json") as OxlintTsconfig;
33343435expect(tsconfig.include).toContain("**/*.ts");
3536expect(tsconfig.exclude ?? []).not.toContain("**/*.ts");
3637});
37383839it("has a discoverable test tsconfig for type-aware linting", () => {
39-const tsconfig = readJson<OxlintTsconfig>("test/tsconfig.json");
40+const tsconfig = readJson("test/tsconfig.json") as OxlintTsconfig;
40414142expect(tsconfig.include).toContain("**/*.ts");
4243expect(tsconfig.exclude ?? []).not.toContain("**/*.ts");
4344});
44454546it("does not ignore the bundled extensions tree", () => {
46-const config = readJson<OxlintConfig>(".oxlintrc.json");
47+const config = readJson(".oxlintrc.json") as OxlintConfig;
47484849expect(config.ignorePatterns ?? []).not.toContain("extensions/");
4950});
50515152it("keeps generated and vendored extension outputs ignored", () => {
52-const config = readJson<OxlintConfig>(".oxlintrc.json");
53+const config = readJson(".oxlintrc.json") as OxlintConfig;
5354const ignorePatterns = config.ignorePatterns ?? [];
54555556expect(ignorePatterns).toContain("**/node_modules/**");
@@ -58,4 +59,13 @@ describe("oxlint config", () => {
5859expect(ignorePatterns).toContain("**/coverage/**");
5960expect(ignorePatterns).toContain("**/.cache/**");
6061});
62+63+it("enables strict empty object type lint with named single-extends interfaces allowed", () => {
64+const config = readJson(".oxlintrc.json") as OxlintConfig;
65+66+expect(config.rules?.["typescript/no-empty-object-type"]).toEqual([
67+"error",
68+{ allowInterfaces: "with-single-extends" },
69+]);
70+});
6171});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。