diff --git a/.eslintrc.json b/.eslintrc.json index ffc218dfa94..fc92f326b7c 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -133,7 +133,9 @@ "restrictions": [ "vs/nls", "**/vs/base/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -171,7 +173,9 @@ "vs/nls", "**/vs/base/{common,node}/**", "**/vs/base/parts/*/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -190,7 +194,9 @@ "vs/css!./**/*", "**/vs/base/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -199,7 +205,9 @@ "vs/nls", "**/vs/base/{common,node,electron-main}/**", "**/vs/base/parts/*/{common,node,electron-main}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -256,7 +264,9 @@ "**/vs/base/{common,node}/**", "**/vs/base/parts/*/{common,node}/**", "**/vs/platform/*/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -277,7 +287,9 @@ "**/vs/base/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/base/parts/*/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/platform/*/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -287,7 +299,9 @@ "**/vs/base/{common,node,electron-main}/**", "**/vs/base/parts/*/{common,node,electron-main}/**", "**/vs/platform/*/{common,node,electron-main}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -514,7 +528,9 @@ "**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/services/*/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -529,7 +545,9 @@ "vs/workbench/contrib/files/browser/editors/fileEditorInput", "**/vs/workbench/services/**", "**/vs/workbench/test/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -593,7 +611,9 @@ "**/vs/workbench/{common,node}/**", "**/vs/workbench/api/{common,node}/**", "**/vs/workbench/services/**/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -624,7 +644,9 @@ "**/vs/workbench/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -743,7 +765,9 @@ "**/vs/workbench/api/{common,node}/**", "**/vs/workbench/services/**/{common,node}/**", "**/vs/workbench/contrib/**/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -776,7 +800,9 @@ "**/vs/workbench/api/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/services/**/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/workbench/contrib/**/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -799,7 +825,9 @@ "**/vs/base/parts/**/{common,node}/**", "**/vs/platform/**/{common,node}/**", "**/vs/code/**/{common,node}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -811,7 +839,9 @@ "**/vs/base/parts/**/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/platform/**/{common,browser,node,electron-sandbox,electron-browser}/**", "**/vs/code/**/{common,browser,node,electron-sandbox,electron-browser}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -822,7 +852,9 @@ "**/vs/base/parts/**/{common,node,electron-main}/**", "**/vs/platform/**/{common,node,electron-main}/**", "**/vs/code/**/{common,node,electron-main}/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -834,7 +866,9 @@ "**/vs/platform/**/{common,node}/**", "**/vs/workbench/**/{common,node}/**", "**/vs/server/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -905,28 +939,36 @@ "target": "**/test/smoke/**", "restrictions": [ "**/test/smoke/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { "target": "**/test/automation/**", "restrictions": [ "**/test/automation/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { "target": "**/test/integration/**", "restrictions": [ "**/test/integration/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { "target": "**/test/monaco/**", "restrictions": [ "**/test/monaco/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -944,21 +986,27 @@ "target": "**/{node,electron-browser,electron-main}/**/*.test.ts", "restrictions": [ "**/vs/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { "target": "**/{node,electron-browser,electron-main}/**/test/**", "restrictions": [ "**/vs/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { "target": "**/test/{node,electron-browser,electron-main}/**", "restrictions": [ "**/vs/**", - "@vscode/*", "@parcel/*", "*" // node modules + "@vscode/*", + "@parcel/*", + "*" // node modules ] }, { @@ -1004,6 +1052,14 @@ "jsdoc/no-types": "off" } }, + { + "files": [ + "**/*.test.ts" + ], + "rules": { + "code-no-test-only": "error" + } + }, { "files": [ "**/vscode.d.ts", diff --git a/build/lib/eslint/code-no-test-only.js b/build/lib/eslint/code-no-test-only.js new file mode 100644 index 00000000000..46d144bfcaf --- /dev/null +++ b/build/lib/eslint/code-no-test-only.js @@ -0,0 +1,17 @@ +"use strict"; +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ +module.exports = new class NoTestOnly { + create(context) { + return { + ['MemberExpression[object.name="test"][property.name="only"]']: (node) => { + return context.report({ + node, + message: 'test.only is a dev-time tool and CANNOT be pushed' + }); + } + }; + } +}; diff --git a/build/lib/eslint/code-no-test-only.ts b/build/lib/eslint/code-no-test-only.ts new file mode 100644 index 00000000000..a04483ea6ab --- /dev/null +++ b/build/lib/eslint/code-no-test-only.ts @@ -0,0 +1,20 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as eslint from 'eslint'; + +export = new class NoTestOnly implements eslint.Rule.RuleModule { + + create(context: eslint.Rule.RuleContext): eslint.Rule.RuleListener { + return { + ['MemberExpression[object.name="test"][property.name="only"]']: (node: any) => { + return context.report({ + node, + message: 'test.only is a dev-time tool and CANNOT be pushed' + }); + } + }; + } +};