|
11 | 11 | //------------------------------------------------------------------------------
|
12 | 12 |
|
13 | 13 | const assert = require("assert");
|
| 14 | +const util = require("util"); |
14 | 15 | const fs = require("fs");
|
15 | 16 | const fsp = fs.promises;
|
16 | 17 | const os = require("os");
|
@@ -41,6 +42,15 @@ function ensureDirectoryExists(dirPath) {
|
41 | 42 | }
|
42 | 43 | }
|
43 | 44 |
|
| 45 | +/** |
| 46 | + * Does nothing for a given time. |
| 47 | + * @param {number} time Time in ms. |
| 48 | + * @returns {void} |
| 49 | + */ |
| 50 | +async function sleep(time) { |
| 51 | + await util.promisify(setTimeout)(time); |
| 52 | +} |
| 53 | + |
44 | 54 | //------------------------------------------------------------------------------
|
45 | 55 | // Tests
|
46 | 56 | //------------------------------------------------------------------------------
|
@@ -5305,4 +5315,74 @@ describe("FlatESLint", () => {
|
5305 | 5315 | });
|
5306 | 5316 | });
|
5307 | 5317 |
|
| 5318 | + describe("config file", () => { |
| 5319 | + |
| 5320 | + it("new instance of FlatESLint should use the latest version of the config file (ESM)", async () => { |
| 5321 | + const cwd = path.join(getFixturePath(), `config_file_${Date.now()}`); |
| 5322 | + const configFileContent = "export default [{ rules: { semi: ['error', 'always'] } }];"; |
| 5323 | + const teardown = createCustomTeardown({ |
| 5324 | + cwd, |
| 5325 | + files: { |
| 5326 | + "package.json": '{ "type": "module" }', |
| 5327 | + "eslint.config.js": configFileContent, |
| 5328 | + "a.js": "foo\nbar;" |
| 5329 | + } |
| 5330 | + }); |
| 5331 | + |
| 5332 | + await teardown.prepare(); |
| 5333 | + |
| 5334 | + let eslint = new FlatESLint({ cwd }); |
| 5335 | + let [{ messages }] = await eslint.lintFiles(["a.js"]); |
| 5336 | + |
| 5337 | + assert.strictEqual(messages.length, 1); |
| 5338 | + assert.strictEqual(messages[0].ruleId, "semi"); |
| 5339 | + assert.strictEqual(messages[0].messageId, "missingSemi"); |
| 5340 | + assert.strictEqual(messages[0].line, 1); |
| 5341 | + |
| 5342 | + await sleep(100); |
| 5343 | + await fsp.writeFile(path.join(cwd, "eslint.config.js"), configFileContent.replace("always", "never")); |
| 5344 | + |
| 5345 | + eslint = new FlatESLint({ cwd }); |
| 5346 | + [{ messages }] = await eslint.lintFiles(["a.js"]); |
| 5347 | + |
| 5348 | + assert.strictEqual(messages.length, 1); |
| 5349 | + assert.strictEqual(messages[0].ruleId, "semi"); |
| 5350 | + assert.strictEqual(messages[0].messageId, "extraSemi"); |
| 5351 | + assert.strictEqual(messages[0].line, 2); |
| 5352 | + }); |
| 5353 | + |
| 5354 | + it("new instance of FlatESLint should use the latest version of the config file (CJS)", async () => { |
| 5355 | + const cwd = path.join(getFixturePath(), `config_file_${Date.now()}`); |
| 5356 | + const configFileContent = "module.exports = [{ rules: { semi: ['error', 'always'] } }];"; |
| 5357 | + const teardown = createCustomTeardown({ |
| 5358 | + cwd, |
| 5359 | + files: { |
| 5360 | + "eslint.config.js": configFileContent, |
| 5361 | + "a.js": "foo\nbar;" |
| 5362 | + } |
| 5363 | + }); |
| 5364 | + |
| 5365 | + await teardown.prepare(); |
| 5366 | + |
| 5367 | + let eslint = new FlatESLint({ cwd }); |
| 5368 | + let [{ messages }] = await eslint.lintFiles(["a.js"]); |
| 5369 | + |
| 5370 | + assert.strictEqual(messages.length, 1); |
| 5371 | + assert.strictEqual(messages[0].ruleId, "semi"); |
| 5372 | + assert.strictEqual(messages[0].messageId, "missingSemi"); |
| 5373 | + assert.strictEqual(messages[0].line, 1); |
| 5374 | + |
| 5375 | + await sleep(100); |
| 5376 | + await fsp.writeFile(path.join(cwd, "eslint.config.js"), configFileContent.replace("always", "never")); |
| 5377 | + |
| 5378 | + eslint = new FlatESLint({ cwd }); |
| 5379 | + [{ messages }] = await eslint.lintFiles(["a.js"]); |
| 5380 | + |
| 5381 | + assert.strictEqual(messages.length, 1); |
| 5382 | + assert.strictEqual(messages[0].ruleId, "semi"); |
| 5383 | + assert.strictEqual(messages[0].messageId, "extraSemi"); |
| 5384 | + assert.strictEqual(messages[0].line, 2); |
| 5385 | + }); |
| 5386 | + }); |
| 5387 | + |
5308 | 5388 | });
|
0 commit comments