Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

remove autofix from no-skipped-tests rule fix #258

Merged
merged 2 commits into from
Jul 31, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/rules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
||| [no-return-from-async](no-return-from-async.md) | disallow returning from an async test or hook
|:heavy_check_mark:|| [no-setup-in-describe](no-setup-in-describe.md) | disallow calling functions and dot operators directly in describe blocks
|:heavy_check_mark:|| [no-sibling-hooks](no-sibling-hooks.md) | disallow duplicate uses of a hook at the same level inside a describe
|:heavy_check_mark:|:wrench:| [no-skipped-tests](no-skipped-tests.md) | disallow skipped mocha tests
|:heavy_check_mark:|| [no-skipped-tests](no-skipped-tests.md) | disallow skipped mocha tests
||| [no-synchronous-tests](no-synchronous-tests.md) | disallow synchronous tests
|:heavy_check_mark:|| [no-top-level-hooks](no-top-level-hooks.md) | disallow top-level hooks
||:wrench:| [prefer-arrow-callback](prefer-arrow-callback.md) | prefer arrow function callbacks (mocha-aware)
Expand Down
2 changes: 0 additions & 2 deletions docs/rules/no-skipped-tests.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@
Mocha has a feature that allows you to skip tests by appending `.skip` to a test-suite or a test-case, or by prepending it with an `x` (e.g., `xdescribe(...)` instead of `describe(...)`).
Sometimes tests are skipped as part of a debugging process, and aren't intended to be committed. This rule reminds you to remove `.skip` or the `x` prefix from your tests.

**Fixable:** Problems detected by this rule are automatically fixable using the `--fix` flag on the command line.

## Rule Details

This rule looks for `describe.skip`, `it.skip`, `suite.skip`, `test.skip`, `context.skip`, `specify.skip`, `xdescribe`, `xit`, `xcontext` and `xspecify` occurrences within the source code.
Expand Down
26 changes: 2 additions & 24 deletions lib/rules/no-skipped-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,6 @@ function isCallToMochasSkipFunction(callee) {
isPropertyNamedSkip(callee.property);
}

function createSkipAutofixFunction(callee) {
const [ , endRangeOfMemberExpression ] = callee.range;
const [ , endRangeOfMemberExpressionObject ] = callee.object.range;

const rangeToRemove = [ endRangeOfMemberExpressionObject, endRangeOfMemberExpression ];

return function removeSkipProperty(fixer) {
return fixer.removeRange(rangeToRemove);
};
}

function createXAutofixFunction(callee) {
const rangeToRemove = [ callee.range[0], callee.range[0] + 1 ];

return function removeXPrefix(fixer) {
return fixer.removeRange(rangeToRemove);
};
}

function isMochaXFunction(name) {
return mochaXFunctions.indexOf(name) !== -1;
}
Expand All @@ -48,7 +29,6 @@ function isCallToMochaXFunction(callee) {

module.exports = {
meta: {
fixable: 'code',
docs: {
description: 'Disallow skipped tests'
},
Expand Down Expand Up @@ -81,14 +61,12 @@ module.exports = {
if (isCallToMochasSkipFunction(callee)) {
context.report({
node: callee.property,
message: 'Unexpected skipped mocha test.',
fix: createSkipAutofixFunction(callee)
message: 'Unexpected skipped mocha test.'
});
} else if (isCallToMochaXFunction(callee)) {
context.report({
node: callee,
message: 'Unexpected skipped mocha test.',
fix: createXAutofixFunction(callee)
message: 'Unexpected skipped mocha test.'
});
}
}
Expand Down
63 changes: 21 additions & 42 deletions test/rules/no-skipped-tests.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,102 +26,84 @@ ruleTester.run('no-skipped-tests', rules['no-skipped-tests'], {
invalid: [
{
code: 'describe.skip()',
errors: [ { message: expectedErrorMessage, column: 10, line: 1 } ],
output: 'describe()'
errors: [ { message: expectedErrorMessage, column: 10, line: 1 } ]
},
{
code: 'describe["skip"]()',
errors: [ { message: expectedErrorMessage, column: 10, line: 1 } ],
output: 'describe()'
errors: [ { message: expectedErrorMessage, column: 10, line: 1 } ]
},
{
code: 'xdescribe()',
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'describe()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
},
{
code: 'it.skip()',
errors: [ { message: expectedErrorMessage, column: 4, line: 1 } ],
output: 'it()'
errors: [ { message: expectedErrorMessage, column: 4, line: 1 } ]
},
{
code: 'it["skip"]()',
errors: [ { message: expectedErrorMessage, column: 4, line: 1 } ],
output: 'it()'
errors: [ { message: expectedErrorMessage, column: 4, line: 1 } ]
},
{
code: 'xit()',
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'it()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
},
{
code: 'suite.skip()',
errors: [ { message: expectedErrorMessage, column: 7, line: 1 } ],
output: 'suite()'
errors: [ { message: expectedErrorMessage, column: 7, line: 1 } ]
},
{
code: 'suite["skip"]()',
errors: [ { message: expectedErrorMessage, column: 7, line: 1 } ],
output: 'suite()'
errors: [ { message: expectedErrorMessage, column: 7, line: 1 } ]
},
{
code: 'test.skip()',
errors: [ { message: expectedErrorMessage, column: 6, line: 1 } ],
output: 'test()'
errors: [ { message: expectedErrorMessage, column: 6, line: 1 } ]
},
{
code: 'test["skip"]()',
errors: [ { message: expectedErrorMessage, column: 6, line: 1 } ],
output: 'test()'
errors: [ { message: expectedErrorMessage, column: 6, line: 1 } ]
},
{
code: 'context.skip()',
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ],
output: 'context()'
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ]
},
{
code: 'context["skip"]()',
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ],
output: 'context()'
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ]
},
{
code: 'xcontext()',
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'context()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
},
{
code: 'specify.skip()',
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ],
output: 'specify()'
errors: [ { message: expectedErrorMessage, column: 9, line: 1 } ]
},
{
code: 'xspecify()',
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'specify()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
},
{
code: 'custom.skip()',
settings: {
'mocha/additionalTestFunctions': [ 'custom' ]
},
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ]
},
{
code: 'custom["skip"]()',
settings: {
'mocha/additionalTestFunctions': [ 'custom' ]
},
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ]
},
{
code: 'xcustom()',
settings: {
'mocha/additionalXFunctions': [ 'xcustom' ]
},
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
},
{
code: 'custom.skip()',
Expand All @@ -130,8 +112,7 @@ ruleTester.run('no-skipped-tests', rules['no-skipped-tests'], {
additionalTestFunctions: [ 'custom' ]
}
},
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ]
},
{
code: 'custom["skip"]()',
Expand All @@ -140,8 +121,7 @@ ruleTester.run('no-skipped-tests', rules['no-skipped-tests'], {
additionalTestFunctions: [ 'custom' ]
}
},
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 8, line: 1 } ]
},
{
code: 'xcustom()',
Expand All @@ -150,8 +130,7 @@ ruleTester.run('no-skipped-tests', rules['no-skipped-tests'], {
additionalXFunctions: [ 'xcustom' ]
}
},
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ],
output: 'custom()'
errors: [ { message: expectedErrorMessage, column: 1, line: 1 } ]
}

]
Expand Down