Skip to content

Commit

Permalink
squash: various fixes for ESLint v9
Browse files Browse the repository at this point in the history
  • Loading branch information
targos committed May 10, 2024
1 parent 0aca65f commit d96abc4
Show file tree
Hide file tree
Showing 16 changed files with 70 additions and 38 deletions.
1 change: 1 addition & 0 deletions lib/internal/util.js
Original file line number Diff line number Diff line change
Expand Up @@ -838,6 +838,7 @@ function guessHandleType(fd) {

class WeakReference {
#weak = null;
// eslint-disable-next-line no-unused-private-class-members
#strong = null;
#refCount = 0;
constructor(object) {
Expand Down
1 change: 1 addition & 0 deletions test/parallel/test-assert.js
Original file line number Diff line number Diff line change
Expand Up @@ -981,6 +981,7 @@ for (const input of inputs) {
{

assert.throws(() => {
// eslint-disable-next-line no-constant-binary-expression
assert.ok((() => Boolean('' === false))());
}, {
message: 'The expression evaluated to a falsy value:\n\n' +
Expand Down
5 changes: 1 addition & 4 deletions test/parallel/test-eslint-alphabetize-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,7 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/alphabetize-errors');

new RuleTester({
parserOptions: { ecmaVersion: 6 },
env: { es6: true }
}).run('alphabetize-errors', rule, {
new RuleTester().run('alphabetize-errors', rule, {
valid: [
{ code: `
E('AAA', 'foo');
Expand Down
5 changes: 1 addition & 4 deletions test/parallel/test-eslint-alphabetize-primordials.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,7 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/alphabetize-primordials');

new RuleTester({
parserOptions: { ecmaVersion: 6 },
env: { es6: true }
})
new RuleTester()
.run('alphabetize-primordials', rule, {
valid: [
'new Array()',
Expand Down
4 changes: 1 addition & 3 deletions test/parallel/test-eslint-async-iife-no-unused-result.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const rule = require('../../tools/eslint-rules/async-iife-no-unused-result');
const message = 'The result of an immediately-invoked async function needs ' +
'to be used (e.g. with `.then(common.mustCall())`)';

const tester = new RuleTester({ parserOptions: { ecmaVersion: 8 } });
const tester = new RuleTester();
tester.run('async-iife-no-unused-result', rule, {
valid: [
'(() => {})()',
Expand All @@ -27,12 +27,10 @@ tester.run('async-iife-no-unused-result', rule, {
{
code: '(async () => {})()',
errors: [{ message }],
output: '(async () => {})()',
},
{
code: '(async function() {})()',
errors: [{ message }],
output: '(async function() {})()',
},
{
code: "const common = require('../common');(async () => {})()",
Expand Down
47 changes: 39 additions & 8 deletions test/parallel/test-eslint-avoid-prototype-pollution.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/avoid-prototype-pollution');

new RuleTester({
parserOptions: { ecmaVersion: 2022 },
})
new RuleTester()
.run('property-descriptor-no-prototype-pollution', rule, {
valid: [
'ObjectDefineProperties({}, {})',
Expand Down Expand Up @@ -125,19 +123,46 @@ new RuleTester({
},
{
code: 'ObjectDefineProperty({}, "key", ObjectGetOwnPropertyDescriptor({}, "key"))',
errors: [{ message: /prototype pollution/ }],
errors: [{
message: /prototype pollution/,
suggestions: [{
desc: 'Wrap the property descriptor in a null-prototype object',
output: 'ObjectDefineProperty({}, "key", { __proto__: null,...ObjectGetOwnPropertyDescriptor({}, "key") })',
}],
}],
},
{
code: 'ReflectDefineProperty({}, "key", ObjectGetOwnPropertyDescriptor({}, "key"))',
errors: [{ message: /prototype pollution/ }],
errors: [{
message: /prototype pollution/,
suggestions: [{
desc: 'Wrap the property descriptor in a null-prototype object',
output:
'ReflectDefineProperty({}, "key", { __proto__: null,...ObjectGetOwnPropertyDescriptor({}, "key") })',
}],
}],
},
{
code: 'ObjectDefineProperty({}, "key", ReflectGetOwnPropertyDescriptor({}, "key"))',
errors: [{ message: /prototype pollution/ }],
errors: [{
message: /prototype pollution/,
suggestions: [{
desc: 'Wrap the property descriptor in a null-prototype object',
output:
'ObjectDefineProperty({}, "key", { __proto__: null,...ReflectGetOwnPropertyDescriptor({}, "key") })',
}],
}],
},
{
code: 'ReflectDefineProperty({}, "key", ReflectGetOwnPropertyDescriptor({}, "key"))',
errors: [{ message: /prototype pollution/ }],
errors: [{
message: /prototype pollution/,
suggestions: [{
desc: 'Wrap the property descriptor in a null-prototype object',
output:
'ReflectDefineProperty({}, "key", { __proto__: null,...ReflectGetOwnPropertyDescriptor({}, "key") })',
}],
}],
},
{
code: 'ObjectDefineProperty({}, "key", { __proto__: Object.prototype })',
Expand Down Expand Up @@ -193,7 +218,13 @@ new RuleTester({
},
{
code: 'RegExpPrototypeTest(/some regex/, "some string")',
errors: [{ message: /looks up the "exec" property/ }],
errors: [{
message: /looks up the "exec" property/,
suggestions: [{
desc: 'Use RegexpPrototypeExec instead',
output: 'RegExpPrototypeExec(/some regex/, "some string") !== null',
}],
}],
},
{
code: 'RegExpPrototypeSymbolMatch(/some regex/, "some string")',
Expand Down
6 changes: 5 additions & 1 deletion test/parallel/test-eslint-duplicate-requires.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ common.skipIfEslintMissing();
const { RuleTester } = require('../../tools/node_modules/eslint');
const rule = require('../../tools/eslint-rules/no-duplicate-requires');

new RuleTester().run('no-duplicate-requires', rule, {
new RuleTester({
languageOptions: {
sourceType: 'script',
},
}).run('no-duplicate-requires', rule, {
valid: [
{
code: 'require("a"); require("b"); (function() { require("a"); });',
Expand Down
5 changes: 1 addition & 4 deletions test/parallel/test-eslint-no-array-destructuring.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,7 @@ const USE_OBJ_DESTRUCTURING =
const USE_ARRAY_METHODS =
'Use primordials.ArrayPrototypeSlice to avoid unsafe array iteration.';

new RuleTester({
parserOptions: { ecmaVersion: 2021 },
env: { es6: true }
})
new RuleTester()
.run('no-array-destructuring', rule, {
valid: [
'const first = [1, 2, 3][0];',
Expand Down
4 changes: 1 addition & 3 deletions test/parallel/test-eslint-prefer-common-mustsucceed.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,7 @@ const msg1 = 'Please use common.mustSucceed instead of ' +
const msg2 = 'Please use common.mustSucceed instead of ' +
'common.mustCall with assert.ifError.';

new RuleTester({
parserOptions: { ecmaVersion: 2015 }
}).run('prefer-common-mustsucceed', rule, {
new RuleTester().run('prefer-common-mustsucceed', rule, {
valid: [
'foo((err) => assert.ifError(err))',
'foo(function(err) { assert.ifError(err) })',
Expand Down
5 changes: 3 additions & 2 deletions test/parallel/test-eslint-prefer-primordials.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@ const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/prefer-primordials');

new RuleTester({
parserOptions: { ecmaVersion: 6 },
env: { es6: true }
languageOptions: {
sourceType: 'script',
},
})
.run('prefer-primordials', rule, {
valid: [
Expand Down
4 changes: 1 addition & 3 deletions test/parallel/test-eslint-prefer-proto.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,7 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/prefer-proto');

new RuleTester({
parserOptions: { ecmaVersion: 2022 }
}).run('prefer-common-mustsucceed', rule, {
new RuleTester().run('prefer-common-mustsucceed', rule, {
valid: [
'({ __proto__: null })',
'const x = { __proto__: null };',
Expand Down
2 changes: 1 addition & 1 deletion test/parallel/test-eslint-prefer-util-format-errors.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/prefer-util-format-errors');

new RuleTester({ parserOptions: { ecmaVersion: 6 } })
new RuleTester()
.run('prefer-util-format-errors', rule, {
valid: [
'E(\'ABC\', \'abc\');',
Expand Down
6 changes: 5 additions & 1 deletion test/parallel/test-eslint-require-common-first.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/require-common-first');

new RuleTester().run('require-common-first', rule, {
new RuleTester({
languageOptions: {
sourceType: 'script',
},
}).run('require-common-first', rule, {
valid: [
{
code: 'require("common")\n' +
Expand Down
6 changes: 5 additions & 1 deletion test/parallel/test-eslint-required-modules.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,11 @@ common.skipIfEslintMissing();
const RuleTester = require('../../tools/node_modules/eslint').RuleTester;
const rule = require('../../tools/eslint-rules/required-modules');

new RuleTester().run('required-modules', rule, {
new RuleTester({
languageOptions: {
sourceType: 'script',
},
}).run('required-modules', rule, {
valid: [
{
code: 'require("common")',
Expand Down
1 change: 1 addition & 0 deletions test/parallel/test-runner-mocking.js
Original file line number Diff line number Diff line change
Expand Up @@ -559,6 +559,7 @@ test('mocks a constructor', (t) => {
}

class MockClazz {
// eslint-disable-next-line no-unused-private-class-members
#privateValue;

constructor(z) {
Expand Down
6 changes: 3 additions & 3 deletions tools/eslint-rules/avoid-prototype-pollution.js
Original file line number Diff line number Diff line change
Expand Up @@ -148,9 +148,9 @@ module.exports = {
suggest: [{
desc: 'Use RegexpPrototypeExec instead',
fix(fixer) {
const testRange = { ...node.range };
testRange.start = testRange.start + 'RegexpPrototype'.length;
testRange.end = testRange.start + 'Test'.length;
const testRange = [ ...node.range ];
testRange[0] = testRange[0] + 'RegexpPrototype'.length;
testRange[1] = testRange[0] + 'Test'.length;
return [
fixer.replaceTextRange(testRange, 'Exec'),
fixer.insertTextAfter(node, ' !== null'),
Expand Down

0 comments on commit d96abc4

Please sign in to comment.