Skip to content

Commit

Permalink
[Tests] export resolved parsers for cleaner comparison
Browse files Browse the repository at this point in the history
  • Loading branch information
ljharb committed Jan 23, 2022
1 parent 7cead46 commit b74013d
Show file tree
Hide file tree
Showing 25 changed files with 184 additions and 183 deletions.
1 change: 0 additions & 1 deletion tests/src/core/getExports.js
Expand Up @@ -343,7 +343,6 @@ describe('ExportMap', function () {
});

context('alternate parsers', function () {

const configs = [
// ['string form', { 'typescript-eslint-parser': '.ts' }],
];
Expand Down
28 changes: 14 additions & 14 deletions tests/src/rules/default.js
@@ -1,5 +1,5 @@
import path from 'path';
import { test, testVersion, SYNTAX_CASES, getTSParsers } from '../utils';
import { test, testVersion, SYNTAX_CASES, getTSParsers, parsers } from '../utils';
import { RuleTester } from 'eslint';

import { CASE_SENSITIVE_FS } from 'eslint-module-utils/resolve';
Expand Down Expand Up @@ -29,19 +29,19 @@ ruleTester.run('default', rule, {

// es7 export syntax
test({ code: 'export bar from "./bar"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),
test({ code: 'export { default as bar } from "./bar"' }),
test({ code: 'export bar, { foo } from "./bar"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),
test({ code: 'export { default as bar, foo } from "./bar"' }),
test({ code: 'export bar, * as names from "./bar"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),

// sanity check
test({ code: 'export {a} from "./named-exports"' }),
test({
code: 'import twofer from "./trampoline"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// jsx
Expand Down Expand Up @@ -69,27 +69,27 @@ ruleTester.run('default', rule, {
// from no-errors
test({
code: "import Foo from './jsx/FooES7.js';",
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// #545: more ES7 cases
test({
code: "import bar from './default-export-from.js';",
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: "import bar from './default-export-from-named.js';",
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: "import bar from './default-export-from-ignored.js';",
settings: { 'import/ignore': ['common'] },
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: "export bar from './default-export-from-ignored.js';",
settings: { 'import/ignore': ['common'] },
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// es2022: Arbitrary module namespace identifier names
Expand Down Expand Up @@ -117,23 +117,23 @@ ruleTester.run('default', rule, {
// es7 export syntax
test({
code: 'export baz from "./named-exports"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ['No default export found in imported module "./named-exports".'],
}),
test({
code: 'export baz, { bar } from "./named-exports"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ['No default export found in imported module "./named-exports".'],
}),
test({
code: 'export baz, * as names from "./named-exports"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ['No default export found in imported module "./named-exports".'],
}),
// exports default from a module with no default
test({
code: 'import twofer from "./broken-trampoline"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ['No default export found in imported module "./broken-trampoline".'],
}),

Expand Down
6 changes: 3 additions & 3 deletions tests/src/rules/dynamic-import-chunkname.js
@@ -1,4 +1,4 @@
import { SYNTAX_CASES, getTSParsers } from '../utils';
import { SYNTAX_CASES, getTSParsers, parsers } from '../utils';
import { RuleTester } from 'eslint';
import semver from 'semver';

Expand All @@ -15,7 +15,7 @@ const pickyCommentOptions = [{
const multipleImportFunctionOptions = [{
importFunctions: ['dynamicImport', 'definitelyNotStaticImport'],
}];
const parser = require.resolve('babel-eslint');
const parser = parsers.BABEL_OLD;

const noLeadingCommentError = 'dynamic imports require a leading comment with the webpack chunkname';
const nonBlockCommentError = 'dynamic imports require a /* foo */ style comment, not a // foo comment';
Expand Down Expand Up @@ -495,7 +495,7 @@ ruleTester.run('dynamic-import-chunkname', rule, {

context('TypeScript', () => {
getTSParsers().forEach((typescriptParser) => {
const nodeType = typescriptParser.includes('typescript-eslint-parser') || (typescriptParser.includes('@typescript-eslint/parser') && semver.satisfies(require('@typescript-eslint/parser/package.json').version, '^2'))
const nodeType = typescriptParser === parsers.TS_OLD || (typescriptParser === parsers.TS_NEW && semver.satisfies(require('@typescript-eslint/parser/package.json').version, '^2'))
? 'CallExpression'
: 'ImportExpression';

Expand Down
4 changes: 2 additions & 2 deletions tests/src/rules/extensions.js
@@ -1,6 +1,6 @@
import { RuleTester } from 'eslint';
import rule from 'rules/extensions';
import { getTSParsers, test, testFilePath } from '../utils';
import { getTSParsers, test, testFilePath, parsers } from '../utils';

const ruleTester = new RuleTester();

Expand Down Expand Up @@ -601,7 +601,7 @@ ruleTester.run('extensions', rule, {
describe('TypeScript', () => {
getTSParsers()
// Type-only imports were added in TypeScript ESTree 2.23.0
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
.filter((parser) => parser !== parsers.TS_OLD)
.forEach((parser) => {
ruleTester.run(`${parser}: extensions ignore type-only`, rule, {
valid: [
Expand Down
8 changes: 4 additions & 4 deletions tests/src/rules/max-dependencies.js
@@ -1,4 +1,4 @@
import { test, getTSParsers } from '../utils';
import { test, getTSParsers, parsers } from '../utils';

import { RuleTester } from 'eslint';

Expand Down Expand Up @@ -66,7 +66,7 @@ ruleTester.run('max-dependencies', rule, {

test({
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
options: [{
max: 1,
}],
Expand All @@ -77,7 +77,7 @@ ruleTester.run('max-dependencies', rule, {

test({
code: 'import type { x } from \'./foo\'; import type { y } from \'./bar\'; import type { z } from \'./baz\'',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
options: [{
max: 2,
ignoreTypeImports: false,
Expand All @@ -92,7 +92,7 @@ ruleTester.run('max-dependencies', rule, {
describe('TypeScript', () => {
getTSParsers()
// Type-only imports were added in TypeScript ESTree 2.23.0
.filter((parser) => parser !== require.resolve('typescript-eslint-parser'))
.filter((parser) => parser !== parsers.TS_OLD)
.forEach((parser) => {
ruleTester.run(`max-dependencies (${parser.replace(process.cwd(), '.')})`, rule, {
valid: [
Expand Down
34 changes: 17 additions & 17 deletions tests/src/rules/named.js
@@ -1,4 +1,4 @@
import { test, SYNTAX_CASES, getTSParsers, testFilePath, testVersion } from '../utils';
import { test, SYNTAX_CASES, getTSParsers, testFilePath, testVersion, parsers } from '../utils';
import { RuleTester } from 'eslint';

import { CASE_SENSITIVE_FS } from 'eslint-module-utils/resolve';
Expand Down Expand Up @@ -54,11 +54,11 @@ ruleTester.run('named', rule, {
// es7
test({
code: 'export bar, { foo } from "./bar"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import { foo, bar } from "./named-trampoline"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// regression tests
Expand All @@ -73,43 +73,43 @@ ruleTester.run('named', rule, {
// should ignore imported/exported flow types, even if they don’t exist
test({
code: 'import type { MissingType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import typeof { MissingType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import type { MyOpaqueType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import typeof { MyOpaqueType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import { type MyOpaqueType, MyClass } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import { typeof MyOpaqueType, MyClass } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import typeof MissingType from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'import typeof * as MissingType from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'export type { MissingType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'export type { MyOpaqueType } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// jsnext
Expand Down Expand Up @@ -244,17 +244,17 @@ ruleTester.run('named', rule, {
// es7
test({
code: 'export bar2, { bar } from "./bar"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ["bar not found in './bar'"],
}),
test({
code: 'import { foo, bar, baz } from "./named-trampoline"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ["baz not found in './named-trampoline'"],
}),
test({
code: 'import { baz } from "./broken-trampoline"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ['baz not found via broken-trampoline.js -> named-exports.js'],
}),

Expand Down Expand Up @@ -294,7 +294,7 @@ ruleTester.run('named', rule, {

test({
code: 'import { type MyOpaqueType, MyMissingClass } from "./flowtypes"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ["MyMissingClass not found in './flowtypes'"],
}),

Expand Down
20 changes: 10 additions & 10 deletions tests/src/rules/namespace.js
@@ -1,4 +1,4 @@
import { test, SYNTAX_CASES, getTSParsers, testVersion, testFilePath } from '../utils';
import { test, SYNTAX_CASES, getTSParsers, testVersion, testFilePath, parsers } from '../utils';
import { RuleTester } from 'eslint';
import flatMap from 'array.prototype.flatmap';

Expand Down Expand Up @@ -57,16 +57,16 @@ const valid = [
// es7 //
/////////
test({ code: 'export * as names from "./named-exports"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),
test({ code: 'export defport, * as names from "./named-exports"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),
// non-existent is handled by no-unresolved
test({ code: 'export * as names from "./does-not-exist"',
parser: require.resolve('babel-eslint') }),
parser: parsers.BABEL_OLD }),

test({
code: 'import * as Endpoints from "./issue-195/Endpoints"; console.log(Endpoints.Users)',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// respect hoisting
Expand All @@ -81,11 +81,11 @@ const valid = [
test({ code: "import * as names from './default-export'; console.log(names.default)" }),
test({
code: 'export * as names from "./default-export"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),
test({
code: 'export defport, * as names from "./default-export"',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// #456: optionally ignore computed references
Expand All @@ -103,7 +103,7 @@ const valid = [
}),
test({
code: `import * as names from './named-exports'; const {a, b, ...rest} = names;`,
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
}),

// #1144: should handle re-export CommonJS as namespace
Expand Down Expand Up @@ -251,7 +251,7 @@ const invalid = [].concat(

test({
code: 'import * as Endpoints from "./issue-195/Endpoints"; console.log(Endpoints.Foo)',
parser: require.resolve('babel-eslint'),
parser: parsers.BABEL_OLD,
errors: ["'Foo' not found in imported namespace 'Endpoints'."],
}),

Expand Down Expand Up @@ -316,7 +316,7 @@ const invalid = [].concat(
///////////////////////
// deep dereferences //
//////////////////////
;[['deep', require.resolve('espree')], ['deep-es7', require.resolve('babel-eslint')]].forEach(function ([folder, parser]) { // close over params
;[['deep', require.resolve('espree')], ['deep-es7', parsers.BABEL_OLD]].forEach(function ([folder, parser]) { // close over params
valid.push(
test({ parser, code: `import * as a from "./${folder}/a"; console.log(a.b.c.d.e)` }),
test({ parser, code: `import { b } from "./${folder}/a"; console.log(b.c.d.e)` }),
Expand Down

0 comments on commit b74013d

Please sign in to comment.