eslint-plugin-eslint-plugin icon indicating copy to clipboard operation
eslint-plugin-eslint-plugin copied to clipboard

Rule Proposal: `prefer-global-parser-options`

Open bmish opened this issue 4 years ago • 1 comments

If all test cases specify the same parserOptions, then parserOptions should be set globally in the test file when creating the RuleTester to simplify the individual test cases.

Before:

const rule = require('../../../lib/rules/my-rule');
const RuleTester = require('eslint').RuleTester;

const eslintTester = new RuleTester();

eslintTester.run('my-rule', rule, {
  valid: [
    {
      code: 'someFunction()',
      parserOptions: { ecmaVersion: 6, sourceType: 'module' },
    },
    {
      code: 'otherFunction()',
      parserOptions: { ecmaVersion: 6, sourceType: 'module' },
    },
  ],
  invalid: [
    {
      code: 'finalFunction()',
      parserOptions: { ecmaVersion: 6, sourceType: 'module' },
      output: null,
      errors: [
        {
          message: 'Some error message',
          type: 'CallExpression',
        },
      ],
    },
  ],
});

After:

const rule = require('../../../lib/rules/my-rule');
const RuleTester = require('eslint').RuleTester;

const eslintTester = new RuleTester({
  parserOptions: { ecmaVersion: 6, sourceType: 'module' },
});

eslintTester.run('my-rule', rule, {
  valid: ['someFunction()', 'otherFunction()'],
  invalid: [
    {
      code: 'finalFunction()',
      output: null,
      errors: [
        {
          message: 'Some error message',
          type: 'CallExpression',
        },
      ],
    },
  ],
});

bmish avatar Nov 06 '19 18:11 bmish

related: https://github.com/eslint-community/eslint-plugin-eslint-plugin/issues/4

It's fine to use the global option when it's the same in all tests. The question is what to do if some options are different.

aladdin-add avatar Jan 29 '24 07:01 aladdin-add