babel/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js
Nicolò Ribaudo d04842a700
Avoid using CJS globals in internal source files (#12963)
* Lint against CJS globals in modules

* Use `import.meta.url` instead of `__filename` in `src` files

* Prepare fixtures runner for `import.meta.url`

* Use `import.meta.url` instead of `__filename` in `test/index` files

* Remove `__dirname` from remaining test files

dirname

* Avoid using `module` in `src` files

* Avoid using `require` in `src` files

* Avoid using `require` in `test` files

* Update `@types/node`

* Compile dynamic import in `@babel/node`

* Fix windows

* Use `@babel/plugin-proposal-dynamic-import` from npm
2021-03-05 19:55:36 +01:00

73 lines
1.8 KiB
JavaScript

import eslint from "eslint";
import unpad from "dedent";
import path from "path";
import { fileURLToPath } from "url";
import * as parser from "../../../babel-eslint-parser";
export default function verifyAndAssertMessages(
code,
rules = {},
expectedMessages = [],
sourceType,
overrideConfig,
) {
const linter = new eslint.Linter();
linter.defineParser("@babel/eslint-parser", parser);
const messages = linter.verify(unpad(`${code}`), {
parser: "@babel/eslint-parser",
rules,
env: {
node: true,
es6: true,
},
...overrideConfig,
parserOptions: {
sourceType,
requireConfigFile: false,
babelOptions: {
configFile: path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
"../../../babel-eslint-shared-fixtures/config/babel.config.js",
),
},
...overrideConfig?.parserOptions,
},
});
if (messages.length !== expectedMessages.length) {
throw new Error(
`Expected ${expectedMessages.length} message(s), got ${
messages.length
}\n${JSON.stringify(messages, null, 2)}`,
);
}
messages.forEach((message, i) => {
const formattedMessage = `${message.line}:${message.column} ${
message.message
}${message.ruleId ? ` ${message.ruleId}` : ""}`;
const expectedMessage = expectedMessages[i];
if (expectedMessage instanceof RegExp) {
if (!expectedMessage.test(formattedMessage)) {
throw new Error(
`
Message ${i} does not pass RegExp test:
Test: ${expectedMessage}
Actual: ${formattedMessage}
`,
);
}
} else if (formattedMessage !== expectedMessage) {
throw new Error(
`
Message ${i} does not match:
Expected: ${expectedMessage}
Actual: ${formattedMessage}
`,
);
}
});
}