Files
babel/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js
Nicolò RibaudoandGitHub 8027174d33 Enable Babel and Prettier e2e tests for the esm build (#15672)
* Try enabling more e2e tests for the esm build

* ssh

* babel, cra, prettier

* Dont load babel config in ESLint tests

* Add missing devdep used in tests

* Make sure to not load root babel.config.js in tests

* syntax old node
2023-06-26 13:50:32 -04:00

76 lines
2.0 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/lib/index.cjs";
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,
...(overrideConfig && overrideConfig.parserOptions),
babelOptions: {
configFile: path.resolve(
path.dirname(fileURLToPath(import.meta.url)),
"../../../babel-eslint-shared-fixtures/config/babel.config.js",
),
...(overrideConfig &&
overrideConfig.parserOptions &&
overrideConfig.parserOptions.babelOptions),
},
},
});
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}
`,
);
}
});
}