Repository: not-an-aardvark/eslint-plugin-eslint-plugin (js)

Issue:
[test-case-property-ordering] moved some properties to the last by default
**Tell us about your environment**

- ESLint: master
- eslint-plugin-eslint-plugin: 2.0.1

**Please show your full configuration:**

- [.eslintrc.js](https://github.com/eslint/eslint/blob/2c7431d6b32063f74e3837ee727f26af215eada7/.eslintrc.js)

**What did you do? Please include the actual source code causing the issue, as well as the command that you used to run ESLint.**

<!-- Paste the source code below: -->
```js
//...
        {
            code: "function f() { let a; let a; }",
            parser: looseParserPath,
            parserOptions: { ecmaVersion: 2015 },
            errors: [
                { message: "'a' is already defined.", type: "Identifier" }
            ]
        },
//....
```

<!-- Paste the command you used to run ESLint: -->
```bash

```

**What did you expect to happen?**

No errors.

**What actually happened? Please include the actual, raw output from ESLint.**

![image](https://user-images.githubusercontent.com/1937871/54252523-8923ad00-458e-11e9-9825-204a893f861b.png)

----

According to [test-case-property-ordering.md](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/test-case-property-ordering.md), the default option doesn't seem to include some valid properties.

- `env`
- `filename`
- `globals`
- `parser`
- (`rules`)
- `settings`

Pull request:
Breaking: change test-case-property-ordering default options (fixes #79)
defaults to ['filename','code','output','options','parser',
'parserOptions','globals','env','errors']

Patch:
diff --git a/.eslintrc.yml b/.eslintrc.yml
index 92759fe..0713607 100644
--- a/.eslintrc.yml
+++ b/.eslintrc.yml
@@ -7,6 +7,11 @@ extends:
   - plugin:self/all
 root: true
 rules:
+  comma-dangle:
+    - error
+    - arrays: always-multiline
+      objects: always-multiline
+      functions: never # disallow trailing commas in function(es2017)
   require-jsdoc: error
   self/meta-property-ordering: off
   self/require-meta-docs-url: off
diff --git a/.travis.yml b/.travis.yml
index d8b6d72..de4e904 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,7 +1,7 @@
 language: node_js
 node_js:
-  - '6'
-  - '8'
-  - '9'
-  - '10'
-  - '11'
+  - 10.12
+  - 10
+  - 12.0
+  - 12
+  - 14
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5e03dda..299cb69 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,15 @@
 # Changelog
 
+## v2.3.0 (2020-06-23)
+
+* New: Add rule `prefer-object-rule` ([#101](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/101)) ([7f625f4](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/commit/7f625f425332fc8028cbba38b8d4b93f0849dd62))
+
+## v2.2.2 (2020-06-10)
+
+* Fix: handle spreads in rule meta objects ([#100](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/100)) ([45a09a6](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/commit/45a09a67942c55230fcae893633c1911b089a514))
+* Docs: Fix incorrect rule reference in meta-property-ordering ([#96](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/96)) ([68059b1](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/commit/68059b1ed2cb2710a4d6c4aa1d05afad8de565f0))
+* Upgrade: eslint and other deps ([#92](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/92)) ([93d082c](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/commit/93d082cce48da79bf7305df70e4fd0061b482e88))
+
 ## v2.2.1 (2020-01-17)
 
 * Fix: update `require-meta-schema` rule to allow object schemas (in addition to array schemas) ([#90](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/issues/90)) ([e582cb6](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/commit/e582cb61d0f51c15a8e5d9e38c82d1c73f2d6edd))
diff --git a/README.md b/README.md
index c1eb471..1e4ae46 100644
--- a/README.md
+++ b/README.md
@@ -58,6 +58,7 @@ Name | ✔️ | 🛠 | Description
 [no-missing-placeholders](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/no-missing-placeholders.md) | ✔️ |  | disallow missing placeholders in rule report messages
 [no-unused-placeholders](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/no-unused-placeholders.md) | ✔️ |  | disallow unused placeholders in rule report messages
 [no-useless-token-range](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/no-useless-token-range.md) | ✔️ | 🛠 | disallow unnecessary calls to sourceCode.getFirstToken and sourceCode.getLastToken
+[prefer-object-rule](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-object-rule.md) |  | 🛠 | disallow rule exports where the export is a function.
 [prefer-output-null](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-output-null.md) |  | 🛠 | disallow invalid RuleTester test cases with the output the same as the code.
 [prefer-placeholders](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-placeholders.md) |  |  | disallow template literals as report messages
 [prefer-replace-text](https://github.com/not-an-aardvark/eslint-plugin-eslint-plugin/blob/master/docs/rules/prefer-replace-text.md) |  |  | require using replaceText instead of replaceTextRange.
diff --git a/docs/rules/meta-property-ordering.md b/docs/rules/meta-property-ordering.md
index 29ce4c9..8115af8 100644
--- a/docs/rules/meta-property-ordering.md
+++ b/docs/rules/meta-property-ordering.md
@@ -45,7 +45,7 @@ module.exports = {
 Examples of **correct** code for this rule:
 
 ```js
-/* eslint eslint-plugin/test-case-property-ordering: ["error",
+/* eslint eslint-plugin/meta-property-ordering: ["error",
   ["type", "docs", "fixable", "schema", "messages"]
 ] */
 
diff --git a/docs/rules/prefer-object-rule.md b/docs/rules/prefer-object-rule.md
new file mode 100644
index 0000000..5ddd6de
--- /dev/null
+++ b/docs/rules/prefer-object-rule.md
@@ -0,0 +1,49 @@
+# Disallow rule exports where the export is a function. (prefer-object-rule)
+
+(fixable) The `--fix` option on the [command line](../user-guide/command-line-interface#fix) automatically fixes problems reported by this rule.
+
+## Rule Details
+
+The rule reports an error if it encounters a rule that's defined using the old style of just a `create` function.
+
+Examples of **incorrect** code for this rule:
+
+```js
+/* eslint eslint-plugin/prefer-object-rule: error */
+
+module.exports = function (context) {
+  return { Program() { context.report() } };
+};
+
+module.exports = function create(context) {
+  return { Program() { context.report() } };
+};
+
+module.exports = (context) => {
+  return { Program() { context.report() } };
+};
+```
+
+Examples of **correct** code for this rule:
+
+```js
+/* eslint eslint-plugin/prefer-object-rule: error */
+
+module.exports = {
+  create(context) {
+    return { Program() { context.report() } };
+  },
+};
+
+module.exports = {
+  create(context) {
+    return { Program() { context.report() } };
+  },
+};
+
+module.exports = {
+  create: (context) => {
+    return { Program() { context.report() } };
+  },
+};
+```
diff --git a/docs/rules/require-meta-schema.md b/docs/rules/require-meta-schema.md
index 24d7a23..8c4129c 100644
--- a/docs/rules/require-meta-schema.md
+++ b/docs/rules/require-meta-schema.md
@@ -24,7 +24,7 @@ module.exports = {
 Examples of **correct** code for this rule:
 
 ```js
-/* eslint eslint-plugin/require-meta-type: error */
+/* eslint eslint-plugin/require-meta-schema: error */
 module.exports = {
     meta: { schema: [] }, // ensures no options are passed to the rule
     create: function(context) { /* ... */}
diff --git a/lib/rules/prefer-object-rule.js b/lib/rules/prefer-object-rule.js
new file mode 100644
index 0000000..4cd781a
--- /dev/null
+++ b/lib/rules/prefer-object-rule.js
@@ -0,0 +1,74 @@
+/**
+ * @author Brad Zacher <https://github.com/bradzacher>
+ */
+
+'use strict';
+
+const utils = require('../utils');
+
+// ------------------------------------------------------------------------------
+// Rule Definition
+// ------------------------------------------------------------------------------
+
+module.exports = {
+  meta: {
+    docs: {
+      description: 'disallow rule exports where the export is a function.',
+      category: 'Rules',
+      recommended: false,
+    },
+    messages: {
+      preferObject: 'Rules should be declared using the object style.',
+    },
+    type: 'suggestion',
+    fixable: 'code',
+    schema: [],
+  },
+
+  create (context) {
+    // ----------------------------------------------------------------------
+    // Public
+    // ----------------------------------------------------------------------
+
+    const sourceCode = context.getSourceCode();
+    const ruleInfo = utils.getRuleInfo(sourceCode.ast);
+
+    return {
+      Program () {
+        if (!ruleInfo || ruleInfo.isNewStyle) {
+          return;
+        }
+
+        context.report({
+          node: ruleInfo.create,
+          messageId: 'preferObject',
+          *fix (fixer) {
+            // note - we intentionally don't worry about formatting here, as otherwise we have
+            //        to indent the function correctly
+
+            if (ruleInfo.create.type === 'FunctionExpression') {
+              const openParenToken = sourceCode.getFirstToken(
+                ruleInfo.create,
+                token => token.type === 'Punctuator' && token.value === '('
+              );
+
+              if (!openParenToken) {
+                // this shouldn't happen, but guarding against crashes just in case
+                return null;
+              }
+
+              yield fixer.replaceTextRange(
+                [ruleInfo.create.range[0], openParenToken.range[0]],
+                '{create'
+              );
+              yield fixer.insertTextAfter(ruleInfo.create, '}');
+            } else if (ruleInfo.create.type === 'ArrowFunctionExpression') {
+              yield fixer.insertTextBefore(ruleInfo.create, '{create: ');
+              yield fixer.insertTextAfter(ruleInfo.create, '}');
+            }
+          },
+        });
+      },
+    };
+  },
+};
diff --git a/lib/utils.js b/lib/utils.js
index 0fd86bd..40d38b8 100644
--- a/lib/utils.js
+++ b/lib/utils.js
@@ -184,6 +184,10 @@ module.exports = {
   * @returns {string|null} The key name, or `null` if the name cannot be determined statically.
   */
   getKeyName (property) {
+    if (!property.key) {
+      // likely a SpreadElement or another non-standard node
+      return null;
+    }
     if (!property.computed && property.key.type === 'Identifier') {
       return property.key.name;
     }
diff --git a/package.json b/package.json
index 38ba0c1..dcb06e4 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "eslint-plugin-eslint-plugin",
-  "version": "2.2.1",
+  "version": "2.3.0",
   "description": "An ESLint plugin for linting ESLint plugins",
   "author": "Teddy Katz",
   "main": "lib/index.js",
@@ -34,19 +34,19 @@
     "chai": "^4.1.0",
     "dirty-chai": "^2.0.1",
     "escope": "^3.6.0",
-    "eslint": "^5.9.0",
+    "eslint": "^7.9.0",
     "eslint-config-not-an-aardvark": "^2.1.0",
-    "eslint-plugin-node": "^8.0.0",
-    "eslint-plugin-self": "^1.0.1",
-    "espree": "^4.1.0",
-    "estraverse": "^4.2.0",
+    "eslint-plugin-node": "^11.1.0",
+    "eslint-plugin-self": "^1.2.1",
+    "espree": "^7.3.0",
+    "estraverse": "^5.0.0",
     "lodash": "^4.17.2",
-    "mocha": "^5.2.0"
+    "mocha": "^7.1.1"
   },
   "peerDependencies": {
-    "eslint": ">=5.0.0"
+    "eslint": "^7.0.0"
   },
   "engines": {
-    "node": "^6.14.0 || ^8.10.0 || >=9.10.0"
+    "node": "^10.12.0 || >=12.0.0"
   }
 }


Test patch:
diff --git a/lib/rules/test-case-property-ordering.js b/lib/rules/test-case-property-ordering.js
index f5778bd..f7dda40 100644
--- a/lib/rules/test-case-property-ordering.js
+++ b/lib/rules/test-case-property-ordering.js
@@ -31,7 +31,17 @@ module.exports = {
     // Public
     // ----------------------------------------------------------------------
     const message = 'The properties of a test case should be placed in a consistent order: [{{order}}].';
-    const order = context.options[0] || ['code', 'output', 'options', 'parserOptions', 'errors'];
+    const order = context.options[0] || [
+      'filename',
+      'code',
+      'output',
+      'options',
+      'parser',
+      'parserOptions',
+      'globals',
+      'env',
+      'errors',
+    ];
     const sourceCode = context.getSourceCode();
 
     return {
diff --git a/tests/lib/rules/no-deprecated-report-api.js b/tests/lib/rules/no-deprecated-report-api.js
index b46043c..24a8127 100644
--- a/tests/lib/rules/no-deprecated-report-api.js
+++ b/tests/lib/rules/no-deprecated-report-api.js
@@ -11,7 +11,7 @@
 
 const rule = require('../../../lib/rules/no-deprecated-report-api');
 const RuleTester = require('eslint').RuleTester;
-const ERROR = [{ message: 'Use the new-style context.report() API.', type: 'CallExpression' }];
+const ERROR = { message: 'Use the new-style context.report() API.', type: 'Identifier' };
 
 // ------------------------------------------------------------------------------
 // Tests
diff --git a/tests/lib/rules/prefer-object-rule.js b/tests/lib/rules/prefer-object-rule.js
new file mode 100644
index 0000000..1e48ec2
--- /dev/null
+++ b/tests/lib/rules/prefer-object-rule.js
@@ -0,0 +1,109 @@
+/**
+ * @author Brad Zacher <https://github.com/bradzacher>
+ */
+
+'use strict';
+
+// ------------------------------------------------------------------------------
+// Requirements
+// ------------------------------------------------------------------------------
+
+const rule = require('../../../lib/rules/prefer-object-rule');
+const RuleTester = require('eslint').RuleTester;
+
+const ERROR = { messageId: 'preferObject', line: 2, column: 26 };
+
+// ------------------------------------------------------------------------------
+// Tests
+// ------------------------------------------------------------------------------
+
+const ruleTester = new RuleTester({ parserOptions: { ecmaVersion: 6 } });
+ruleTester.run('prefer-object-rule', rule, {
+  valid: [
+    `
+      module.exports = {
+        create(context) {
+          return { Program() { context.report() } };
+        },
+      };
+    `,
+    `
+      module.exports = {
+        create: (context) => {
+          return { Program() { context.report() } };
+        },
+      };
+    `,
+    `
+      module.exports.create = (context) => {
+        return { Program() { context.report() } };
+      };
+    `,
+    `
+      module.exports.create = function (context) {
+        return { Program() { context.report() } };
+      };
+    `,
+    `
+      module.exports.create = function create(context) {
+        return { Program() { context.report() } };
+      };
+    `,
+    `
+      function create(context) {
+        return { Program() { context.report() } };
+      };
+      module.exports.create = create;
+    `,
+    `
+      const rule = {
+        create(context) {
+          return { Program() { context.report() } };
+        },
+      };
+      module.exports = rule;
+    `,
+  ],
+
+  invalid: [
+    {
+      code: `
+        module.exports = function (context) {
+          return { Program() { context.report() } };
+        };
+      `,
+      output: `
+        module.exports = {create(context) {
+          return { Program() { context.report() } };
+        }};
+      `,
+      errors: [ERROR],
+    },
+    {
+      code: `
+        module.exports = function create(context) {
+          return { Program() { context.report() } };
+        };
+      `,
+      output: `
+        module.exports = {create(context) {
+          return { Program() { context.report() } };
+        }};
+      `,
+      errors: [ERROR],
+    },
+    {
+      code: `
+        module.exports = (context) => {
+          return { Program() { context.report() } };
+        };
+      `,
+      output: `
+        module.exports = {create: (context) => {
+          return { Program() { context.report() } };
+        }};
+      `,
+      errors: [ERROR],
+    },
+  ],
+});
diff --git a/tests/lib/rules/require-meta-docs-url.js b/tests/lib/rules/require-meta-docs-url.js
index 83ebc2f..6513286 100644
--- a/tests/lib/rules/require-meta-docs-url.js
+++ b/tests/lib/rules/require-meta-docs-url.js
@@ -55,6 +55,7 @@ tester.run('require-meta-docs-url', rule, {
       }],
     },
     {
+      filename: 'test-rule',
       code: `
         module.exports = {
           meta: {docs: {url: "path/to/test-rule.md"}},
@@ -64,7 +65,6 @@ tester.run('require-meta-docs-url', rule, {
       options: [{
         pattern: 'path/to/{{name}}.md',
       }],
-      filename: 'test-rule',
     },
   ],
 
@@ -396,6 +396,7 @@ tester.run('require-meta-docs-url', rule, {
     // pattern option with filename
     // -------------------------------------------------------------------------
     {
+      filename: 'test.js',
       code: `
         module.exports = function() {}
       `,
@@ -404,9 +405,9 @@ tester.run('require-meta-docs-url', rule, {
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta,
@@ -418,9 +419,9 @@ tester.run('require-meta-docs-url', rule, {
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: 100,
@@ -432,9 +433,9 @@ tester.run('require-meta-docs-url', rule, {
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {},
@@ -455,9 +456,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -481,9 +482,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -507,9 +508,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -523,9 +524,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -548,9 +549,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -576,9 +577,9 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -604,9 +605,9 @@ url: "plugin-name/test.md",
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -631,9 +632,9 @@ url: "plugin-name/test.md",
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['`meta.docs.url` property must be `plugin-name/test.md`.'],
-      filename: 'test.js',
     },
     {
+      filename: 'test.js',
       code: `
         module.exports = {
           meta: {
@@ -659,7 +660,6 @@ url: "plugin-name/test.md"
         pattern: 'plugin-name/{{ name }}.md',
       }],
       errors: ['Rules should export a `meta.docs.url` property.'],
-      filename: 'test.js',
     },
   ],
 });
diff --git a/tests/lib/rules/require-meta-fixable.js b/tests/lib/rules/require-meta-fixable.js
index a4a8c9b..875e701 100644
--- a/tests/lib/rules/require-meta-fixable.js
+++ b/tests/lib/rules/require-meta-fixable.js
@@ -12,8 +12,8 @@
 const rule = require('../../../lib/rules/require-meta-fixable');
 const RuleTester = require('eslint').RuleTester;
 
-const MISSING_ERROR = [{ message: 'Fixable rules must export a `meta.fixable` property.', type: 'FunctionExpression' }];
-const INVALID_ERROR = [{ message: '`meta.fixable` must be either `code`, `whitespace` or `null`.', type: 'Property' }];
+const MISSING_ERROR = { message: 'Fixable rules must export a `meta.fixable` property.', type: 'FunctionExpression' };
+const INVALID_ERROR = { message: '`meta.fixable` must be either `code`, `whitespace` or `null`.', type: 'Property' };
 
 // ------------------------------------------------------------------------------
 // Tests
@@ -105,6 +105,19 @@ ruleTester.run('require-meta-fixable', rule, {
         create(context) { context.report(node, message, data, fix); }
       };
     `,
+    {
+      code: `
+        const meta = {};
+        module.exports = {
+          ...meta,
+          meta: {},
+          create(context) { context.report(node, message, data, fix); }
+        };
+      `,
+      parserOptions: {
+        ecmaVersion: 9,
+      },
+    },
   ],
 
   invalid: [
diff --git a/tests/lib/rules/test-case-property-ordering.js b/tests/lib/rules/test-case-property-ordering.js
index 3efa1a7..df29749 100644
--- a/tests/lib/rules/test-case-property-ordering.js
+++ b/tests/lib/rules/test-case-property-ordering.js
@@ -33,6 +33,13 @@ ruleTester.run('test-case-property-ordering', rule, {
         ]
       });
     `,
+    `
+      new RuleTester().run('foo', bar, {
+        valid: [
+          { filename: '', code: '', output: '', options: '', parser: '', parserOptions: '', globals: '', env: '', errors: '' },
+        ]
+      });
+    `,
     {
       code: `
         new RuleTester().run('foo', bar, {
diff --git a/tests/lib/utils.js b/tests/lib/utils.js
index fbe78bf..c92d9f8 100644
--- a/tests/lib/utils.js
+++ b/tests/lib/utils.js
@@ -183,6 +183,17 @@ describe('utils', () => {
         assert.strictEqual(utils.getKeyName(ast.body[0].expression.properties[0]), CASES[objectSource]);
       });
     });
+
+    const CASES_ES9 = {
+      '({ ...foo })': null,
+    };
+    Object.keys(CASES_ES9).forEach(objectSource => {
+      it(objectSource, () => {
+        const ast = espree.parse(objectSource, { ecmaVersion: 9 });
+
+        assert.strictEqual(utils.getKeyName(ast.body[0].expression.properties[0]), CASES_ES9[objectSource]);
+      });
+    });
   });
 
   describe('getTestInfo', () => {