diff --git a/packages/babel-generator/scripts/generate-typescript-tests.js b/packages/babel-generator/scripts/generate-typescript-tests.js new file mode 100644 index 0000000000..208eadd8ab --- /dev/null +++ b/packages/babel-generator/scripts/generate-typescript-tests.js @@ -0,0 +1,55 @@ +/* +Copies tests from babylon's TypeScript test suite to @babel/generator. +*/ +const { + copySync, + emptyDirSync, + existsSync, + readdirSync, + readFileSync, +} = require("fs-extra"); +const { join } = require("path"); + +const testsFrom = join(__dirname, "../../babylon/test/fixtures/typescript"); +const testsTo = join(__dirname, "../test/fixtures/typescript"); + +emptyDirSync(testsTo); + +copySync(join(testsFrom, "options.json"), join(testsTo, "options.json")); + +for (const groupName of readdirSync(testsFrom)) { + if (groupName === "options.json") continue; + + const groupFromDir = join(testsFrom, groupName); + const testNames = readdirSync(groupFromDir); + const groupHasOptions = testNames.includes("options.json"); + + for (const testName of testNames) { + if (testName === "options.json") { + continue; + } + + const testFromDir = join(groupFromDir, testName); + const testToDir = join(testsTo, `${groupName}-${testName}`); + + let optionsJsonFrom; + const ownOptions = join(testFromDir, "options.json"); + if (existsSync(ownOptions)) { + const options = JSON.parse(readFileSync(ownOptions)); + // Don't include a test that doesn't parse or does not provide babel AST + if (options.throws || options.plugins.indexOf("estree") >= 0) { + continue; + } + optionsJsonFrom = ownOptions; + } else if (groupHasOptions) { + // Copy group options to each individual one, since we don't have groups here. + optionsJsonFrom = join(groupFromDir, "options.json"); + } + + emptyDirSync(testToDir); + if (optionsJsonFrom) { + copySync(optionsJsonFrom, join(testToDir, "options.json")); + } + copySync(join(testFromDir, "actual.js"), join(testToDir, "actual.js")); + } +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-abstract/options.json b/packages/babel-generator/test/fixtures/typescript/class-abstract/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-abstract/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-constructor/options.json b/packages/babel-generator/test/fixtures/typescript/class-constructor/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-constructor/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-declare/options.json b/packages/babel-generator/test/fixtures/typescript/class-declare/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-declare/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/options.json b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends-implements/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-extends/options.json b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-extends/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-generic/options.json b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-generic/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-expression-implements/options.json b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-expression-implements/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends-implements/options.json b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends-implements/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-extends/options.json b/packages/babel-generator/test/fixtures/typescript/class-extends/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-extends/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-generic/options.json b/packages/babel-generator/test/fixtures/typescript/class-generic/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-generic/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-get-generic/options.json b/packages/babel-generator/test/fixtures/typescript/class-get-generic/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-get-generic/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-implements/options.json b/packages/babel-generator/test/fixtures/typescript/class-implements/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-implements/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-index-signature/options.json b/packages/babel-generator/test/fixtures/typescript/class-index-signature/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-index-signature/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/options.json b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-modifier-names/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/options.json b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-members-with-reserved-names/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-computed/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-computed/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-computed/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-generic/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-generic/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-generic/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-no-body/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-no-body/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-optional/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-optional/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-optional/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-return-type/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-return-type/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-with-body/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/options.json b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-method-with-newline-without-body/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/options.json b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-accessors/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/options.json b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-methods-async/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/options.json b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-modifiers-properties/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/options.json b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-parameter-properties/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-properties/options.json b/packages/babel-generator/test/fixtures/typescript/class-properties/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-properties/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-property-computed/options.json b/packages/babel-generator/test/fixtures/typescript/class-property-computed/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-property-computed/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/class-static/options.json b/packages/babel-generator/test/fixtures/typescript/class-static/options.json new file mode 100644 index 0000000000..9f3a0c2c0f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/class-static/options.json @@ -0,0 +1,4 @@ +{ + "sourceType": "module", + "plugins": ["typescript", "classProperties"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/options.json b/packages/babel-generator/test/fixtures/typescript/options.json index 9f3a0c2c0f..fe9bffaa5e 100644 --- a/packages/babel-generator/test/fixtures/typescript/options.json +++ b/packages/babel-generator/test/fixtures/typescript/options.json @@ -1,4 +1,4 @@ { "sourceType": "module", - "plugins": ["typescript", "classProperties"] + "plugins": ["typescript"] } diff --git a/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/actual.js b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/actual.js new file mode 100644 index 0000000000..69fc1e55f0 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/actual.js @@ -0,0 +1,3 @@ +export type T = number; +export enum E {} +export interface I {} diff --git a/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/expected.js b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/expected.js new file mode 100644 index 0000000000..3b00804467 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/expected.js @@ -0,0 +1,3 @@ +export type T = number; +export enum E {} +export interface I {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/options.json b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/options.json new file mode 100644 index 0000000000..789d6a6a8f --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/regression-is-default-export/options.json @@ -0,0 +1,3 @@ +{ + "plugins": ["exportExtensions", "typescript"] +} diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/actual.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/actual.js new file mode 100644 index 0000000000..56d367c193 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/actual.js @@ -0,0 +1 @@ +function f< T >() {} \ No newline at end of file diff --git a/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/expected.js b/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/expected.js new file mode 100644 index 0000000000..7cd624bc04 --- /dev/null +++ b/packages/babel-generator/test/fixtures/typescript/type-arguments-whitespace/expected.js @@ -0,0 +1 @@ +function f() {} \ No newline at end of file diff --git a/packages/babel-generator/test/generate-typescript-tests.js b/packages/babel-generator/test/generate-typescript-tests.js deleted file mode 100644 index b7a3219726..0000000000 --- a/packages/babel-generator/test/generate-typescript-tests.js +++ /dev/null @@ -1,69 +0,0 @@ -/* -Copies tests from babylon's TypeScript test suite to @babel/generator. -This script assumes that the "babylon" repository is adjacent to "babel". -*/ - -const { - copySync, - emptyDirSync, - existsSync, - readdirSync, - readFileSync, -} = require("fs-extra"); -const { join } = require("path"); - -if (!module.parent) { - const testsFrom = join( - __dirname, - "..", - "..", - "..", - "..", - "babylon", - "test", - "fixtures", - "typescript", - ); - const testsTo = join(__dirname, "fixtures", "typescript"); - - emptyDirSync(testsTo); - - copySync(join(testsFrom, "options.json"), join(testsTo, "options.json")); - - for (const groupName of readdirSync(testsFrom)) { - if (groupName === "options.json") continue; - - const groupFromDir = join(testsFrom, groupName); - const testNames = readdirSync(groupFromDir); - const groupHasOptions = testNames.includes("options.json"); - - for (const testName of testNames) { - if (testName === "options.json") { - continue; - } - - const testFromDir = join(groupFromDir, testName); - const testToDir = join(testsTo, `${groupName}-${testName}`); - - let optionsJsonFrom; - const ownOptions = join(testFromDir, "options.json"); - if (existsSync(ownOptions)) { - const options = JSON.parse(readFileSync(ownOptions)); - // Don't include a test that doesn't parse. - if (options.throws) { - continue; - } - optionsJsonFrom = ownOptions; - } else if (groupHasOptions) { - // Copy group options to each individual one, since we don't have groups here. - optionsJsonFrom = join(groupFromDir, "options.json"); - } - - emptyDirSync(testToDir); - if (optionsJsonFrom) { - copySync(optionsJsonFrom, join(testToDir, "options.json")); - } - copySync(join(testFromDir, "actual.js"), join(testToDir, "actual.js")); - } - } -}