babel/eslint/babel-eslint-tests/test/helpers/verifyAndAssertMessages.js
Kai Cataldo 4ac9c7afe2
Upgrade to ESLint v7 (#11857)
* Upgrade to ESLint v7

* Upgrade eslint-plugin-import

* Update peer deps

* Remove max-len from ESLint config

* Update tests

* Only test babel-eslint-* packages in Node >=10

* Remove babel-eslint

* Fix linking in dev

* Add comment to Makefile

* Fix e2e tests

* Add --ignore-engines flag when installing in ESLint packages

* fix: convert tt.questionDot to Punctuator

* chore: update lockfile

Co-authored-by: Huáng Jùnliàng <jlhwung@gmail.com>
2020-07-29 19:11:48 -04:00

70 lines
1.7 KiB
JavaScript

import eslint from "eslint";
import unpad from "dedent";
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: require.resolve(
"../../../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}
`,
);
}
});
}