Skip to content

Commit

Permalink
chore: use swc for tests instead of Babel (#4584)
Browse files Browse the repository at this point in the history
* chore: use swc for tests instead of Babel

* chore: lower jsc.target to es2019

* test: got integration tests running

* test: add back jest-resolver

* test: add back another babel types package and reset snapshots

* chore: switch syntax to work around SWC bug
  • Loading branch information
JoshuaKGoldberg committed Mar 2, 2022
1 parent 56a09e9 commit fa381f3
Show file tree
Hide file tree
Showing 20 changed files with 309 additions and 367 deletions.
21 changes: 21 additions & 0 deletions jest.config.base.js
@@ -0,0 +1,21 @@
'use strict';

// @ts-check
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
collectCoverage: false,
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
coverageReporters: ['text-summary', 'lcov'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
resolver: '<rootDir>/../../tests/jest-resolver.js',
transform: {
'^.+\\.(t|j)sx?$': [
'@swc/jest',
{
jsc: {
target: 'es2019',
},
},
],
},
};
9 changes: 3 additions & 6 deletions package.json
Expand Up @@ -55,16 +55,14 @@
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
},
"devDependencies": {
"@babel/code-frame": "^7.16.0",
"@babel/parser": "^7.16.4",
"@babel/types": "^7.16.0",
"@commitlint/cli": "^16.0.1",
"@commitlint/config-conventional": "^16.0.0",
"@nrwl/cli": "13.0.2",
"@nrwl/nx-cloud": "12.5.1",
"@nrwl/tao": "13.0.2",
"@nrwl/workspace": "13.0.2",
"@types/babel__code-frame": "^7.0.3",
"@swc/core": "^1.2.143",
"@swc/jest": "^0.2.17",
"@types/debug": "^4.1.7",
"@types/eslint-visitor-keys": "^1.0.0",
"@types/glob": "^7.2.0",
Expand All @@ -81,6 +79,7 @@
"@types/tmp": "^0.2.2",
"all-contributors-cli": "^6.20.0",
"cross-env": "^7.0.3",
"cross-fetch": "^3.1.4",
"cspell": "^5.12.3",
"cz-conventional-changelog": "^3.3.0",
"downlevel-dts": "^0.9.0",
Expand All @@ -100,12 +99,10 @@
"make-dir": "^3.1.0",
"markdownlint-cli": "^0.29.0",
"ncp": "^2.0.0",
"cross-fetch": "^3.1.4",
"prettier": "^2.5.0",
"pretty-format": "^27.3.1",
"rimraf": "^3.0.2",
"tmp": "^0.2.1",
"ts-jest": "^27.0.5",
"ts-node": "^10.4.0",
"tslint": "^6.1.3",
"typescript": ">=3.3.1 <4.6.0"
Expand Down
14 changes: 1 addition & 13 deletions packages/ast-spec/jest.config.js
Expand Up @@ -3,18 +3,6 @@
// @ts-check
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
globals: {
'ts-jest': {
isolatedModules: true,
},
},
testEnvironment: 'node',
transform: {
['^.+\\.tsx?$']: 'ts-jest',
},
...require('../../jest.config.base.js'),
testRegex: ['./tests/.+\\.test\\.ts$'],
collectCoverage: false,
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
coverageReporters: ['text-summary', 'lcov'],
};
15 changes: 1 addition & 14 deletions packages/eslint-plugin-internal/jest.config.js
Expand Up @@ -3,19 +3,6 @@
// @ts-check
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
resolver: '<rootDir>/../../tests/jest-resolver.js',
globals: {
'ts-jest': {
isolatedModules: true,
},
},
testEnvironment: 'node',
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
...require('../../jest.config.base.js'),
testRegex: './tests/.+\\.test\\.ts$',
collectCoverage: false,
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
coverageReporters: ['text-summary', 'lcov'],
};
15 changes: 1 addition & 14 deletions packages/eslint-plugin-tslint/jest.config.js
Expand Up @@ -3,19 +3,6 @@
// @ts-check
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
resolver: '<rootDir>/../../tests/jest-resolver.js',
globals: {
'ts-jest': {
isolatedModules: true,
},
},
testEnvironment: 'node',
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
...require('../../jest.config.base.js'),
testRegex: './tests/.+\\.spec\\.ts$',
collectCoverage: false,
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
coverageReporters: ['text-summary', 'lcov'],
};
14 changes: 1 addition & 13 deletions packages/eslint-plugin/jest.config.js
Expand Up @@ -3,19 +3,7 @@
// @ts-check
/** @type {import('@jest/types').Config.InitialOptions} */
module.exports = {
resolver: '<rootDir>/../../tests/jest-resolver.js',
globals: {
'ts-jest': {
isolatedModules: true,
},
},
testEnvironment: 'node',
transform: {
'^.+\\.tsx?$': 'ts-jest',
},
...require('../../jest.config.base.js'),
testRegex: './tests/.+\\.test\\.ts$',
collectCoverage: false,
collectCoverageFrom: ['src/**/*.{js,jsx,ts,tsx}'],
moduleFileExtensions: ['ts', 'tsx', 'js', 'jsx', 'json', 'node'],
coverageReporters: ['text-summary', 'lcov'],
};
85 changes: 41 additions & 44 deletions packages/eslint-plugin/src/rules/consistent-type-definitions.ts
Expand Up @@ -85,57 +85,54 @@ export default util.createRule({
}),
...(option === 'type' && {
TSInterfaceDeclaration(node): void {
const fix = isCurrentlyTraversedNodeWithinModuleDeclaration()
? null
: (fixer: TSESLint.RuleFixer): TSESLint.RuleFix[] => {
const typeNode = node.typeParameters ?? node.id;
const fixes: TSESLint.RuleFix[] = [];

const firstToken = sourceCode.getTokenBefore(node.id);
if (firstToken) {
fixes.push(fixer.replaceText(firstToken, 'type'));
fixes.push(
fixer.replaceTextRange(
[typeNode.range[1], node.body.range[0]],
' = ',
),
);
}

if (node.extends) {
node.extends.forEach(heritage => {
const typeIdentifier = sourceCode.getText(heritage);
fixes.push(
fixer.insertTextAfter(node.body, ` & ${typeIdentifier}`),
);
});
}

if (
node.parent?.type === AST_NODE_TYPES.ExportDefaultDeclaration
) {
fixes.push(
fixer.removeRange([node.parent.range[0], node.range[0]]),
fixer.insertTextAfter(
node.body,
`\nexport default ${node.id.name}`,
),
);
}

return fixes;
};
context.report({
node: node.id,
messageId: 'typeOverInterface',
/**
* remove automatically fix when the interface is within a declare global
* @see {@link https://github.com/typescript-eslint/typescript-eslint/issues/2707}
*/
fix: isCurrentlyTraversedNodeWithinModuleDeclaration()
? null
: (fixer): TSESLint.RuleFix[] => {
const typeNode = node.typeParameters ?? node.id;
const fixes: TSESLint.RuleFix[] = [];

const firstToken = sourceCode.getTokenBefore(node.id);
if (firstToken) {
fixes.push(fixer.replaceText(firstToken, 'type'));
fixes.push(
fixer.replaceTextRange(
[typeNode.range[1], node.body.range[0]],
' = ',
),
);
}

if (node.extends) {
node.extends.forEach(heritage => {
const typeIdentifier = sourceCode.getText(heritage);
fixes.push(
fixer.insertTextAfter(
node.body,
` & ${typeIdentifier}`,
),
);
});
}

if (
node.parent?.type ===
AST_NODE_TYPES.ExportDefaultDeclaration
) {
fixes.push(
fixer.removeRange([node.parent.range[0], node.range[0]]),
fixer.insertTextAfter(
node.body,
`\nexport default ${node.id.name}`,
),
);
}

return fixes;
},
fix,
});
},
}),
Expand Down

0 comments on commit fa381f3

Please sign in to comment.