From d4ecf95ea1e603ff90c69db255872f0fbacac08a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 15:41:27 +0000 Subject: [PATCH 1/7] refactor: rework rule docs scripts --- .github/pull_request_template.md | 2 -- .github/workflows/pipeline.yml | 3 +++ package.json | 18 +++++++++--------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 345c0775..7010f1b7 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,8 +1,6 @@ ## Checks - [ ] I have read the [contributing guidelines](https://github.com/testing-library/eslint-plugin-testing-library/blob/main/CONTRIBUTING.md). -- [ ] If some rule is added/updated/removed, I've regenerated the rules list (`npm run generate:rules-list`) -- [ ] If some rule meta info is changed, I've regenerated the plugin shared configs (`npm run generate:configs`) ## Changes diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 2a59061c..83a4f2d9 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -45,6 +45,9 @@ jobs: - name: Check format run: npm run format:check + - name: Check autogenerated docs + run: npm run docs:gen && git diff --exit-code + tests: name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) runs-on: ubuntu-latest diff --git a/package.json b/package.json index 15fa0632..5e944993 100644 --- a/package.json +++ b/package.json @@ -28,15 +28,15 @@ "scripts": { "build": "tsc", "postbuild": "cpy README.md ./dist && cpy package.json ./dist && cpy LICENSE ./dist", - "format": "prettier --write .", - "format:check": "prettier --check .", - "generate": "npm-run-all \"generate:*\"", - "generate:configs": "ts-node tools/generate-configs && npm run format", - "generate:rules-list": "npm run build && eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/ && npm run format", - "lint": "npm-run-all \"lint:*\"", - "lint:generate": "npm run generate && git diff --exit-code", - "lint:js": "eslint . --max-warnings 0 --ext .js,.ts", - "lint:js:fix": "npm run lint:js -- --fix", + "prettier-base": "prettier . --ignore-unknown --cache --loglevel warn", + "format": "npm run prettier-base -- --write", + "format:check": "npm run prettier-base -- --check", + "lint": "eslint . --max-warnings 0 --ext .js,.ts", + "lint:fix": "npm run lint -- --fix", + "rule-doc-generator": "eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/", + "docs:gen": "npm-run-all \"docs:gen:*\"", + "docs:gen:configs": "ts-node tools/generate-configs && npm run format", + "docs:gen:rules-list": "npm run build && npm run rule-doc-generator && npm run format", "prepare": "is-ci || husky install", "semantic-release": "semantic-release", "test": "jest", From 9e6b171e69da55ea4308c10c41e4fddcb590f87a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 16:36:40 +0000 Subject: [PATCH 2/7] test: remove unnecessary config test --- tests/index.test.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/tests/index.test.ts b/tests/index.test.ts index 6e490f2b..a60411c1 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -1,13 +1,8 @@ -import { exec } from 'child_process'; -import { existsSync } from 'fs'; -import { resolve } from 'path'; -import util from 'util'; +import { existsSync } from 'node:fs'; +import { resolve } from 'node:path'; import plugin from '../lib'; -const execAsync = util.promisify(exec); -const generateConfigs = () => execAsync(`npm run generate:configs`); - const numberOfRules = 27; const ruleNames = Object.keys(plugin.rules); @@ -48,13 +43,6 @@ it('should have the correct amount of rules', () => { } }); -it("should have run 'generate:configs' script when changing config rules", async () => { - await generateConfigs(); - - const allConfigs = plugin.configs; - expect(allConfigs).toMatchSnapshot(); -}, 20000); - it('should export configs that refer to actual rules', () => { const allConfigs = plugin.configs; From c1bae58bcdc3902857eb527d882ac7c7214c52bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 16:38:51 +0000 Subject: [PATCH 3/7] style: avoid formatting after each gen command --- .github/workflows/pipeline.yml | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 83a4f2d9..a3a3e388 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -42,12 +42,12 @@ jobs: - name: Lint code run: npm run lint - - name: Check format - run: npm run format:check - - name: Check autogenerated docs run: npm run docs:gen && git diff --exit-code + - name: Check format + run: npm run format:check + tests: name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) runs-on: ubuntu-latest diff --git a/package.json b/package.json index 5e944993..88d839ac 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "lint:fix": "npm run lint -- --fix", "rule-doc-generator": "eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/", "docs:gen": "npm-run-all \"docs:gen:*\"", - "docs:gen:configs": "ts-node tools/generate-configs && npm run format", - "docs:gen:rules-list": "npm run build && npm run rule-doc-generator && npm run format", + "docs:gen:configs": "ts-node tools/generate-configs", + "docs:gen:rules-list": "npm run build && npm run rule-doc-generator", "prepare": "is-ci || husky install", "semantic-release": "semantic-release", "test": "jest", From a59ccb38dff9948089a3a0effab885220c7a9f7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 16:45:41 +0000 Subject: [PATCH 4/7] Revert "style: avoid formatting after each gen command" This reverts commit c1bae58bcdc3902857eb527d882ac7c7214c52bb. --- .github/workflows/pipeline.yml | 6 +++--- package.json | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index a3a3e388..83a4f2d9 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -42,12 +42,12 @@ jobs: - name: Lint code run: npm run lint - - name: Check autogenerated docs - run: npm run docs:gen && git diff --exit-code - - name: Check format run: npm run format:check + - name: Check autogenerated docs + run: npm run docs:gen && git diff --exit-code + tests: name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) runs-on: ubuntu-latest diff --git a/package.json b/package.json index 88d839ac..5e944993 100644 --- a/package.json +++ b/package.json @@ -35,8 +35,8 @@ "lint:fix": "npm run lint -- --fix", "rule-doc-generator": "eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/", "docs:gen": "npm-run-all \"docs:gen:*\"", - "docs:gen:configs": "ts-node tools/generate-configs", - "docs:gen:rules-list": "npm run build && npm run rule-doc-generator", + "docs:gen:configs": "ts-node tools/generate-configs && npm run format", + "docs:gen:rules-list": "npm run build && npm run rule-doc-generator && npm run format", "prepare": "is-ci || husky install", "semantic-release": "semantic-release", "test": "jest", From b813b9f8b638ed87de6e45cca03a76ca8d59ba19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 18:03:29 +0100 Subject: [PATCH 5/7] refactor: remove node prefix imports MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Michaël De Boey Signed-off-by: Mario Beltrán --- tests/index.test.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/index.test.ts b/tests/index.test.ts index a60411c1..2b738922 100644 --- a/tests/index.test.ts +++ b/tests/index.test.ts @@ -1,5 +1,5 @@ -import { existsSync } from 'node:fs'; -import { resolve } from 'node:path'; +import { existsSync } from 'fs'; +import { resolve } from 'path'; import plugin from '../lib'; From 2ab65673a3f7f5f026d2bfc2d2c2f2b8f1aeeab7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Mon, 21 Nov 2022 17:15:34 +0000 Subject: [PATCH 6/7] test: remove old snapshot --- tests/__snapshots__/index.test.ts.snap | 141 ------------------------- 1 file changed, 141 deletions(-) delete mode 100644 tests/__snapshots__/index.test.ts.snap diff --git a/tests/__snapshots__/index.test.ts.snap b/tests/__snapshots__/index.test.ts.snap deleted file mode 100644 index 3a191824..00000000 --- a/tests/__snapshots__/index.test.ts.snap +++ /dev/null @@ -1,141 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`should have run 'generate:configs' script when changing config rules 1`] = ` -Object { - "angular": Object { - "plugins": Array [ - "testing-library", - ], - "rules": Object { - "testing-library/await-async-query": "error", - "testing-library/await-async-utils": "error", - "testing-library/no-await-sync-query": "error", - "testing-library/no-container": "error", - "testing-library/no-debugging-utils": "error", - "testing-library/no-dom-import": Array [ - "error", - "angular", - ], - "testing-library/no-node-access": "error", - "testing-library/no-promise-in-fire-event": "error", - "testing-library/no-render-in-setup": "error", - "testing-library/no-wait-for-empty-callback": "error", - "testing-library/no-wait-for-multiple-assertions": "error", - "testing-library/no-wait-for-side-effects": "error", - "testing-library/no-wait-for-snapshot": "error", - "testing-library/prefer-find-by": "error", - "testing-library/prefer-presence-queries": "error", - "testing-library/prefer-query-by-disappearance": "error", - "testing-library/prefer-screen-queries": "error", - "testing-library/render-result-naming-convention": "error", - }, - }, - "dom": Object { - "plugins": Array [ - "testing-library", - ], - "rules": Object { - "testing-library/await-async-query": "error", - "testing-library/await-async-utils": "error", - "testing-library/no-await-sync-query": "error", - "testing-library/no-promise-in-fire-event": "error", - "testing-library/no-wait-for-empty-callback": "error", - "testing-library/no-wait-for-multiple-assertions": "error", - "testing-library/no-wait-for-side-effects": "error", - "testing-library/no-wait-for-snapshot": "error", - "testing-library/prefer-find-by": "error", - "testing-library/prefer-presence-queries": "error", - "testing-library/prefer-query-by-disappearance": "error", - "testing-library/prefer-screen-queries": "error", - }, - }, - "marko": Object { - "plugins": Array [ - "testing-library", - ], - "rules": Object { - "testing-library/await-async-query": "error", - "testing-library/await-async-utils": "error", - "testing-library/await-fire-event": "error", - "testing-library/no-await-sync-query": "error", - "testing-library/no-container": "error", - "testing-library/no-debugging-utils": "error", - "testing-library/no-dom-import": Array [ - "error", - "marko", - ], - "testing-library/no-node-access": "error", - "testing-library/no-promise-in-fire-event": "error", - "testing-library/no-render-in-setup": "error", - "testing-library/no-unnecessary-act": "error", - "testing-library/no-wait-for-empty-callback": "error", - "testing-library/no-wait-for-multiple-assertions": "error", - "testing-library/no-wait-for-side-effects": "error", - "testing-library/no-wait-for-snapshot": "error", - "testing-library/prefer-find-by": "error", - "testing-library/prefer-presence-queries": "error", - "testing-library/prefer-query-by-disappearance": "error", - "testing-library/prefer-screen-queries": "error", - "testing-library/render-result-naming-convention": "error", - }, - }, - "react": Object { - "plugins": Array [ - "testing-library", - ], - "rules": Object { - "testing-library/await-async-query": "error", - "testing-library/await-async-utils": "error", - "testing-library/no-await-sync-query": "error", - "testing-library/no-container": "error", - "testing-library/no-debugging-utils": "error", - "testing-library/no-dom-import": Array [ - "error", - "react", - ], - "testing-library/no-node-access": "error", - "testing-library/no-promise-in-fire-event": "error", - "testing-library/no-render-in-setup": "error", - "testing-library/no-unnecessary-act": "error", - "testing-library/no-wait-for-empty-callback": "error", - "testing-library/no-wait-for-multiple-assertions": "error", - "testing-library/no-wait-for-side-effects": "error", - "testing-library/no-wait-for-snapshot": "error", - "testing-library/prefer-find-by": "error", - "testing-library/prefer-presence-queries": "error", - "testing-library/prefer-query-by-disappearance": "error", - "testing-library/prefer-screen-queries": "error", - "testing-library/render-result-naming-convention": "error", - }, - }, - "vue": Object { - "plugins": Array [ - "testing-library", - ], - "rules": Object { - "testing-library/await-async-query": "error", - "testing-library/await-async-utils": "error", - "testing-library/await-fire-event": "error", - "testing-library/no-await-sync-query": "error", - "testing-library/no-container": "error", - "testing-library/no-debugging-utils": "error", - "testing-library/no-dom-import": Array [ - "error", - "vue", - ], - "testing-library/no-node-access": "error", - "testing-library/no-promise-in-fire-event": "error", - "testing-library/no-render-in-setup": "error", - "testing-library/no-wait-for-empty-callback": "error", - "testing-library/no-wait-for-multiple-assertions": "error", - "testing-library/no-wait-for-side-effects": "error", - "testing-library/no-wait-for-snapshot": "error", - "testing-library/prefer-find-by": "error", - "testing-library/prefer-presence-queries": "error", - "testing-library/prefer-query-by-disappearance": "error", - "testing-library/prefer-screen-queries": "error", - "testing-library/render-result-naming-convention": "error", - }, - }, -} -`; From 6a75bd65c0daae5960a119af4ec5248987da8317 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mario=20Beltr=C3=A1n?= Date: Tue, 22 Nov 2022 09:27:14 +0000 Subject: [PATCH 7/7] refactor: avoid format after doc gen --- .github/workflows/pipeline.yml | 2 +- package.json | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/pipeline.yml b/.github/workflows/pipeline.yml index 83a4f2d9..35932ecf 100644 --- a/.github/workflows/pipeline.yml +++ b/.github/workflows/pipeline.yml @@ -46,7 +46,7 @@ jobs: run: npm run format:check - name: Check autogenerated docs - run: npm run docs:gen && git diff --exit-code + run: npm run docs:gen && npm run format && git diff --exit-code tests: name: Tests (Node v${{ matrix.node }} - ESLint v${{ matrix.eslint }}) diff --git a/package.json b/package.json index 5e944993..e728b410 100644 --- a/package.json +++ b/package.json @@ -28,16 +28,16 @@ "scripts": { "build": "tsc", "postbuild": "cpy README.md ./dist && cpy package.json ./dist && cpy LICENSE ./dist", - "prettier-base": "prettier . --ignore-unknown --cache --loglevel warn", + "docs:gen": "run-p \"docs:gen:*\"", + "docs:gen:configs": "ts-node tools/generate-configs", + "docs:gen:rules-list": "npm run build && npm run rule-doc-generator && npm run format", "format": "npm run prettier-base -- --write", "format:check": "npm run prettier-base -- --check", "lint": "eslint . --max-warnings 0 --ext .js,.ts", "lint:fix": "npm run lint -- --fix", - "rule-doc-generator": "eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/", - "docs:gen": "npm-run-all \"docs:gen:*\"", - "docs:gen:configs": "ts-node tools/generate-configs && npm run format", - "docs:gen:rules-list": "npm run build && npm run rule-doc-generator && npm run format", "prepare": "is-ci || husky install", + "prettier-base": "prettier . --ignore-unknown --cache --loglevel warn", + "rule-doc-generator": "eslint-doc-generator --path-rule-list \"../README.md\" --path-rule-doc \"../docs/rules/{name}.md\" --url-rule-doc \"docs/rules/{name}.md\" dist/", "semantic-release": "semantic-release", "test": "jest", "test:ci": "jest --ci --coverage",