diff options
Diffstat (limited to '.eslintrc-test-paths.js')
-rw-r--r-- | .eslintrc-test-paths.js | 480 |
1 files changed, 480 insertions, 0 deletions
diff --git a/.eslintrc-test-paths.js b/.eslintrc-test-paths.js new file mode 100644 index 0000000000..ddbdea85e0 --- /dev/null +++ b/.eslintrc-test-paths.js @@ -0,0 +1,480 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +"use strict"; + +/* eslint-env node */ + +// The `*testPaths` defined below for test paths are the main path formats we +// prefer to support for tests as they are commonly used across the tree. + +// We prefer the tests to be in named directories as this makes it easier +// to identify the types of tests developers are working with. Additionally, +// it is not possible to scope ESLint rules to individual files based on .ini +// files without a build step that would break editors, or an expensive loading +// cycle. + +// Please do not add more cases of multiple test types in a single +// directory. This may cause ESLint rules to be incorrectly applied to the wrong +// tests, leading to false negatives. It could cause the wrong sets of globals +// to be defined in the scope, causing false positives when checking for no +// undefined variables. + +// See https://firefox-source-docs.mozilla.org/code-quality/lint/linters/eslint.html#i-m-adding-tests-how-do-i-set-up-the-right-configuration +// for more information. + +const browserTestPaths = ["**/test*/**/browser*/"]; + +const chromeTestPaths = ["**/test*/chrome/"]; + +const mochitestTestPaths = [ + // Note: we do not want to match testing/mochitest as that would apply + // too many globals for that directory. + "**/test/mochitest*/", + "**/tests/mochitest*/", + "testing/mochitest/tests/SimpleTest/", + "testing/mochitest/tests/Harness_sanity/", +]; + +const xpcshellTestPaths = [ + "**/test*/unit*/**/", + "**/test*/*/unit*/", + "**/test*/xpcshell/**/", +]; + +// NOTE: Before adding to the list below, please see the note at the top +// of the file. + +const extraXpcshellTestPaths = [ + "devtools/platform/tests/xpcshell/", + "dom/file/tests/", + "dom/ipc/tests/", + "intl/benchmarks/", + "intl/l10n/test/", + "ipc/testshell/tests/", + "memory/replace/dmd/test/", + "netwerk/test/httpserver/test/", + "testing/modules/tests/xpcshell/", + "toolkit/components/backgroundhangmonitor/tests/", + "toolkit/components/downloads/test/data/", + "toolkit/components/mozintl/test/", + "toolkit/components/places/tests/", + "toolkit/components/places/tests/bookmarks/", + "toolkit/components/places/tests/expiration/", + "toolkit/components/places/tests/favicons/", + "toolkit/components/places/tests/history/", + "toolkit/components/places/tests/legacy/", + "toolkit/components/places/tests/migration/", + "toolkit/components/places/tests/queries/", + "toolkit/components/thumbnails/test/", + "toolkit/modules/tests/modules/", + "toolkit/mozapps/update/tests/data/", + "toolkit/profile/xpcshell/", + "toolkit/xre/test/", + "widget/headless/tests/", +]; + +// NOTE: Before adding to the list below, please see the note at the top +// of the file. + +const extraBrowserTestPaths = [ + "dom/ipc/tests/", + "toolkit/components/thumbnails/test/", + "toolkit/xre/test/", + "browser/base/content/test/about/", + "browser/base/content/test/alerts/", + "browser/base/content/test/backforward/", + "browser/base/content/test/caps/", + "browser/base/content/test/captivePortal/", + "browser/base/content/test/contentTheme/", + "browser/base/content/test/contextMenu/", + "browser/base/content/test/favicons/", + "browser/base/content/test/forms/", + "browser/base/content/test/fullscreen/", + "browser/base/content/test/general/", + "browser/base/content/test/gesture/", + "browser/base/content/test/historySwipeAnimation/", + "browser/base/content/test/keyboard/", + "browser/base/content/test/menubar/", + "browser/base/content/test/metaTags/", + "browser/base/content/test/notificationbox/", + "browser/base/content/test/outOfProcess/", + "browser/base/content/test/pageActions/", + "browser/base/content/test/pageStyle/", + "browser/base/content/test/pageinfo/", + "browser/base/content/test/performance/", + "browser/base/content/test/permissions/", + "browser/base/content/test/plugins/", + "browser/base/content/test/popupNotifications/", + "browser/base/content/test/popups/", + "browser/base/content/test/privateBrowsing/", + "browser/base/content/test/protectionsUI/", + "browser/base/content/test/referrer/", + "browser/base/content/test/sanitize/", + "browser/base/content/test/sidebar/", + "browser/base/content/test/siteIdentity/", + "browser/base/content/test/startup/", + "browser/base/content/test/static/", + "browser/base/content/test/statuspanel/", + "browser/base/content/test/sync/", + "browser/base/content/test/tabMediaIndicator/", + "browser/base/content/test/tabPrompts/", + "browser/base/content/test/tabcrashed/", + "browser/base/content/test/tabdialogs/", + "browser/base/content/test/tabs/", + "browser/base/content/test/touch/", + "browser/base/content/test/utilityOverlay/", + "browser/base/content/test/webextensions/", + "browser/base/content/test/webrtc/", + "browser/base/content/test/zoom/", + "browser/components/customizableui/test/", + "browser/components/pocket/test/", + "browser/components/preferences/tests/", + "browser/components/safebrowsing/content/test/", + "browser/components/sessionstore/test/", + "browser/components/shell/test/", + "browser/components/touchbar/tests/", + "browser/components/uitour/test/", + "browser/extensions/report-site-issue/test/browser/", + "browser/tools/mozscreenshots/", + "caps/tests/mochitest/", + "devtools/client/debugger/test/mochitest/", + "devtools/client/dom/test/", + "devtools/client/framework/browser-toolbox/test/", + "devtools/client/framework/test/", + "devtools/client/inspector/animation/test/", + "devtools/client/inspector/boxmodel/test/", + "devtools/client/inspector/changes/test/", + "devtools/client/inspector/computed/test/", + "devtools/client/inspector/extensions/test/", + "devtools/client/inspector/flexbox/test/", + "devtools/client/inspector/fonts/test/", + "devtools/client/inspector/grids/test/", + "devtools/client/inspector/markup/test/", + "devtools/client/inspector/rules/test/", + "devtools/client/inspector/shared/test/", + "devtools/client/inspector/test/", + "devtools/client/jsonview/test/", + "devtools/client/memory/test/browser/", + "devtools/client/netmonitor/src/har/test/", + "devtools/client/netmonitor/test/", + "devtools/client/shared/sourceeditor/test/", + "devtools/client/shared/test/", + "devtools/client/storage/test/", + "devtools/client/styleeditor/test/", + "devtools/shared/commands/inspected-window/tests/", + "devtools/shared/commands/inspector/tests/", + "devtools/shared/commands/network/tests/", + "devtools/shared/commands/resource/tests/", + "devtools/shared/commands/script/tests/", + "devtools/shared/commands/target-configuration/tests/", + "devtools/shared/commands/target/tests/", + "devtools/shared/commands/thread-configuration/tests/", + "devtools/shared/test-helpers/", + "docshell/test/navigation/", + "dom/base/test/", + "dom/broadcastchannel/tests/", + "dom/events/test/", + "dom/fetch/tests/", + "dom/file/ipc/tests/", + "dom/html/test/", + "dom/indexedDB/test/", + "dom/ipc/tests/", + "dom/l10n/tests/mochitest/", + "dom/localstorage/test/", + "dom/manifest/test/", + "dom/midi/tests/", + "dom/payments/test/", + "dom/plugins/test/mochitest/", + "dom/reporting/tests/", + "dom/security/test/cors/", + "dom/security/test/csp/", + "dom/security/test/general/", + "dom/security/test/https-first/", + "dom/security/test/https-only/", + "dom/security/test/mixedcontentblocker/", + "dom/security/test/referrer-policy/", + "dom/security/test/sec-fetch/", + "dom/serviceworkers/test/", + "dom/tests/browser/", + "dom/url/tests/", + "dom/workers/test/", + "dom/xhr/tests/", + "editor/libeditor/tests/", + "extensions/permissions/test/", + "layout/base/tests/", + "layout/style/test/", + "layout/xul/test/", + "netwerk/test/useragent/", + "parser/htmlparser/tests/mochitest/", + "security/sandbox/test/", + "testing/mochitest/baselinecoverage/browser_chrome/", + "testing/mochitest/tests/python/files/", + "toolkit/components/alerts/test/", + "toolkit/components/mozprotocol/tests/", + "toolkit/components/narrate/test/", + "toolkit/components/pdfjs/test/", + "toolkit/components/pictureinpicture/tests/", + "toolkit/components/printing/tests/", + "toolkit/components/reader/test/", + "toolkit/components/thumbnails/test/", + "toolkit/components/tooltiptext/tests/", + "toolkit/components/windowcreator/test/", + "toolkit/components/windowwatcher/test/", + "toolkit/mozapps/extensions/test/xpinstall/", + "uriloader/exthandler/tests/mochitest/", +]; + +// NOTE: Before adding to the list below, please see the note at the top +// of the file. + +const extraChromeTestPaths = [ + "devtools/shared/security/tests/chrome/", + "devtools/shared/webconsole/test/chrome/", + "dom/base/test/", + "dom/battery/test/", + "dom/bindings/test/", + "dom/console/tests/", + "dom/encoding/test/", + "dom/events/test/", + "dom/flex/test/", + "dom/grid/test/", + "dom/html/test/", + "dom/html/test/forms/", + "dom/indexedDB/test/", + "dom/messagechannel/tests/", + "dom/network/tests/", + "dom/promise/tests/", + "dom/security/test/general/", + "dom/security/test/sec-fetch/", + "dom/serviceworkers/test/", + "dom/system/tests/", + "dom/url/tests/", + "dom/websocket/tests/", + "dom/workers/test/", + "dom/xul/test/", + "editor/composer/test/", + "extensions/universalchardet/tests/", + "gfx/layers/apz/test/mochitest/", + "image/test/mochitest/", + "layout/forms/test/", + "layout/generic/test/", + "layout/mathml/tests/", + "layout/svg/tests/", + "layout/xul/test/", + "toolkit/components/aboutmemory/tests/", + "toolkit/components/printing/tests/", + "toolkit/components/url-classifier/tests/mochitest/", + "toolkit/components/viewsource/test/", + "toolkit/components/windowcreator/test/", + "toolkit/components/windowwatcher/test/", + "toolkit/components/workerloader/tests/", + "toolkit/content/tests/widgets/", + "toolkit/profile/test/", + "widget/tests/", + "xpfe/appshell/test/", +]; + +// NOTE: Before adding to the list below, please see the note at the top +// of the file. + +const extraMochitestTestPaths = [ + "dom/ipc/tests/", + "toolkit/xre/test/", + "accessible/tests/crashtests/", + "browser/components/protocolhandler/test/", + "caps/tests/mochitest/", + "docshell/test/iframesandbox/", + "docshell/test/navigation/", + "dom/abort/tests/", + "dom/animation/test/mozilla/", + "dom/animation/test/style/", + "dom/base/test/", + "dom/battery/test/", + "dom/bindings/test/", + "dom/broadcastchannel/tests/", + "dom/canvas/test/", + "dom/console/tests/", + "dom/credentialmanagement/tests/", + "dom/crypto/test/", + "dom/encoding/test/", + "dom/events/test/", + "dom/file/tests/", + "dom/file/ipc/tests/", + "dom/filesystem/compat/tests/", + "dom/filesystem/tests/", + "dom/html/test/", + "dom/html/test/forms/", + "dom/indexedDB/test/", + "dom/ipc/tests/", + "dom/jsurl/test/", + "dom/localstorage/test/", + "dom/locks/test/", + "dom/manifest/test/", + "dom/media/mediasession/test/", + "dom/media/mediasource/test/", + "dom/media/test/", + "dom/media/webaudio/test/", + "dom/media/webcodecs/test/", + "dom/media/webspeech/recognition/test/", + "dom/media/webspeech/synth/test/", + "dom/messagechannel/tests/", + "dom/midi/tests/", + "dom/network/tests/", + "dom/payments/test/", + "dom/performance/tests/", + "dom/permission/tests/", + "dom/plugins/test/mochitest/", + "dom/promise/tests/", + "dom/push/test/", + "dom/quota/test/modules/content/", + "dom/reporting/tests/", + "dom/security/test/cors/", + "dom/security/test/csp/", + "dom/security/test/https-only/", + "dom/security/test/mixedcontentblocker/", + "dom/security/test/referrer-policy/", + "dom/security/test/sec-fetch/", + "dom/security/test/sri/", + "dom/serviceworkers/test/", + "dom/smil/test/", + "dom/svg/test/", + "dom/system/tests/", + "dom/u2f/tests/", + "dom/url/tests/", + "dom/webauthn/tests/", + "dom/websocket/tests/", + "dom/workers/test/", + "dom/worklet/tests/", + "dom/xhr/tests/", + "dom/xml/test/", + "dom/xul/test/", + "editor/composer/test/", + "editor/libeditor/tests/", + "editor/spellchecker/tests/", + "extensions/permissions/test/", + "gfx/layers/apz/test/mochitest/", + "image/test/mochitest/", + "intl/uconv/tests/", + "layout/base/tests/", + "layout/forms/test/", + "layout/generic/test/", + "layout/inspector/tests/", + "layout/style/test/", + "layout/svg/tests/", + "layout/tables/test/", + "layout/xul/test/", + "parser/htmlparser/tests/mochitest/", + "services/sync/tests/tps/", + "testing/mochitest/baselinecoverage/plain/", + "testing/mochitest/tests/python/files/", + "toolkit/components/alerts/test/", + "toolkit/components/passwordmgr/test/mochitest/", + "toolkit/components/prompts/test/", + "toolkit/components/satchel/test/", + "toolkit/components/url-classifier/tests/mochitest/", + "toolkit/components/windowcreator/test/", + "toolkit/components/windowwatcher/test/", + "toolkit/content/tests/widgets/", + "toolkit/xre/test/", + "uriloader/exthandler/tests/mochitest/", + "widget/tests/", +]; + +// Please DO NOT add more entries to the list below. +// Doing so may cause conflicts in ESLint rules and globals, and cause +// unexpected issues to be raised or missed. +let expectedDupePaths = new Set([ + "caps/tests/mochitest/", + "docshell/test/navigation/", + "dom/base/test/", + "dom/battery/test/", + "dom/bindings/test/", + "dom/broadcastchannel/tests/", + "dom/console/tests/", + "dom/encoding/test/", + "dom/events/test/", + "dom/file/tests/", + "dom/file/ipc/tests/", + "dom/indexedDB/test/", + "dom/ipc/tests/", + "dom/localstorage/test/", + "dom/html/test/", + "dom/html/test/forms/", + "dom/manifest/test/", + "dom/messagechannel/tests/", + "dom/midi/tests/", + "dom/network/tests/", + "dom/payments/test/", + "dom/plugins/test/mochitest/", + "dom/promise/tests/", + "dom/reporting/tests/", + "dom/security/test/cors/", + "dom/security/test/csp/", + "dom/security/test/general/", + "dom/security/test/https-only/", + "dom/security/test/mixedcontentblocker/", + "dom/security/test/referrer-policy/", + "dom/security/test/sec-fetch/", + "dom/serviceworkers/test/", + "dom/system/tests/", + "dom/url/tests/", + "dom/websocket/tests/", + "dom/workers/test/", + "dom/xhr/tests/", + "dom/xul/test/", + "editor/composer/test/", + "editor/libeditor/tests/", + "extensions/permissions/test/", + "gfx/layers/apz/test/mochitest/", + "image/test/mochitest/", + "layout/base/tests/", + "layout/forms/test/", + "layout/generic/test/", + "layout/style/test/", + "layout/svg/tests/", + "layout/xul/test/", + "parser/htmlparser/tests/mochitest/", + "testing/mochitest/tests/python/files/", + "toolkit/components/alerts/test/", + "toolkit/components/printing/tests/", + "toolkit/components/thumbnails/test/", + "toolkit/components/url-classifier/tests/mochitest/", + "toolkit/components/windowcreator/test/", + "toolkit/components/windowwatcher/test/", + "toolkit/content/tests/widgets/", + "toolkit/xre/test/", + "uriloader/exthandler/tests/mochitest/", + "widget/tests/", +]); +// Please DO NOT add more paths to the list above. + +let paths = new Set(extraXpcshellTestPaths); +for (let path of [ + ...extraBrowserTestPaths, + ...extraChromeTestPaths, + ...extraMochitestTestPaths, +]) { + if (paths.has(path) && !expectedDupePaths.has(path)) { + throw new Error(` +Unexpected directory containing different test types: ${path} + +Please do not add new paths containing different test types. Please use +separate directories. + +Having different test types in the same directory may cause ESLint rules to be +incorrectly applied. +`); + } + paths.add(path); +} + +module.exports = { + testPaths: { + browser: [...browserTestPaths, ...extraBrowserTestPaths], + chrome: [...chromeTestPaths, ...extraChromeTestPaths], + mochitest: [...mochitestTestPaths, ...extraMochitestTestPaths], + xpcshell: [...xpcshellTestPaths, ...extraXpcshellTestPaths], + }, +}; |