Skip to content

Commit 368aa30

Browse files
committed
Condensed fixture.test.ts to run faster.
1 parent 707f668 commit 368aa30

File tree

1 file changed

+29
-60
lines changed

1 file changed

+29
-60
lines changed

test/fixture.test.ts

Lines changed: 29 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,40 @@
1-
import execa from "execa";
21
import path from "path";
32
import glob from "fast-glob";
43
import { ESLint } from "eslint";
54

6-
const eslintBinPath = path.resolve(__dirname, "..", "node_modules", ".bin", "eslint");
7-
const eslint = new ESLint();
8-
9-
const getTestFiles = (dir: string): Array<string> => {
10-
const root = path.join("test", "fixture", dir);
11-
return glob.sync("**/*.{js,jsx,ts,tsx}", { cwd: root, absolute: true });
5+
const getTestFiles = () => {
6+
const root = path.join("test", "fixture");
7+
return glob("**/*.{js,jsx,ts,tsx}", { cwd: root, absolute: true });
128
};
139

14-
describe("fixture", function () {
15-
it(
16-
"loads the plugin without crashing",
17-
async () => {
18-
const exampleFile = path.join("test", "fixture", "invalid", "jsx-undef.jsx");
19-
const { exitCode } = await execa(eslintBinPath, ["--print-config", exampleFile], {
20-
shell: true,
21-
});
22-
expect(exitCode).toBe(0);
23-
},
24-
100 * 1000
25-
);
10+
const validDir = path.resolve("test", "fixture", "valid");
11+
const jsxUndefPath = path.resolve("test", "fixture", "invalid", "jsx-undef.jsx");
2612

27-
it(
28-
"produces reasonable lint errors",
29-
async () => {
30-
try {
31-
const exampleFile = path.join("test", "fixture", "invalid", "jsx-undef.jsx");
32-
await execa(eslintBinPath, [exampleFile], {
33-
shell: true,
34-
});
35-
} catch (error: any) {
36-
expect(error.exitCode).not.toBe(0);
37-
expect(error.stderr).toBe("");
38-
expect(error.stdout).toMatch(/'Component' is not defined/);
39-
expect(error.stdout).toMatch(/solid\/jsx-no-undef/);
40-
}
41-
},
42-
100 * 1000
43-
);
13+
test("fixture", async () => {
14+
const files = await getTestFiles();
4415

45-
describe("valid examples", () => {
46-
test.each(getTestFiles("valid").map((file) => [path.relative("test/fixture", file), file]))(
47-
"%s",
48-
async (_, file) => {
49-
const [results] = await eslint.lintFiles(file);
50-
expect(results.filePath).toBe(file);
51-
expect(results.messages).toEqual([]);
52-
expect(results.errorCount).toBe(0);
53-
expect(results.warningCount).toBe(0);
54-
expect(results.usedDeprecatedRules).toEqual([]);
55-
}
56-
);
57-
});
16+
const eslint = new ESLint();
17+
const results = await eslint.lintFiles(files);
5818

59-
describe("invalid examples", () => {
60-
test.each(getTestFiles("invalid").map((file) => [path.relative("test/fixture", file), file]))(
61-
"%s",
62-
async (_, file) => {
63-
const [results] = await eslint.lintFiles(file);
64-
expect(results.filePath).toBe(file);
65-
expect(results.messages).not.toEqual([]);
66-
expect(results.warningCount + results.errorCount).toBeGreaterThan(0);
67-
expect(results.usedDeprecatedRules).toEqual([]);
19+
for (const result of results) {
20+
if (result.filePath.startsWith(validDir)) {
21+
expect(result.messages).toEqual([]);
22+
expect(result.errorCount).toBe(0);
23+
expect(result.warningCount).toBe(0);
24+
expect(result.usedDeprecatedRules).toEqual([]);
25+
} else {
26+
expect(result.messages).not.toEqual([]);
27+
expect(result.warningCount + result.errorCount).toBeGreaterThan(0);
28+
expect(result.usedDeprecatedRules).toEqual([]);
29+
30+
if (result.filePath === jsxUndefPath) {
31+
// test for one specific error message
32+
expect(
33+
result.messages.some((message) => /'Component' is not defined/.test(message.message))
34+
);
6835
}
69-
);
70-
});
36+
}
37+
}
38+
39+
expect(results.filter((result) => result.filePath === jsxUndefPath).length).toBe(1);
7140
});

0 commit comments

Comments
 (0)