Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: eslint-community/eslint-plugin-n
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 16.6.1
Choose a base ref
...
head repository: eslint-community/eslint-plugin-n
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 16.6.2
Choose a head ref
  • 5 commits
  • 35 files changed
  • 1 contributor

Commits on Jan 3, 2024

  1. chore: move rule tests parserOptions to ruleTester (#157)

    it can help migrating to the eslint v9 RuleTester
    aladdin-add authored Jan 3, 2024
    Copy the full SHA
    ad8f4f4 View commit details

Commits on Jan 4, 2024

  1. chore: add non-rule-change issue template (#159)

    There is already an issue template for rule-related changes,
    but some changes do not apply to it. Therefore, this pull request adds a new one.
    aladdin-add authored Jan 4, 2024
    Copy the full SHA
    c191101 View commit details

Commits on Jan 9, 2024

  1. Copy the full SHA
    5fc2198 View commit details
  2. Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    9ddd351 View commit details
  3. Release 16.6.2

    aladdin-add committed Jan 9, 2024

    Verified

    This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
    Copy the full SHA
    ec5badb View commit details
Showing with 408 additions and 712 deletions.
  1. +47 −0 .github/ISSUE_TEMPLATE/non-rule-change.yml
  2. +3 −3 lib/rules/no-callback-literal.js
  3. +3 −3 package.json
  4. +2 −12 tests/lib/rules/callback-return.js
  5. +17 −60 tests/lib/rules/exports-style.js
  6. +0 −4 tests/lib/rules/file-extension-in-import.js
  7. +1 −3 tests/lib/rules/global-require.js
  8. +16 −8 tests/lib/rules/handle-callback-err.js
  9. +6 −1 tests/lib/rules/no-callback-literal.js
  10. +1 −114 tests/lib/rules/no-deprecated-api.js
  11. +2 −4 tests/lib/rules/no-extraneous-import.js
  12. +2 −5 tests/lib/rules/no-hide-core-modules.js
  13. +4 −21 tests/lib/rules/no-missing-import.js
  14. +2 −67 tests/lib/rules/no-missing-require.js
  15. +2 −1 tests/lib/rules/no-mixed-requires.js
  16. +1 −1 tests/lib/rules/no-new-require.js
  17. +3 −7 tests/lib/rules/no-path-concat.js
  18. +1 −1 tests/lib/rules/no-process-env.js
  19. +2 −1 tests/lib/rules/no-process-exit.js
  20. +2 −4 tests/lib/rules/no-restricted-import.js
  21. +1 −1 tests/lib/rules/no-sync.js
  22. +274 −260 tests/lib/rules/no-unpublished-bin.js
  23. +1 −54 tests/lib/rules/no-unpublished-require.js
  24. +1 −1 tests/lib/rules/no-unsupported-features.js
  25. +2 −12 tests/lib/rules/no-unsupported-features/node-builtins.js
  26. +1 −7 tests/lib/rules/prefer-global/buffer.js
  27. +1 −7 tests/lib/rules/prefer-global/console.js
  28. +1 −7 tests/lib/rules/prefer-global/process.js
  29. +1 −7 tests/lib/rules/prefer-global/text-decoder.js
  30. +1 −7 tests/lib/rules/prefer-global/text-encoder.js
  31. +1 −7 tests/lib/rules/prefer-global/url-search-params.js
  32. +1 −7 tests/lib/rules/prefer-global/url.js
  33. +2 −7 tests/lib/rules/prefer-promises/dns.js
  34. +2 −7 tests/lib/rules/prefer-promises/fs.js
  35. +1 −1 tests/lib/rules/shebang.js
47 changes: 47 additions & 0 deletions .github/ISSUE_TEMPLATE/non-rule-change.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
name: "\U0001F680 Request a change (not rule-related)"
description: "Request a change that is not a bug fix, rule change, or new rule"
title: "Change Request: (fill in)"
labels:
- enhancement
- core
body:
- type: markdown
attributes:
value: By opening an issue, you agree to abide by the [Open JS Foundation Code of Conduct](https://eslint.org/conduct).
- type: input
attributes:
label: eslint-plugin-n version
description: |
What version of eslint-plugin-n are you currently using?
placeholder: |
e.g. v16.0.0
validations:
required: true
- type: textarea
attributes:
label: What problem do you want to solve?
description: |
Please explain your use case in as much detail as possible.
placeholder: |
ESLint currently...
validations:
required: true
- type: textarea
attributes:
label: What do you think is the correct solution?
description: |
Please explain how you'd like to change to address the problem.
placeholder: |
I'd like to...
validations:
required: true
- type: checkboxes
attributes:
label: Participation
options:
- label: I am willing to submit a pull request for this change.
required: false
- type: textarea
attributes:
label: Additional comments
description: Is there anything else that's important for the team to know?
6 changes: 3 additions & 3 deletions lib/rules/no-callback-literal.js
Original file line number Diff line number Diff line change
@@ -62,7 +62,8 @@ function couldBeError(node) {
case "TaggedTemplateExpression":
case "YieldExpression":
return true // possibly an error object.

case "Literal":
return node.value == null
case "AssignmentExpression":
return couldBeError(node.right)

@@ -76,8 +77,7 @@ function couldBeError(node) {

case "ConditionalExpression":
return couldBeError(node.consequent) || couldBeError(node.alternate)

default:
return node.value === null
return true // assuming unknown nodes can be error objects.
}
}
6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "eslint-plugin-n",
"version": "16.6.1",
"version": "16.6.2",
"description": "Additional ESLint's rules for Node.js",
"engines": {
"node": ">=16.0.0"
@@ -31,10 +31,10 @@
"@types/eslint": "^8.44.6",
"@typescript-eslint/parser": "^5.60.0",
"esbuild": "^0.18.7",
"eslint": "^8.53.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^8.8.0",
"eslint-doc-generator": "^1.6.1",
"eslint-plugin-eslint-plugin": "^5.1.0",
"eslint-plugin-eslint-plugin": "^5.2.1",
"eslint-plugin-n": "file:.",
"fast-glob": "^3.2.12",
"husky": "^8.0.3",
14 changes: 2 additions & 12 deletions tests/lib/rules/callback-return.js
Original file line number Diff line number Diff line change
@@ -6,8 +6,9 @@

const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/callback-return")
const ruleTester = new RuleTester({ env: { node: true, es6: true } })

new RuleTester().run("callback-return", rule, {
ruleTester.run("callback-return", rule, {
valid: [
// callbacks inside of functions should return
"function a(err) { if (err) return callback (err); }",
@@ -40,25 +41,20 @@ new RuleTester().run("callback-return", rule, {
// arrow functions
{
code: "var x = err => { if (err) { callback(); return; } }",
parserOptions: { ecmaVersion: 6 },
},
{
code: "var x = err => callback(err)",
parserOptions: { ecmaVersion: 6 },
},
{
code: "var x = err => { setTimeout( () => { callback(); }); }",
parserOptions: { ecmaVersion: 6 },
},

// classes
{
code: "class x { horse() { callback(); } } ",
parserOptions: { ecmaVersion: 6 },
},
{
code: "class x { horse() { if (err) { return callback(); } callback(); } } ",
parserOptions: { ecmaVersion: 6 },
},

// options (only warns with the correct callback name)
@@ -188,7 +184,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "var x = (err) => { if (err) { callback (err); } }",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
@@ -200,7 +195,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "var x = { x(err) { if (err) { callback (err); } } }",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
@@ -223,7 +217,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "var x = { x(err) { if (err) { callback && callback (err); } } }",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
@@ -268,7 +261,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "var a = (err) => { callback (err); callback(); }",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
@@ -302,7 +294,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "class x { horse() { if (err) { callback(); } callback(); } } ",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
@@ -344,7 +335,6 @@ new RuleTester().run("callback-return", rule, {
},
{
code: "() => { if (x) { callback(); } }",
parserOptions: { ecmaVersion: 6 },
errors: [
{
messageId: "missingReturn",
77 changes: 17 additions & 60 deletions tests/lib/rules/exports-style.js
Original file line number Diff line number Diff line change
@@ -7,93 +7,90 @@
const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/exports-style")

new RuleTester().run("exports-style", rule, {
new RuleTester({
env: { node: true, es6: true },
parserOptions: { ecmaVersion: 11 },
}).run("exports-style", rule, {
valid: [
{
code: "module.exports = {foo: 1}",
globals: { module: false, exports: true },
},
{
code: "module.exports = {foo: 1}",
options: ["module.exports"],
globals: { module: false, exports: true },
},
{
code: "exports.foo = 1",
options: ["exports"],
globals: { module: false, exports: true },
},
{
code: "exports = module.exports = {foo: 1}",
options: ["module.exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},
{
code: "module.exports = exports = {foo: 1}",
options: ["module.exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},
{
code: "exports = module.exports = {foo: 1}",
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},
{
code: "module.exports = exports = {foo: 1}",
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},
{
code: "exports = module.exports = {foo: 1}; exports.bar = 2",
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},
{
code: "module.exports = exports = {foo: 1}; exports.bar = 2",
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
},

// allow accesses of `modules` except `module.exports`
{
code: "module = {}; module.foo = 1",
options: ["exports"],
globals: { module: false, exports: true },
},

// Ignores if it's not defined.
{ code: "exports.foo = 1", options: ["module.exports"] },
{ code: "module.exports = {foo: 1}", options: ["exports"] },
{
code: "exports.foo = 1",
options: ["module.exports"],
globals: { exports: "off" },
},
{
code: "module.exports = {foo: 1}",
options: ["exports"],
globals: { module: "off" },
},
],
invalid: [
{
code: "exports = {foo: 1}",
output: null,
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
},
{
code: "exports.foo = 1",
output: null,
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
},
{
code: "module.exports = exports = {foo: 1}",
output: null,
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
},
{
code: "exports = module.exports = {foo: 1}",
output: null,
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
@@ -103,7 +100,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports = {foo: 1}",
output: null,
options: ["module.exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
@@ -112,7 +108,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports.foo = 1",
output: null,
options: ["module.exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
@@ -121,7 +116,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = exports = {foo: 1}",
output: null,
options: ["module.exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
@@ -130,7 +124,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports = module.exports = {foo: 1}",
output: null,
options: ["module.exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'exports'. Use 'module.exports' instead.",
],
@@ -140,7 +133,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports = {foo: 1}",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected assignment to 'exports'. Don't modify 'exports' itself.",
],
@@ -149,7 +141,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = {foo: 1}",
output: "exports.foo = 1;",
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -158,7 +149,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports.foo = 1",
output: "exports.foo = 1",
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -167,7 +157,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { a: 1 }",
output: "exports.a = 1;",
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -176,18 +165,14 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { a: 1, b: 2 }",
output: "exports.a = 1;\n\nexports.b = 2;",
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
},
{
code:
"module.exports = { // before a\na: 1, // between a and b\nb: 2 // after b\n}",
output:
"// before a\nexports.a = 1;\n\n// between a and b\nexports.b = 2;\n// after b",
code: "module.exports = { // before a\na: 1, // between a and b\nb: 2 // after b\n}",
output: "// before a\nexports.a = 1;\n\n// between a and b\nexports.b = 2;\n// after b",
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -196,17 +181,14 @@ new RuleTester().run("exports-style", rule, {
code: "foo(module.exports = {foo: 1})",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
},
{
code:
"if(foo){ module.exports = { foo: 1};} else { module.exports = {foo: 2};}",
code: "if(foo){ module.exports = { foo: 1};} else { module.exports = {foo: 2};}",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
"Unexpected access to 'module.exports'. Use 'exports' instead.",
@@ -216,7 +198,6 @@ new RuleTester().run("exports-style", rule, {
code: "function bar() { module.exports = { foo: 1 }; }",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -225,7 +206,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { get a() {} }",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -234,7 +214,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { set a(a) {} }",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -243,8 +222,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { a }",
output: "exports.a = a;",
options: ["exports"],
parserOptions: { ecmaVersion: 6 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -253,8 +230,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { ...a }",
output: null,
options: ["exports"],
parserOptions: { ecmaVersion: 9 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -263,8 +238,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { ['a' + 'b']: 1 }",
output: "exports['a' + 'b'] = 1;",
options: ["exports"],
parserOptions: { ecmaVersion: 6 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -273,8 +246,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { 'foo': 1 }",
output: "exports['foo'] = 1;",
options: ["exports"],
parserOptions: { ecmaVersion: 6 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -283,8 +254,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { foo(a) {} }",
output: "exports.foo = function (a) {};",
options: ["exports"],
parserOptions: { ecmaVersion: 8 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -293,8 +262,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { *foo(a) {} }",
output: "exports.foo = function* (a) {};",
options: ["exports"],
parserOptions: { ecmaVersion: 6 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -303,8 +270,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = { async foo(a) {} }",
output: "exports.foo = async function (a) {};",
options: ["exports"],
parserOptions: { ecmaVersion: 8 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -313,8 +278,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports.foo()",
output: "exports.foo()",
options: ["exports"],
parserOptions: { ecmaVersion: 8 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
],
@@ -323,8 +286,6 @@ new RuleTester().run("exports-style", rule, {
code: "a = module.exports.foo + module.exports['bar']",
output: "a = exports.foo + exports['bar']",
options: ["exports"],
parserOptions: { ecmaVersion: 8 },
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
"Unexpected access to 'module.exports'. Use 'exports' instead.",
@@ -334,7 +295,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = exports = {foo: 1}",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected access to 'module.exports'. Use 'exports' instead.",
"Unexpected assignment to 'exports'. Don't modify 'exports' itself.",
@@ -344,7 +304,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports = module.exports = {foo: 1}",
output: null,
options: ["exports"],
globals: { module: false, exports: true },
errors: [
"Unexpected assignment to 'exports'. Don't modify 'exports' itself.",
"Unexpected access to 'module.exports'. Use 'exports' instead.",
@@ -354,7 +313,6 @@ new RuleTester().run("exports-style", rule, {
code: "module.exports = exports = {foo: 1}; exports = obj",
output: null,
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
errors: [
"Unexpected assignment to 'exports'. Don't modify 'exports' itself.",
],
@@ -363,7 +321,6 @@ new RuleTester().run("exports-style", rule, {
code: "exports = module.exports = {foo: 1}; exports = obj",
output: null,
options: ["exports", { allowBatchAssign: true }],
globals: { module: false, exports: true },
errors: [
"Unexpected assignment to 'exports'. Don't modify 'exports' itself.",
],
4 changes: 0 additions & 4 deletions tests/lib/rules/file-extension-in-import.js
Original file line number Diff line number Diff line change
@@ -176,25 +176,21 @@ new RuleTester({
{
filename: fixture("test.tsx"),
code: "require('./d.js');",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
{
filename: fixture("test.tsx"),
code: "require('./e.js');",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
{
filename: fixture("test.ts"),
code: "require('./d.js');",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
{
filename: fixture("test.ts"),
code: "require('./e.js');",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
],
4 changes: 1 addition & 3 deletions tests/lib/rules/global-require.js
Original file line number Diff line number Diff line change
@@ -9,7 +9,7 @@ const rule = require("../../../lib/rules/global-require")

const ERROR = { messageId: "unexpected", type: "CallExpression" }

new RuleTester().run("global-require", rule, {
new RuleTester({ env: { node: true, es6: true } }).run("global-require", rule, {
valid: [
"var x = require('y');",
"if (x) { x.require('y'); }",
@@ -51,12 +51,10 @@ new RuleTester().run("global-require", rule, {
// non-block statements
{
code: "var getModule = x => require(x);",
parserOptions: { ecmaVersion: 6 },
errors: [ERROR],
},
{
code: "var x = (x => require(x))('weird')",
parserOptions: { ecmaVersion: 6 },
errors: [ERROR],
},
{
24 changes: 16 additions & 8 deletions tests/lib/rules/handle-callback-err.js
Original file line number Diff line number Diff line change
@@ -6,6 +6,7 @@

const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/handle-callback-err")
const ruleTester = new RuleTester({ env: { node: true, es6: true } })

const EXPECTED_DECL_ERROR = {
messageId: "expected",
@@ -16,7 +17,7 @@ const EXPECTED_FUNC_ERROR = {
type: "FunctionExpression",
}

new RuleTester().run("handle-callback-err", rule, {
ruleTester.run("handle-callback-err", rule, {
valid: [
"function test(error) {}",
"function test(err) {console.log(err);}",
@@ -34,11 +35,14 @@ new RuleTester().run("handle-callback-err", rule, {
"function userHandler(err) {process.nextTick(function() {if (err) {}})}",
"function help() { function userHandler(err) {function tester() { err; process.nextTick(function() { err; }); } } }",
"function help(done) { var err = new Error('error'); done(); }",
{ code: "var test = err => err;", parserOptions: { ecmaVersion: 6 } },
{ code: "var test = err => !err;", parserOptions: { ecmaVersion: 6 } },
{
code: "var test = err => err;",
},
{
code: "var test = err => !err;",
},
{
code: "var test = err => err.message;",
parserOptions: { ecmaVersion: 6 },
},
{
code: "var test = function(error) {if(error){/* do nothing */}};",
@@ -47,7 +51,6 @@ new RuleTester().run("handle-callback-err", rule, {
{
code: "var test = (error) => {if(error){/* do nothing */}};",
options: ["error"],
parserOptions: { ecmaVersion: 6 },
},
{
code: "var test = function(error) {if(! error){doSomethingHere();}};",
@@ -76,7 +79,10 @@ new RuleTester().run("handle-callback-err", rule, {
],
invalid: [
{ code: "function test(err) {}", errors: [EXPECTED_DECL_ERROR] },
{ code: "function test(err, data) {}", errors: [EXPECTED_DECL_ERROR] },
{
code: "function test(err, data) {}",
errors: [EXPECTED_DECL_ERROR],
},
{
code: "function test(err) {errorLookingWord();}",
errors: [EXPECTED_DECL_ERROR],
@@ -91,10 +97,12 @@ new RuleTester().run("handle-callback-err", rule, {
},
{
code: "var test = (err) => {};",
parserOptions: { ecmaVersion: 6 },
errors: [{ messageId: "expected" }],
},
{ code: "var test = function(err) {};", errors: [EXPECTED_FUNC_ERROR] },
{
code: "var test = function(err) {};",
errors: [EXPECTED_FUNC_ERROR],
},
{
code: "var test = function test(err, data) {};",
errors: [EXPECTED_FUNC_ERROR],
7 changes: 6 additions & 1 deletion tests/lib/rules/no-callback-literal.js
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-callback-literal")

const ruleTester = new RuleTester()
const ruleTester = new RuleTester({ env: { node: true, es6: true } })
ruleTester.run("no-callback-literal", rule, {
valid: [
// random stuff
@@ -40,6 +40,11 @@ ruleTester.run("no-callback-literal", rule, {
"cb(null)",
'cb(undefined, "super")',
'cb(null, "super")',
// https://github.com/eslint-community/eslint-plugin-n/issues/162
{
code: "cb(e as Error)",
parser: require.resolve("@typescript-eslint/parser"),
},
],

invalid: [
115 changes: 1 addition & 114 deletions tests/lib/rules/no-deprecated-api.js

Large diffs are not rendered by default.

6 changes: 2 additions & 4 deletions tests/lib/rules/no-extraneous-import.js
Original file line number Diff line number Diff line change
@@ -31,10 +31,8 @@ function fixture(name) {
}

const ruleTester = new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
})
ruleTester.run("no-extraneous-import", rule, {
valid: [
7 changes: 2 additions & 5 deletions tests/lib/rules/no-hide-core-modules.js
Original file line number Diff line number Diff line change
@@ -39,11 +39,8 @@ const INDIRECT_THIRD_PERTY = path.resolve(
//------------------------------------------------------------------------------

const tester = new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
globals: { require: false },
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
})

tester.run("no-hide-core-modules", rule, {
25 changes: 4 additions & 21 deletions tests/lib/rules/no-missing-import.js
Original file line number Diff line number Diff line change
@@ -40,9 +40,12 @@ function fixture(name) {

const ruleTester = new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
env: {
node: true,
es6: true,
},
})
ruleTester.run("no-missing-import", rule, {
valid: [
@@ -142,7 +145,6 @@ ruleTester.run("no-missing-import", rule, {
{
filename: fixture("test.js"),
code: "import a from './fixtures/no-missing/a.js';",
env: { node: true },
settings: {
node: { resolvePaths: [path.resolve(__dirname, "../../")] },
},
@@ -151,37 +153,32 @@ ruleTester.run("no-missing-import", rule, {
filename: fixture("test.js"),
code: "import a from './fixtures/no-missing/a.js';",
options: [{ resolvePaths: ["tests"] }],
env: { node: true },
},

// typescriptExtensionMap
{
// name: "settings.node - [] as react - d.ts as d.js",
filename: fixture("test.tsx"),
code: "import d from './d.js';",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
{
// name: "settings.node - [] as react - e.tsx as e.js",
filename: fixture("test.tsx"),
code: "import e from './e.js';",
env: { node: true },
settings: { node: { typescriptExtensionMap: tsReactExtensionMap } },
},
{
// name: "options[0] - [] as react - d.ts as d.js",
filename: fixture("test.tsx"),
code: "import d from './d.js';",
options: [{ typescriptExtensionMap: tsReactExtensionMap }],
env: { node: true },
},
{
// name: "options[0] - [] as react - e.tsx as e.js",
filename: fixture("test.tsx"),
code: "import e from './e.js';",
options: [{ typescriptExtensionMap: tsReactExtensionMap }],
env: { node: true },
},

// tsx mapping by name
@@ -190,28 +187,24 @@ ruleTester.run("no-missing-import", rule, {
filename: fixture("test.tsx"),
code: "import e from './e.jsx';",
options: [{ typescriptExtensionMap: "preserve" }],
env: { node: true },
},
{
// name: "options[0] - react - e.tsx as e.js",
filename: fixture("test.tsx"),
code: "import e from './e.js';",
options: [{ typescriptExtensionMap: "react" }],
env: { node: true },
},
{
// name: "settings.node - preserve - e.tsx as e.jsx",
filename: fixture("test.tsx"),
code: "import e from './e.jsx';",
settings: { node: { typescriptExtensionMap: "preserve" } },
env: { node: true },
},
{
// name: "settings.node - react - e.tsx as e.js",
filename: fixture("test.tsx"),
code: "import e from './e.js';",
settings: { node: { typescriptExtensionMap: "react" } },
env: { node: true },
},

// explicit tsx from config
@@ -220,14 +213,12 @@ ruleTester.run("no-missing-import", rule, {
filename: fixture("ts-react/test.tsx"),
code: "import e from './e.jsx';",
options: [{ tsconfigPath: fixture("ts-preserve/tsconfig.json") }],
env: { node: true },
},
{
// name: "options[0] - react - e.tsx as e.js",
filename: fixture("ts-preserve/test.tsx"),
code: "import e from './e.js';",
options: [{ tsconfigPath: fixture("ts-react/tsconfig.json") }],
env: { node: true },
},
{
// name: "settings.node - preserve - e.tsx as e.jsx",
@@ -236,7 +227,6 @@ ruleTester.run("no-missing-import", rule, {
settings: {
node: { tsconfigPath: fixture("ts-preserve/tsconfig.json") },
},
env: { node: true },
},
{
// name: "settings.node - react - e.tsx as e.js",
@@ -245,45 +235,38 @@ ruleTester.run("no-missing-import", rule, {
settings: {
node: { tsconfigPath: fixture("ts-react/tsconfig.json") },
},
env: { node: true },
},

// implicit tsx from config
{
// name: "tsconfig - jsx: react - e.tsx as e.js",
filename: fixture("ts-react/test.tsx"),
code: "import e from './e.js';",
env: { node: true },
},
{
// name: "tsconfig - jsx: react - d.ts as d.js",
filename: fixture("ts-react/test.ts"),
code: "import d from './d.js';",
env: { node: true },
},
{
// name: "tsconfig - jsx: preserve - e.tsx as e.jsx",
filename: fixture("ts-preserve/test.tsx"),
code: "import e from './e.jsx';",
env: { node: true },
},
{
// name: "tsconfig - jsx: preserve - d.ts as d.js",
filename: fixture("ts-preserve/test.ts"),
code: "import d from './d.js';",
env: { node: true },
},
{
// name: "tsconfig - extends: base (jsx: react) - e.tsx as e.js",
filename: fixture("ts-extends/test.tsx"),
code: "import e from './e.js';",
env: { node: true },
},
{
// name: "tsconfig - extends: base (jsx: react) - d.ts as d.js",
filename: fixture("ts-extends/test.ts"),
code: "import d from './d.js';",
env: { node: true },
},

// import()
69 changes: 2 additions & 67 deletions tests/lib/rules/no-missing-require.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion tests/lib/rules/no-mixed-requires.js
Original file line number Diff line number Diff line change
@@ -6,8 +6,9 @@

const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-mixed-requires")
const ruleTester = new RuleTester({ env: { node: true, es6: true } })

new RuleTester().run("no-mixed-requires", rule, {
ruleTester.run("no-mixed-requires", rule, {
valid: [
{ code: "var a, b = 42, c = doStuff()", options: [false] },
{
2 changes: 1 addition & 1 deletion tests/lib/rules/no-new-require.js
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-new-require")

new RuleTester().run("no-new-require", rule, {
new RuleTester({ env: { node: true, es6: true } }).run("no-new-require", rule, {
valid: [
"var appHeader = require('app-header')",
"var AppHeader = new (require('app-header'))",
10 changes: 3 additions & 7 deletions tests/lib/rules/no-path-concat.js
Original file line number Diff line number Diff line change
@@ -9,13 +9,9 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-path-concat")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
__dirname: "readonly",
__filename: "readonly",
require: "readonly",
env: {
node: true,
es6: true,
},
}).run("no-path-concat", rule, {
valid: [
2 changes: 1 addition & 1 deletion tests/lib/rules/no-process-env.js
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-process-env")

new RuleTester().run("no-process-env", rule, {
new RuleTester({ env: { node: true, es6: true } }).run("no-process-env", rule, {
valid: [
"Process.env",
"process[env]",
3 changes: 2 additions & 1 deletion tests/lib/rules/no-process-exit.js
Original file line number Diff line number Diff line change
@@ -6,8 +6,9 @@

const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-process-exit")
const ruleTester = new RuleTester({ env: { node: true, es6: true } })

new RuleTester().run("no-process-exit", rule, {
ruleTester.run("no-process-exit", rule, {
valid: ["Process.exit()", "var exit = process.exit;", "f(process.exit)"],

invalid: [
6 changes: 2 additions & 4 deletions tests/lib/rules/no-restricted-import.js
Original file line number Diff line number Diff line change
@@ -22,10 +22,8 @@ if (!DynamicImportSupported) {
}

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
}).run("no-restricted-import", rule, {
valid: [
{ code: 'import "fs"', options: [["crypto"]] },
2 changes: 1 addition & 1 deletion tests/lib/rules/no-sync.js
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@
const RuleTester = require("eslint").RuleTester
const rule = require("../../../lib/rules/no-sync")

new RuleTester().run("no-sync", rule, {
new RuleTester({ env: { node: true, es6: true } }).run("no-sync", rule, {
valid: [
"var foo = fs.foo.foo();",
{
534 changes: 274 additions & 260 deletions tests/lib/rules/no-unpublished-bin.js

Large diffs are not rendered by default.

55 changes: 1 addition & 54 deletions tests/lib/rules/no-unpublished-require.js
Original file line number Diff line number Diff line change
@@ -17,100 +17,82 @@ function fixture(name) {
return path.resolve(__dirname, "../../fixtures/no-unpublished", name)
}

const ruleTester = new RuleTester()
const ruleTester = new RuleTester({ env: { node: true, es6: true } })
ruleTester.run("no-unpublished-require", rule, {
valid: [
{
filename: fixture("1/test.js"),
code: "require('fs');",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require('aaa');",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require('aaa/a/b/c');",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require('./a');",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require('./a.js');",
env: { node: true },
},
{
filename: fixture("2/ignore1.js"),
code: "require('./test');",
env: { node: true },
},
{
filename: fixture("2/ignore1.js"),
code: "require('bbb');",
env: { node: true },
},
{
filename: fixture("2/ignore1.js"),
code: "require('bbb/a/b/c');",
env: { node: true },
},
{
filename: fixture("2/ignore1.js"),
code: "require('./ignore2');",
env: { node: true },
},
{
filename: fixture("3/test.js"),
code: "require('./pub/a');",
env: { node: true },
},
{
filename: fixture("3/test.js"),
code: "require('./test2');",
env: { node: true },
},
{
filename: fixture("3/test.js"),
code: "require('aaa');",
env: { node: true },
},
{
filename: fixture("3/test.js"),
code: "require('bbb');",
env: { node: true },
},
{
filename: fixture("3/pub/ignore1.js"),
code: "require('bbb');",
env: { node: true },
},
{
filename: fixture("3/pub/test.js"),
code: "require('../package.json');",
env: { node: true },
},
{
filename: fixture("3/src/pub/test.js"),
code: "require('bbb');",
env: { node: true },
},
{
filename: fixture("3/src/pub/test.js"),
code: "require('bbb!foo?a=b&c=d');",
env: { node: true },
},

// `convertPath` option.
{
filename: fixture("3/src/test.jsx"),
code: "require('./a');",
env: { node: true },
settings: {
node: {
convertPath: {
@@ -131,12 +113,10 @@ ruleTester.run("no-unpublished-require", rule, {
tryExtensions: [".js", ".jsx", ".json"],
},
],
env: { node: true },
},
{
filename: fixture("3/src/test.jsx"),
code: "require('../test');",
env: { node: true },
settings: {
node: {
convertPath: [
@@ -163,14 +143,12 @@ ruleTester.run("no-unpublished-require", rule, {
],
},
],
env: { node: true },
},

// Ignores it if not callee.
{
filename: fixture("1/test.js"),
code: "require;",
env: { node: true },
},

// Ignores it if the global variable of `require` is not defined.
@@ -182,28 +160,23 @@ ruleTester.run("no-unpublished-require", rule, {
// Ignores it if the filename is unknown.
{
code: "require('no-exist-package-0');",
env: { node: true },
},
{
code: "require('./b');",
env: { node: true },
},

// Ignores it if the target is not string.
{
filename: fixture("1/test.js"),
code: "require();",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require(foo);",
env: { node: true },
},
{
filename: fixture("1/test.js"),
code: "require(777);",
env: { node: true },
},
{
filename: fixture("1/test.js"),
@@ -215,134 +188,113 @@ ruleTester.run("no-unpublished-require", rule, {
{
filename: "tests/fixtures/no-unpublished/2/test.js",
code: "require('aaa');",
env: { node: true },
},
{
filename: "tests/fixtures/no-unpublished/2/test.js",
code: "require('./a');",
env: { node: true },
},

// Should work fine if the target is the package directory.
{
filename: fixture("issue48n/test.js"),
code: "require('.');",
env: { node: true },
},
{
filename: fixture("issue48n/test.js"),
code: "require('./');",
env: { node: true },
},
{
filename: fixture("issue48n/test/test.js"),
code: "require('..');",
env: { node: true },
},

// https://github.com/eslint-community/eslint-plugin-n/issues/122
// Allow files to start with './' in package.json#files
{
filename: fixture("issue99/test/bin.js"),
code: "require('./index.js');",
env: { node: true },
},
{
filename: fixture("issue99/test/bin.js"),
code: "require('.');",
env: { node: true },
},

// allowModules option
{
filename: fixture("1/test.js"),
code: "require('electron');",
options: [{ allowModules: ["electron"] }],
env: { node: true },
},

// Auto-published files only apply to root package directory
{
filename: fixture("3/src/readme.js"),
code: "require('bbb');",
env: { node: true },
},

// Negative patterns in files field.
{
filename: fixture("negative-in-files/lib/__test__/index.js"),
code: "require('bbb');",
env: { node: true },
},
{
filename: fixture("issue126/lib/test.js"),
code: "require('bbb');",
env: { node: true },
},

// devDependency in a private package
{
filename: fixture("private-package/index.js"),
code: "require('bbb');",
env: { node: true },
},
],
invalid: [
{
filename: fixture("2/test.js"),
code: "require('./ignore1.js');",
env: { node: true },
errors: ['"./ignore1.js" is not published.'],
},
{
filename: fixture("2/test.js"),
code: "require('./ignore1');",
env: { node: true },
errors: ['"./ignore1" is not published.'],
},
{
filename: fixture("3/pub/test.js"),
code: "require('bbb');",
env: { node: true },
errors: ['"bbb" is not published.'],
},
{
filename: fixture("3/pub/test.js"),
code: "require('./ignore1');",
env: { node: true },
errors: ['"./ignore1" is not published.'],
},
{
filename: fixture("3/pub/test.js"),
code: "require('./abc');",
env: { node: true },
errors: ['"./abc" is not published.'],
},
{
filename: fixture("3/pub/test.js"),
code: "require('../test');",
env: { node: true },
errors: ['"../test" is not published.'],
},
{
filename: fixture("3/pub/test.js"),
code: "require('../src/pub/a.js');",
env: { node: true },
errors: ['"../src/pub/a.js" is not published.'],
},

{
filename: fixture("1/test.js"),
code: "require('../a.js');",
env: { node: true },
errors: ['"../a.js" is not published.'],
},

// `convertPath` option.
{
filename: fixture("3/src/test.jsx"),
code: "require('../test');",
env: { node: true },
errors: ['"../test" is not published.'],
settings: {
node: {
@@ -362,13 +314,11 @@ ruleTester.run("no-unpublished-require", rule, {
},
},
],
env: { node: true },
errors: ['"../test" is not published.'],
},
{
filename: fixture("3/src/test.jsx"),
code: "require('../test');",
env: { node: true },
errors: ['"../test" is not published.'],
settings: {
node: {
@@ -394,23 +344,20 @@ ruleTester.run("no-unpublished-require", rule, {
],
},
],
env: { node: true },
errors: ['"../test" is not published.'],
},

// Should work fine if the filename is relative.
{
filename: "tests/fixtures/no-unpublished/2/test.js",
code: "require('./ignore1');",
env: { node: true },
errors: ['"./ignore1" is not published.'],
},

// outside of the package.
{
filename: fixture("1/test.js"),
code: "require('../2/a.js');",
env: { node: true },
errors: ['"../2/a.js" is not published.'],
},
],
2 changes: 1 addition & 1 deletion tests/lib/rules/no-unsupported-features.js
Original file line number Diff line number Diff line change
@@ -123,7 +123,7 @@ function fixture(name) {
)
}

const ruleTester = new RuleTester()
const ruleTester = new RuleTester({ env: { node: true, es6: true } })
ruleTester.run(
"no-unsupported-features",
rule,
14 changes: 2 additions & 12 deletions tests/lib/rules/no-unsupported-features/node-builtins.js
Original file line number Diff line number Diff line change
@@ -27,18 +27,8 @@ function concat(patterns) {
}

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
globals: {
Buffer: false,
URL: false,
URLSearchParams: false,
console: false,
process: false,
require: false,
},
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
}).run(
"no-unsupported-features/node-builtins",
rule,
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/buffer.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/buffer")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
Buffer: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/buffer", rule, {
valid: [
"var b = Buffer.alloc(10)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/console.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/console")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
console: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/console", rule, {
valid: [
"console.log(10)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/process.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/process")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
process: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/process", rule, {
valid: [
"process.exit(0)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/text-decoder.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/text-decoder")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
TextDecoder: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/text-decoder", rule, {
valid: [
"var b = new TextDecoder(s)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/text-encoder.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/text-encoder")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
TextEncoder: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/text-encoder", rule, {
valid: [
"var b = new TextEncoder(s)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/url-search-params.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/url-search-params")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
URLSearchParams: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/url-search-params", rule, {
valid: [
"var b = new URLSearchParams(s)",
8 changes: 1 addition & 7 deletions tests/lib/rules/prefer-global/url.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,7 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-global/url")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
},
globals: {
URL: false,
require: false,
},
env: { node: true, es6: true },
}).run("prefer-global/url", rule, {
valid: [
"var b = new URL(s)",
9 changes: 2 additions & 7 deletions tests/lib/rules/prefer-promises/dns.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,8 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-promises/dns")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
globals: {
require: false,
},
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
}).run("prefer-promises/dns", rule, {
valid: [
"const dns = require('dns'); dns.lookupSync()",
9 changes: 2 additions & 7 deletions tests/lib/rules/prefer-promises/fs.js
Original file line number Diff line number Diff line change
@@ -8,13 +8,8 @@ const RuleTester = require("eslint").RuleTester
const rule = require("../../../../lib/rules/prefer-promises/fs")

new RuleTester({
parserOptions: {
ecmaVersion: 2015,
sourceType: "module",
},
globals: {
require: false,
},
parserOptions: { sourceType: "module" },
env: { node: true, es6: true },
}).run("prefer-promises/fs", rule, {
valid: [
"const fs = require('fs'); fs.createReadStream()",
2 changes: 1 addition & 1 deletion tests/lib/rules/shebang.js
Original file line number Diff line number Diff line change
@@ -17,7 +17,7 @@ function fixture(name) {
return path.resolve(__dirname, "../../fixtures/shebang", name)
}

const ruleTester = new RuleTester()
const ruleTester = new RuleTester({ env: { node: true, es6: true } })
ruleTester.run("shebang", rule, {
valid: [
{