From 6274d965340a7cedeb6e9a9d40e3df0b2a4275f1 Mon Sep 17 00:00:00 2001 From: Bryan Mishkin <698306+bmish@users.noreply.github.com> Date: Sun, 26 Jan 2020 10:41:57 -0800 Subject: [PATCH] [Tests] set `eslint-plugin/consistent-output` lint rule to always require test case output assertions Use the more strict option for this internal lint rule. If a rule has no autofix, we should assert that there is no output. All of the test cases I fixed have no autofix, so the output matches the input. In eslint > v2, we can switch to `output: null` to represent this, and re-enable the `eslint-plugin/prefer-output-null` internal lint rule. https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/consistent-output.md https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-output-null.md --- .eslintrc.yml | 3 +- tests/src/rules/dynamic-import-chunkname.js | 83 +++++++++++++++++++++ tests/src/rules/no-commonjs.js | 21 ++++-- tests/src/rules/unambiguous.js | 1 + 4 files changed, 98 insertions(+), 10 deletions(-) diff --git a/.eslintrc.yml b/.eslintrc.yml index c09d4f599..8c270e953 100644 --- a/.eslintrc.yml +++ b/.eslintrc.yml @@ -28,11 +28,10 @@ rules: - allowTemplateLiterals: true avoidEscape: true - eslint-plugin/consistent-output: "error" + eslint-plugin/consistent-output: ["error", "always"] eslint-plugin/meta-property-ordering: "error" eslint-plugin/no-deprecated-context-methods: "error" eslint-plugin/no-deprecated-report-api: "off" - eslint-plugin/prefer-output-null: "error" eslint-plugin/prefer-replace-text: "error" eslint-plugin/report-message-format: "error" eslint-plugin/require-meta-schema: "error" diff --git a/tests/src/rules/dynamic-import-chunkname.js b/tests/src/rules/dynamic-import-chunkname.js index d19667c16..e8cbb9c6f 100644 --- a/tests/src/rules/dynamic-import-chunkname.js +++ b/tests/src/rules/dynamic-import-chunkname.js @@ -154,6 +154,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + // webpackChunkName: "someModule" + 'someModule' + )`, errors: [{ message: nonBlockCommentError, type: 'CallExpression', @@ -163,6 +167,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { code: 'import(\'test\')', options, parser, + output: 'import(\'test\')', errors: [{ message: noLeadingCommentError, type: 'CallExpression', @@ -175,6 +180,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName: someModule */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -187,6 +196,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName: 'someModule' */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -199,6 +212,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName "someModule" */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -211,6 +228,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName:"someModule" */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -223,6 +244,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /*webpackChunkName: "someModule"*/ + 'someModule' + )`, errors: [{ message: noPaddingCommentError, type: 'CallExpression', @@ -235,6 +260,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName : "someModule" */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -247,6 +276,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackChunkName: "someModule" ; */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -259,6 +292,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* totally not webpackChunkName: "someModule" */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -272,6 +309,11 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackPrefetch: true */ + /* webpackChunk: "someModule" */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -284,6 +326,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options, parser, + output: `import( + /* webpackPrefetch: true, webpackChunk: "someModule" */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -296,6 +342,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { )`, options: pickyCommentOptions, parser, + output: `import( + /* webpackChunkName: "someModule123" */ + 'someModule' + )`, errors: [{ message: pickyCommentFormatError, type: 'CallExpression', @@ -307,6 +357,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options: multipleImportFunctionOptions, + output: `dynamicImport( + /* webpackChunkName "someModule" */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -318,6 +372,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options: multipleImportFunctionOptions, + output: `definitelyNotStaticImport( + /* webpackChunkName "someModule" */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -329,6 +387,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, + output: `dynamicImport( + // webpackChunkName: "someModule" + 'someModule' + )`, errors: [{ message: nonBlockCommentError, type: 'CallExpression', @@ -337,6 +399,7 @@ ruleTester.run('dynamic-import-chunkname', rule, { { code: 'dynamicImport(\'test\')', options, + output: 'dynamicImport(\'test\')', errors: [{ message: noLeadingCommentError, type: 'CallExpression', @@ -348,6 +411,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, + output: `dynamicImport( + /* webpackChunkName: someModule */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -359,6 +426,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, + output: `dynamicImport( + /* webpackChunkName: 'someModule' */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -370,6 +441,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, + output: `dynamicImport( + /* webpackChunkName "someModule" */ + 'someModule' + )`, errors: [{ message: invalidSyntaxCommentError, type: 'CallExpression', @@ -381,6 +456,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options, + output: `dynamicImport( + /* webpackChunkName:"someModule" */ + 'someModule' + )`, errors: [{ message: commentFormatError, type: 'CallExpression', @@ -392,6 +471,10 @@ ruleTester.run('dynamic-import-chunkname', rule, { 'someModule' )`, options: pickyCommentOptions, + output: `dynamicImport( + /* webpackChunkName: "someModule123" */ + 'someModule' + )`, errors: [{ message: pickyCommentFormatError, type: 'CallExpression', diff --git a/tests/src/rules/no-commonjs.js b/tests/src/rules/no-commonjs.js index d47169315..d2c4ed310 100644 --- a/tests/src/rules/no-commonjs.js +++ b/tests/src/rules/no-commonjs.js @@ -68,36 +68,41 @@ ruleTester.run('no-commonjs', require('rules/no-commonjs'), { // imports ...(semver.satisfies(eslintPkg.version, '< 4.0.0') ? [] : [ - { code: 'var x = require("x")', errors: [ { message: IMPORT_MESSAGE }] }, - { code: 'x = require("x")', errors: [ { message: IMPORT_MESSAGE }] }, - { code: 'require("x")', errors: [ { message: IMPORT_MESSAGE }] }, + { code: 'var x = require("x")', output: 'var x = require("x")', errors: [ { message: IMPORT_MESSAGE }] }, + { code: 'x = require("x")', output: 'x = require("x")', errors: [ { message: IMPORT_MESSAGE }] }, + { code: 'require("x")', output: 'require("x")', errors: [ { message: IMPORT_MESSAGE }] }, { code: 'if (typeof window !== "undefined") require("x")', options: [{ allowConditionalRequire: false }], + output: 'if (typeof window !== "undefined") require("x")', errors: [ { message: IMPORT_MESSAGE }], }, { code: 'if (typeof window !== "undefined") { require("x") }', options: [{ allowConditionalRequire: false }], + output: 'if (typeof window !== "undefined") { require("x") }', errors: [ { message: IMPORT_MESSAGE }], }, { code: 'try { require("x") } catch (error) {}', options: [{ allowConditionalRequire: false }], + output: 'try { require("x") } catch (error) {}', errors: [ { message: IMPORT_MESSAGE }], }, ]), // exports - { code: 'exports.face = "palm"', errors: [ { message: EXPORT_MESSAGE }] }, - { code: 'module.exports.face = "palm"', errors: [ { message: EXPORT_MESSAGE }] }, - { code: 'module.exports = face', errors: [ { message: EXPORT_MESSAGE }] }, - { code: 'exports = module.exports = {}', errors: [ { message: EXPORT_MESSAGE }] }, - { code: 'var x = module.exports = {}', errors: [ { message: EXPORT_MESSAGE }] }, + { code: 'exports.face = "palm"', output: 'exports.face = "palm"', errors: [ { message: EXPORT_MESSAGE }] }, + { code: 'module.exports.face = "palm"', output: 'module.exports.face = "palm"', errors: [ { message: EXPORT_MESSAGE }] }, + { code: 'module.exports = face', output: 'module.exports = face', errors: [ { message: EXPORT_MESSAGE }] }, + { code: 'exports = module.exports = {}', output: 'exports = module.exports = {}', errors: [ { message: EXPORT_MESSAGE }] }, + { code: 'var x = module.exports = {}', output: 'var x = module.exports = {}', errors: [ { message: EXPORT_MESSAGE }] }, { code: 'module.exports = {}', options: ['allow-primitive-modules'], + output: 'module.exports = {}', errors: [ { message: EXPORT_MESSAGE }], }, { code: 'var x = module.exports', options: ['allow-primitive-modules'], + output: 'var x = module.exports', errors: [ { message: EXPORT_MESSAGE }], }, ], diff --git a/tests/src/rules/unambiguous.js b/tests/src/rules/unambiguous.js index 09ca57ef9..705ce79d1 100644 --- a/tests/src/rules/unambiguous.js +++ b/tests/src/rules/unambiguous.js @@ -50,6 +50,7 @@ ruleTester.run('unambiguous', rule, { { code: 'function x() {}', parserOptions: { ecmaVersion: 2015, sourceType: 'module' }, + output: 'function x() {}', errors: ['This module could be parsed as a valid script.'], }, ],