Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
tools: add eslint rule to only pass through 'test' to debuglog
This makes sure all usages of `util.debuglog()` must contain the
string 'test' as argument.
  • Loading branch information
BridgeAR committed May 9, 2020
commit 9b74eca3f4020153daf1f47c2873f73c79ce5778
36 changes: 36 additions & 0 deletions test/.eslintrc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,42 @@ rules:
prefer-const: error
symbol-description: off

no-restricted-syntax:
# Config copied from .eslintrc.js
- error
- selector: "CallExpression:matches([callee.name='deepStrictEqual'], [callee.property.name='deepStrictEqual'])[arguments.2.type='Literal']"
message: "Do not use a literal for the third argument of assert.deepStrictEqual()"
- selector: "CallExpression:matches([callee.name='doesNotThrow'], [callee.property.name='doesNotThrow'])"
message: "Do not use `assert.doesNotThrow()`. Write the code without the wrapper and add a comment instead."
- selector: "CallExpression:matches([callee.name='doesNotReject'], [callee.property.name='doesNotReject'])"
message: "Do not use `assert.doesNotReject()`. Write the code without the wrapper and add a comment instead."
- selector: "CallExpression:matches([callee.name='rejects'], [callee.property.name='rejects'])[arguments.length<2]"
message: "`assert.rejects()` must be invoked with at least two arguments."
- selector: "CallExpression[callee.property.name='strictEqual'][arguments.2.type='Literal']"
message: "Do not use a literal for the third argument of assert.strictEqual()"
- selector: "CallExpression:matches([callee.name='throws'], [callee.property.name='throws'])[arguments.1.type='Literal']:not([arguments.1.regex])"
message: "Use an object as second argument of `assert.throws()`."
- selector: "CallExpression:matches([callee.name='throws'], [callee.property.name='throws'])[arguments.length<2]"
message: "`assert.throws()` must be invoked with at least two arguments."
- selector: "CallExpression[callee.name='setTimeout'][arguments.length<2]"
message: "`setTimeout()` must be invoked with at least two arguments."
- selector: "CallExpression[callee.name='setInterval'][arguments.length<2]"
message: "`setInterval()` must be invoked with at least two arguments."
- selector: 'ThrowStatement > CallExpression[callee.name=/Error$/]'
message: "Use `new` keyword when throwing an `Error`."
- selector: "CallExpression:matches([callee.name='notDeepStrictEqual'], [callee.property.name='notDeepStrictEqual'])[arguments.0.type='Literal']:not([arguments.1.type='Literal']):not([arguments.1.type='ObjectExpression']):not([arguments.1.type='ArrayExpression']):not([arguments.1.type='UnaryExpression'])"
message: "The first argument should be the `actual`, not the `expected` value."
- selector: "CallExpression:matches([callee.name='notStrictEqual'], [callee.property.name='notStrictEqual'])[arguments.0.type='Literal']:not([arguments.1.type='Literal']):not([arguments.1.type='ObjectExpression']):not([arguments.1.type='ArrayExpression']):not([arguments.1.type='UnaryExpression'])"
message: "The first argument should be the `actual`, not the `expected` value."
- selector: "CallExpression:matches([callee.name='deepStrictEqual'], [callee.property.name='deepStrictEqual'])[arguments.0.type='Literal']:not([arguments.1.type='Literal']):not([arguments.1.type='ObjectExpression']):not([arguments.1.type='ArrayExpression']):not([arguments.1.type='UnaryExpression'])"
message: "The first argument should be the `actual`, not the `expected` value."
- selector: "CallExpression:matches([callee.name='strictEqual'], [callee.property.name='strictEqual'])[arguments.0.type='Literal']:not([arguments.1.type='Literal']):not([arguments.1.type='ObjectExpression']):not([arguments.1.type='ArrayExpression']):not([arguments.1.type='UnaryExpression'])"
message: "The first argument should be the `actual`, not the `expected` value."
- selector: "CallExpression[callee.name='isNaN']"
message: "Use Number.isNaN() instead of the global isNaN() function."
- selector: "CallExpression:matches([callee.name='debuglog'], [callee.property.name='debuglog']):not([arguments.0.value='test'])"
message: "Only use 'test' as debuglog value inside of the tests folder."
Comment thread
BridgeAR marked this conversation as resolved.
Outdated

# Custom rules in tools/eslint-rules
node-core/prefer-assert-iferror: error
node-core/prefer-assert-methods: error
Expand Down
1 change: 1 addition & 0 deletions test/sequential/test-util-debug.js
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ function child(section) {
Object.defineProperty(process.stderr, 'hasColors', {
value: tty.WriteStream.prototype.hasColors
});
// eslint-disable-next-line no-restricted-syntax
const debug = util.debuglog(section);
debug('this', { is: 'a' }, /debugging/);
debug('num=%d str=%s obj=%j', 1, 'a', { foo: 'bar' });
Expand Down