diff --git a/.github/workflows/node-4+.yml b/.github/workflows/node-4+.yml index 3af06b3bc..6762bf0bb 100644 --- a/.github/workflows/node-4+.yml +++ b/.github/workflows/node-4+.yml @@ -34,6 +34,11 @@ jobs: - 3 - 2 include: + - node-version: 'lts/*' + eslint: 7 + ts-parser: 4 + env: + TS_PARSER: 4 - node-version: 'lts/*' eslint: 7 ts-parser: 3 diff --git a/package.json b/package.json index 1f958ec74..1e003ec6b 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "@angular-eslint/template-parser": "^13.0.1", "@eslint/import-test-order-redirect-scoped": "file:./tests/files/order-redirect-scoped", "@test-scope/some-module": "file:./tests/files/symlinked-module", - "@typescript-eslint/parser": "^2.23.0 || ^3.3.0 || ^4.29.3", + "@typescript-eslint/parser": "^2.23.0 || ^3.3.0 || ^4.29.3 || ^5.10.0", "array.prototype.flatmap": "^1.2.5", "babel-cli": "^6.26.0", "babel-core": "^6.26.3", diff --git a/tests/dep-time-travel.sh b/tests/dep-time-travel.sh index 82681b38f..6ee500fe2 100755 --- a/tests/dep-time-travel.sh +++ b/tests/dep-time-travel.sh @@ -21,6 +21,8 @@ elif [[ "$ESLINT_VERSION" -lt "5" ]]; then # completely remove the new TypeScrip npm uninstall --no-save @typescript-eslint/parser elif [[ "$TRAVIS_NODE_VERSION" -lt "10" ]]; then # TS parser 3 requires node 10+ npm i --no-save "@typescript-eslint/parser@3" +elif [[ "$TRAVIS_NODE_VERSION" -lt "12" ]]; then # TS parser 4 requires node 12+ + npm i --no-save "@typescript-eslint/parser@4" fi # use these alternate TypeScript dependencies for ESLint < v4 diff --git a/tests/src/rules/no-webpack-loader-syntax.js b/tests/src/rules/no-webpack-loader-syntax.js index a8aa0dd2b..2b841e18a 100644 --- a/tests/src/rules/no-webpack-loader-syntax.js +++ b/tests/src/rules/no-webpack-loader-syntax.js @@ -1,6 +1,7 @@ -import { test, getTSParsers } from '../utils'; +import { test, getTSParsers, parsers } from '../utils'; import { RuleTester } from 'eslint'; +import semver from 'semver'; const ruleTester = new RuleTester(); const rule = require('rules/no-webpack-loader-syntax'); @@ -82,16 +83,20 @@ context('TypeScript', function () { 'import/resolver': { 'eslint-import-resolver-typescript': true }, }, }; - ruleTester.run('no-webpack-loader-syntax', rule, { - valid: [ - test(Object.assign({ - code: 'import { foo } from\nalert()', - }, parserConfig)), - test(Object.assign({ - code: 'import foo from\nalert()', - }, parserConfig)), - ], - invalid: [], - }); + // @typescript-eslint/parser@5+ throw error for invalid module specifiers at parsing time. + // https://github.com/typescript-eslint/typescript-eslint/releases/tag/v5.0.0 + if (!(parser === parsers.TS_NEW && semver.satisfies(require('@typescript-eslint/parser/package.json').version, '>= 5'))) { + ruleTester.run('no-webpack-loader-syntax', rule, { + valid: [ + test(Object.assign({ + code: 'import { foo } from\nalert()', + }, parserConfig)), + test(Object.assign({ + code: 'import foo from\nalert()', + }, parserConfig)), + ], + invalid: [], + }); + } }); });