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

Add a rule to enforce test code cases are auto-formatted

Open JoshuaKGoldberg opened this issue 1 year ago • 2 comments

Coming over from @bradzacher's typescript-eslint Discord comment about RuleTester usage around suggestions -> https://github.com/typescript-eslint/typescript-eslint/issues/9639: typescript-eslint has an internal lint rule for test formatting which enforces things like "a template string must be either indented 0 or indented template indent + 2" and "all cases must be prettier formatted". This is really useful for keeping rule test code clean and readable.

Incorrect:

ruleTester.run("my-rule", {
  invalid: [ /* ... */ ],
  valid: [
    `console.log ( "some code" ) `
  ],
});

Correct:

ruleTester.run("my-rule", {
  invalid: [ /* ... */ ],
  valid: [
    `console.log("some code");`
  ],
});

Rule source: https://github.com/typescript-eslint/typescript-eslint/blob/eb76e34876ea973c462fad7073c134652f83c41b/packages/eslint-plugin-internal/src/rules/plugin-test-formatting.ts

This also isn't really specific to typescript-eslint. I could see a use case for any arbitrary plugin to want it.

Proposal: would you be interested in taking this rule into eslint-plugin-eslint-plugin?

JoshuaKGoldberg avatar Jul 25 '24 12:07 JoshuaKGoldberg

Sorry to bother you @aladdin-add, but is this something you have bandwidth to triage?

Context: I'm interested in implementing this to close out https://github.com/typescript-eslint/typescript-eslint/issues/9639. I'd be happy to send a PR here if the project would accept it.

JoshuaKGoldberg avatar May 06 '25 02:05 JoshuaKGoldberg

sounds useful; I'm just a little concerned about whether it should depend on prettier - not all the projects using it. maybe can be configured settings:

import prettier from "prettier";

export default [{
  settings: {"eslint-plugin": {formatter: prettier}}
}];

aladdin-add avatar May 06 '25 04:05 aladdin-add