diff --git a/.eslintrc.yaml b/.eslintrc.yaml index 8495972640..689a4f919c 100644 --- a/.eslintrc.yaml +++ b/.eslintrc.yaml @@ -18,6 +18,7 @@ plugins: - eslint-plugin-regexp - eslint-plugin-sonarjs - eslint-plugin-unicorn + - eslint-plugin-vitest-globals - eslint-plugin-wc env: @@ -45,6 +46,9 @@ overrides: - files: ["*.config.*"] rules: import/no-unused-modules: [0] + - files: ["**/*.test.*", "web_src/js/test/setup.js"] + env: + vitest-globals/env: true - files: ["web_src/js/modules/fetch.js", "web_src/js/standalone/**/*"] rules: no-restricted-syntax: [2, WithStatement, ForInStatement, LabeledStatement, SequenceExpression] diff --git a/package-lock.json b/package-lock.json index 54ab43c117..e5fec6aa96 100644 --- a/package-lock.json +++ b/package-lock.json @@ -67,6 +67,7 @@ "eslint-plugin-regexp": "1.15.0", "eslint-plugin-sonarjs": "0.21.0", "eslint-plugin-unicorn": "48.0.1", + "eslint-plugin-vitest-globals": "1.4.0", "eslint-plugin-vue": "9.17.0", "eslint-plugin-vue-scoped-css": "2.5.0", "eslint-plugin-wc": "2.0.3", @@ -4963,6 +4964,12 @@ "eslint": ">=8.44.0" } }, + "node_modules/eslint-plugin-vitest-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vitest-globals/-/eslint-plugin-vitest-globals-1.4.0.tgz", + "integrity": "sha512-WE+YlK9X9s4vf5EaYRU0Scw7WItDZStm+PapFSYlg2ABNtaQ4zIG7wEqpoUB3SlfM+SgkhgmzR0TeJOO5k3/Nw==", + "dev": true + }, "node_modules/eslint-plugin-vue": { "version": "9.17.0", "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.17.0.tgz", diff --git a/package.json b/package.json index 94c30030d5..fb0ee33998 100644 --- a/package.json +++ b/package.json @@ -66,6 +66,7 @@ "eslint-plugin-regexp": "1.15.0", "eslint-plugin-sonarjs": "0.21.0", "eslint-plugin-unicorn": "48.0.1", + "eslint-plugin-vitest-globals": "1.4.0", "eslint-plugin-vue": "9.17.0", "eslint-plugin-vue-scoped-css": "2.5.0", "eslint-plugin-wc": "2.0.3", diff --git a/vitest.config.js b/vitest.config.js index 49f59ba982..9a6cb4e560 100644 --- a/vitest.config.js +++ b/vitest.config.js @@ -11,6 +11,7 @@ export default defineConfig({ open: false, allowOnly: true, passWithNoTests: true, + globals: true, watch: false, }, plugins: [ diff --git a/web_src/js/features/common-issue-list.test.js b/web_src/js/features/common-issue-list.test.js index 271acc718a..da7ea64b7c 100644 --- a/web_src/js/features/common-issue-list.test.js +++ b/web_src/js/features/common-issue-list.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {parseIssueListQuickGotoLink} from './common-issue-list.js'; test('parseIssueListQuickGotoLink', () => { diff --git a/web_src/js/features/repo-code.test.js b/web_src/js/features/repo-code.test.js index 3bd1973c1f..0e0062a787 100644 --- a/web_src/js/features/repo-code.test.js +++ b/web_src/js/features/repo-code.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {singleAnchorRegex, rangeAnchorRegex} from './repo-code.js'; test('singleAnchorRegex', () => { diff --git a/web_src/js/features/repo-findfile.test.js b/web_src/js/features/repo-findfile.test.js index a90b0bf0a2..2d96ed4463 100644 --- a/web_src/js/features/repo-findfile.test.js +++ b/web_src/js/features/repo-findfile.test.js @@ -1,4 +1,3 @@ -import {describe, expect, test} from 'vitest'; import {strSubMatch, calcMatchedWeight, filterRepoFilesWeighted} from './repo-findfile.js'; describe('Repo Find Files', () => { diff --git a/web_src/js/modules/fetch.test.js b/web_src/js/modules/fetch.test.js index ec0377b4d9..e4bec3ced9 100644 --- a/web_src/js/modules/fetch.test.js +++ b/web_src/js/modules/fetch.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {GET, POST, PATCH, PUT, DELETE} from './fetch.js'; // tests here are only to satisfy the linter for unused functions diff --git a/web_src/js/modules/toast.test.js b/web_src/js/modules/toast.test.js index b5066df0b2..357f18dbcd 100644 --- a/web_src/js/modules/toast.test.js +++ b/web_src/js/modules/toast.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {showInfoToast, showErrorToast, showWarningToast} from './toast.js'; test('showInfoToast', async () => { diff --git a/web_src/js/render/ansi.test.js b/web_src/js/render/ansi.test.js index b4793251df..5afff71c29 100644 --- a/web_src/js/render/ansi.test.js +++ b/web_src/js/render/ansi.test.js @@ -1,4 +1,3 @@ -import {expect, test} from 'vitest'; import {renderAnsi} from './ansi.js'; test('renderAnsi', () => { diff --git a/web_src/js/svg.test.js b/web_src/js/svg.test.js index 5db2f65ac8..06b320c860 100644 --- a/web_src/js/svg.test.js +++ b/web_src/js/svg.test.js @@ -1,4 +1,3 @@ -import {expect, test} from 'vitest'; import {svg, SvgIcon, svgParseOuterInner} from './svg.js'; import {createApp, h} from 'vue'; diff --git a/web_src/js/utils.test.js b/web_src/js/utils.test.js index db9b1a14a3..2754e41c43 100644 --- a/web_src/js/utils.test.js +++ b/web_src/js/utils.test.js @@ -1,4 +1,3 @@ -import {expect, test} from 'vitest'; import { basename, extname, isObject, stripTags, parseIssueHref, parseUrl, translateMonth, translateDay, blobToDataURI, diff --git a/web_src/js/utils/color.test.js b/web_src/js/utils/color.test.js index 7d45d191a0..e129109ef0 100644 --- a/web_src/js/utils/color.test.js +++ b/web_src/js/utils/color.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {useLightTextOnBackground} from './color.js'; test('useLightTextOnBackground', () => { diff --git a/web_src/js/utils/match.test.js b/web_src/js/utils/match.test.js index 5dfbd932f4..1e30b451d4 100644 --- a/web_src/js/utils/match.test.js +++ b/web_src/js/utils/match.test.js @@ -1,4 +1,3 @@ -import {test, expect} from 'vitest'; import {matchEmoji, matchMention} from './match.js'; test('matchEmoji', () => { diff --git a/web_src/js/utils/url.test.js b/web_src/js/utils/url.test.js index ef2ffaa5f9..3dbedec94f 100644 --- a/web_src/js/utils/url.test.js +++ b/web_src/js/utils/url.test.js @@ -1,4 +1,3 @@ -import {expect, test} from 'vitest'; import {pathEscapeSegments} from './url.js'; test('pathEscapeSegments', () => {