add custom rule to prevent test.only

This commit is contained in:
Johannes Rieken 2021-11-01 16:37:06 +01:00
parent a445016364
commit fc420cb9cb
No known key found for this signature in database
GPG key ID: 96634B5AF12F8798
3 changed files with 117 additions and 24 deletions

View file

@ -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",

View file

@ -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'
});
}
};
}
};

View file

@ -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'
});
}
};
}
};