From fd5492b4ea613c98188f23c9e6c7e0a4998afd07 Mon Sep 17 00:00:00 2001 From: Emanuele Stoppa Date: Sat, 29 Sep 2018 08:47:46 +0100 Subject: [PATCH] chore(test): moved to typescript migrate tests --- package-lock.json | 4 +- package.json | 5 +- .../__snapshots__/migrate.test.js.snap | 158 ---------- .../__snapshots__/migrate.test.ts.snap | 99 ++++++ packages/migrate/__tests__/migrate.test.ts | 42 +-- .../__snapshots__/loaders.test.js.snap | 270 ---------------- .../__testfixtures__/loaders-0.input.js | 65 ---- .../__testfixtures__/loaders-1.input.js | 8 - .../__testfixtures__/loaders-2.input.js | 15 - .../__testfixtures__/loaders-3.input.js | 8 - .../__testfixtures__/loaders-4.input.js | 8 - .../__testfixtures__/loaders-5.input.js | 12 - .../__testfixtures__/loaders-6.input.js | 12 - .../__testfixtures__/loaders-7.input.js | 14 - .../__testfixtures__/loaders-8.input.js | 14 - .../__testfixtures__/loaders-9.input.js | 14 - .../__snapshots__/loaders.test.ts.snap | 290 ++++++++++++++++++ .../__testfixtures__/loaders-0.input.ts | 94 ++++++ .../__testfixtures__/loaders-1.input.ts | 10 + .../__testfixtures__/loaders-2.input.ts | 20 ++ .../__testfixtures__/loaders-3.input.ts | 10 + .../__testfixtures__/loaders-4.input.ts | 10 + .../__testfixtures__/loaders-5.input.ts | 17 + .../__testfixtures__/loaders-6.input.ts | 16 + .../__testfixtures__/loaders-7.input.ts | 14 + .../__testfixtures__/loaders-8.input.ts | 12 + .../__testfixtures__/loaders-9.input.ts | 14 + .../migrate/loaders/__tests__/loaders.test.ts | 12 + packages/migrate/loaders/loaders.test.js | 13 - .../__testfixtures__/outputPath-0.input.js | 5 - .../__testfixtures__/outputPath-1.input.js | 6 - .../__testfixtures__/outputPath-2.input.js | 6 - .../__snapshots__/outputPath.test.ts.snap} | 28 +- .../__testfixtures__/outputPath-0.input.ts | 5 + .../__testfixtures__/outputPath-1.input.ts | 6 + .../__testfixtures__/outputPath-2.input.ts | 6 + .../outputPath/__tests__/outputPath.test.ts | 6 + .../migrate/outputPath/outputPath.test.js | 7 - packages/migrate/outputPath/outputPath.ts | 113 +++---- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../removeDeprecatedPlugins-0.input.js | 6 - .../removeDeprecatedPlugins-1.input.js | 6 - .../removeDeprecatedPlugins-2.input.js | 8 - .../removeDeprecatedPlugins-3.input.js | 7 - .../removeDeprecatedPlugins-4.input.js | 8 - .../removeDeprecatedPlugins.test.ts.snap} | 37 ++- .../removeDeprecatedPlugins-0.input.ts | 5 + .../removeDeprecatedPlugins-1.input.ts | 6 + .../removeDeprecatedPlugins-2.input.ts | 10 + .../removeDeprecatedPlugins-3.input.ts | 9 + .../removeDeprecatedPlugins-4.input.ts | 8 + .../__tests__/removeDeprecatedPlugins.test.ts | 28 ++ .../removeDeprecatedPlugins.test.js | 9 - .../removeDeprecatedPlugins.ts | 55 ++-- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../removeJsonLoader-0.input.js | 19 -- .../removeJsonLoader-1.input.js | 12 - .../removeJsonLoader-2.input.js | 10 - .../removeJsonLoader-3.input.js | 11 - .../removeJsonLoader.test.ts.snap} | 62 ++-- .../removeJsonLoader-0.input.ts | 20 ++ .../removeJsonLoader-1.input.ts | 17 + .../removeJsonLoader-2.input.ts | 10 + .../removeJsonLoader-3.input.ts | 14 + .../__tests__/removeJsonLoader.test.ts | 22 ++ .../removeJsonLoader/removeJsonLoader.test.js | 8 - .../__snapshots__/resolve.test.js.snap | 24 -- .../__testfixtures__/.editorconfig~HEAD | 3 - ...g~ec53c68744edef90a7889cda35f1527442a79450 | 3 - .../resolve/__testfixtures__/resolve.input.js | 20 -- .../__snapshots__/resolve.test.ts.snap | 29 ++ .../__testfixtures__/resolve.input.ts | 25 ++ .../migrate/resolve/__tests__/resolve.test.ts | 4 + packages/migrate/resolve/resolve.test.js | 5 - packages/migrate/types/index.ts | 0 packages/utils/defineTest.ts | 144 ++++----- 78 files changed, 1107 insertions(+), 1037 deletions(-) delete mode 100644 packages/migrate/__snapshots__/migrate.test.js.snap delete mode 100644 packages/migrate/loaders/__snapshots__/loaders.test.js.snap delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-0.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-1.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-2.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-3.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-4.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-5.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-6.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-7.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-8.input.js delete mode 100644 packages/migrate/loaders/__testfixtures__/loaders-9.input.js create mode 100644 packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.ts create mode 100644 packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.ts create mode 100644 packages/migrate/loaders/__tests__/loaders.test.ts delete mode 100644 packages/migrate/loaders/loaders.test.js delete mode 100644 packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js delete mode 100644 packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js delete mode 100644 packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js rename packages/migrate/outputPath/{__snapshots__/outputPath.test.js.snap => __tests__/__snapshots__/outputPath.test.ts.snap} (57%) create mode 100644 packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.ts create mode 100644 packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.ts create mode 100644 packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.ts create mode 100644 packages/migrate/outputPath/__tests__/outputPath.test.ts delete mode 100644 packages/migrate/outputPath/outputPath.test.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js delete mode 100644 packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js rename packages/migrate/removeDeprecatedPlugins/{__snapshots__/removeDeprecatedPlugins.test.js.snap => __tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap} (57%) create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.ts create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.ts create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.ts create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.ts create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.ts create mode 100644 packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts delete mode 100644 packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js delete mode 100644 packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js rename packages/migrate/removeJsonLoader/{__snapshots__/removeJsonLoader.test.js.snap => __tests__/__snapshots__/removeJsonLoader.test.ts.snap} (52%) create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.ts create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.ts create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.ts create mode 100644 packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.ts create mode 100644 packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts delete mode 100644 packages/migrate/removeJsonLoader/removeJsonLoader.test.js delete mode 100644 packages/migrate/resolve/__snapshots__/resolve.test.js.snap delete mode 100644 packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD delete mode 100644 packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 delete mode 100644 packages/migrate/resolve/__testfixtures__/resolve.input.js create mode 100644 packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap create mode 100644 packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.ts create mode 100644 packages/migrate/resolve/__tests__/resolve.test.ts delete mode 100644 packages/migrate/resolve/resolve.test.js delete mode 100644 packages/migrate/types/index.ts diff --git a/package-lock.json b/package-lock.json index 16a230275b0..1aae440c10d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9613,7 +9613,7 @@ }, "is-builtin-module": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", + "resolved": "http://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz", "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=", "dev": true, "requires": { @@ -14203,7 +14203,7 @@ }, "opn": { "version": "4.0.2", - "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz", + "resolved": "http://registry.npmjs.org/opn/-/opn-4.0.2.tgz", "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=", "dev": true, "requires": { diff --git a/package.json b/package.json index 8f604a94be8..e2e854959b4 100644 --- a/package.json +++ b/package.json @@ -41,7 +41,8 @@ "travis:integration": "npm run build && npm run test && npm run reportCoverage", "travis:lint": "lerna bootstrap && npm run build && npm run lint && npm run tslint && npm run bundlesize", "tslint": "tslint -c tslint.json \"packages/**/*.ts\"", - "watch": "npm run build && tsc -w" + "watch": "npm run build && tsc -w", + "test:local": "jest --watch" }, "husky": { "hooks": { @@ -69,7 +70,7 @@ "transform": { "^.+\\.(ts)?$": "ts-jest" }, - "testRegex": "/__tests__/.*\\.(js|ts)$", + "testRegex": "/__tests__/.*\\.(test.js|test.ts)$", "moduleFileExtensions": [ "ts", "js" diff --git a/packages/migrate/__snapshots__/migrate.test.js.snap b/packages/migrate/__snapshots__/migrate.test.js.snap deleted file mode 100644 index 7da8c9cc8a4..00000000000 --- a/packages/migrate/__snapshots__/migrate.test.js.snap +++ /dev/null @@ -1,158 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`transform should not transform if no transformations defined: -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - loaders: [{ - test: /.js$/, - loaders: ['babel'], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - }, - plugins: [ - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ], - debug: true -}; - 1`] = ` -" -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - loaders: [{ - test: /.js$/, - loaders: ['babel'], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - }, - plugins: [ - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ], - debug: true -}; -" -`; - -exports[`transform should respect recast options 1`] = ` -" -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - rules: [{ - test: /.js$/, - use: [{ - loader: \\"babel-loader\\", - }], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - modules: ['node_modules', path.resolve('/src')], - }, - plugins: [new webpack.LoaderOptionsPlugin({ - debug: true, - })], - optimization: { - minimize: true, - } -}; -" -`; - -exports[`transform should transform only using specified transformations 1`] = ` -" -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - rules: [{ - test: /.js$/, - use: [{ - loader: 'babel-loader' - }], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - }, - plugins: [ - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.OccurrenceOrderPlugin() - ], - debug: true -}; -" -`; - -exports[`transform should transform using all transformations 1`] = ` -" -module.exports = { - devtool: 'eval', - entry: [ - './src/index' - ], - output: { - path: path.join(__dirname, 'dist'), - filename: 'index.js' - }, - module: { - rules: [{ - test: /.js$/, - use: [{ - loader: 'babel-loader' - }], - include: path.join(__dirname, 'src') - }] - }, - resolve: { - modules: ['node_modules', path.resolve('/src')] - }, - plugins: [new webpack.LoaderOptionsPlugin({ - debug: true - })], - optimization: { - minimize: true - } -}; -" -`; diff --git a/packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap b/packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap index 766ce380f1a..7da8c9cc8a4 100644 --- a/packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap +++ b/packages/migrate/__tests__/__snapshots__/migrate.test.ts.snap @@ -57,3 +57,102 @@ module.exports = { }; " `; + +exports[`transform should respect recast options 1`] = ` +" +module.exports = { + devtool: 'eval', + entry: [ + './src/index' + ], + output: { + path: path.join(__dirname, 'dist'), + filename: 'index.js' + }, + module: { + rules: [{ + test: /.js$/, + use: [{ + loader: \\"babel-loader\\", + }], + include: path.join(__dirname, 'src') + }] + }, + resolve: { + modules: ['node_modules', path.resolve('/src')], + }, + plugins: [new webpack.LoaderOptionsPlugin({ + debug: true, + })], + optimization: { + minimize: true, + } +}; +" +`; + +exports[`transform should transform only using specified transformations 1`] = ` +" +module.exports = { + devtool: 'eval', + entry: [ + './src/index' + ], + output: { + path: path.join(__dirname, 'dist'), + filename: 'index.js' + }, + module: { + rules: [{ + test: /.js$/, + use: [{ + loader: 'babel-loader' + }], + include: path.join(__dirname, 'src') + }] + }, + resolve: { + root: path.resolve('/src'), + modules: ['node_modules'] + }, + plugins: [ + new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.OccurrenceOrderPlugin() + ], + debug: true +}; +" +`; + +exports[`transform should transform using all transformations 1`] = ` +" +module.exports = { + devtool: 'eval', + entry: [ + './src/index' + ], + output: { + path: path.join(__dirname, 'dist'), + filename: 'index.js' + }, + module: { + rules: [{ + test: /.js$/, + use: [{ + loader: 'babel-loader' + }], + include: path.join(__dirname, 'src') + }] + }, + resolve: { + modules: ['node_modules', path.resolve('/src')] + }, + plugins: [new webpack.LoaderOptionsPlugin({ + debug: true + })], + optimization: { + minimize: true + } +}; +" +`; diff --git a/packages/migrate/__tests__/migrate.test.ts b/packages/migrate/__tests__/migrate.test.ts index 986e2cdf98d..4369f0f86b7 100644 --- a/packages/migrate/__tests__/migrate.test.ts +++ b/packages/migrate/__tests__/migrate.test.ts @@ -30,30 +30,34 @@ module.exports = { `; describe("transform", () => { - it("should not transform if no transformations defined", async () => { - transform(input, []).then((output) => { - expect(output).toMatchSnapshot(input); - }); + it("should not transform if no transformations defined", (done) => { + transform(input, []).then((output) => { + expect(output).toMatchSnapshot(input); + done(); }); + }); - it("should transform using all transformations", async () => { - transform(input).then((output) => { - expect(output).toMatchSnapshot(); - }); + it("should transform using all transformations", (done) => { + transform(input).then((output) => { + expect(output).toMatchSnapshot(); + done(); }); + }); - it("should transform only using specified transformations", async () => { - transform(input, [transformations.loadersTransform]).then((output) => { - expect(output).toMatchSnapshot(); - }); + it("should transform only using specified transformations", (done) => { + transform(input, [transformations.loadersTransform]).then((output) => { + expect(output).toMatchSnapshot(); + done(); }); + }); - it("should respect recast options", async () => { - transform(input, undefined, { - quote: "double", - trailingComma: true, - }).then((output) => { - expect(output).toMatchSnapshot(); - }); + it("should respect recast options", (done) => { + transform(input, undefined, { + quote: "double", + trailingComma: true, + }).then((output) => { + expect(output).toMatchSnapshot(); + done(); }); + }); }); diff --git a/packages/migrate/loaders/__snapshots__/loaders.test.js.snap b/packages/migrate/loaders/__snapshots__/loaders.test.js.snap deleted file mode 100644 index 7fa15906328..00000000000 --- a/packages/migrate/loaders/__snapshots__/loaders.test.js.snap +++ /dev/null @@ -1,270 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`loaders transforms correctly using "loaders-0" data 1`] = ` -"export default [{ - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }] - } -}, { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }] - }] - } -}, { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - options: { - modules: true - } - }] - }] - } -}, { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -}, { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -}, { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -}, { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -}]; -" -`; - -exports[`loaders transforms correctly using "loaders-1" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }] - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-2" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.css$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - options: { - modules: true - } - }] - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-3" data 1`] = ` -"export default { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-4" data 1`] = ` -"export default { - module: { - rules:[{ - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-5" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'eslint-loader' - }], - - enforce: 'pre' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-6" data 1`] = ` -"export default { - module: { - rules: [{ - test: /\\\\.js$/, - use: [{ - loader: 'babel-loader' - }] - }, { - test: /\\\\.js$/, - - use: [{ - loader: 'my-post-loader' - }], - - enforce: 'post' - }] - } -} -" -`; - -exports[`loaders transforms correctly using "loaders-7" data 1`] = ` -"export default { - module: { - rules: [ - { - test: /\\\\.js$/, - exclude: /(node_modules)/, - - use: [{ - loader: 'babel-loader', - - options: { - presets: ['env'] - } - }] - } - ] - } -}; -" -`; - -exports[`loaders transforms correctly using "loaders-8" data 1`] = ` -"module.exports = { - module: { - rules: [ - { - test: /\\\\.js$/, - use: [{ - loader: 'style-loader' - }, { - loader: 'css-loader', - - options: { - modules: true, - importLoaders: 1, - string: 'test123' - } - }], - include: path.join(__dirname, 'src') - } - ] - } -} -" -`; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-0.input.js b/packages/migrate/loaders/__testfixtures__/loaders-0.input.js deleted file mode 100644 index e0d498f6506..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-0.input.js +++ /dev/null @@ -1,65 +0,0 @@ -export default [{ - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel' - }] - } -}, { - module: { - loaders: [{ - test: /\.css$/, - loader: 'style!css?modules&importLoaders=1&string=test123' - }] - } -}, { - module: { - loaders: [{ - test: /\.css$/, - loaders: [{ - loader: 'style' - }, { - loader: 'css', - query: { - modules: true - } - }] - }] - } -}, { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint' - }] - } -}, { - module: { - postLoaders:[{ - test: /\.js$/, - loader: 'my-post' - }] - } -}, { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint-loader' - }], - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }] - } -}, { - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }], - postLoaders:[{ - test: /\.js$/, - loader: 'my-post-loader' - }] - } -}]; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-1.input.js b/packages/migrate/loaders/__testfixtures__/loaders-1.input.js deleted file mode 100644 index eae75024e61..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-1.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.css$/, - loader: 'style!css?modules&importLoaders=1&string=test123' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-2.input.js b/packages/migrate/loaders/__testfixtures__/loaders-2.input.js deleted file mode 100644 index 771404a300c..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-2.input.js +++ /dev/null @@ -1,15 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.css$/, - loaders: [{ - loader: 'style' - }, { - loader: 'css', - query: { - modules: true - } - }] - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-3.input.js b/packages/migrate/loaders/__testfixtures__/loaders-3.input.js deleted file mode 100644 index 4d49e89a89b..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-3.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-4.input.js b/packages/migrate/loaders/__testfixtures__/loaders-4.input.js deleted file mode 100644 index cc3e076bed9..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-4.input.js +++ /dev/null @@ -1,8 +0,0 @@ -export default { - module: { - postLoaders:[{ - test: /\.js$/, - loader: 'my-post' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-5.input.js b/packages/migrate/loaders/__testfixtures__/loaders-5.input.js deleted file mode 100644 index 6fd315e4d08..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-5.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - preLoaders:[{ - test: /\.js$/, - loader: 'eslint-loader' - }], - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-6.input.js b/packages/migrate/loaders/__testfixtures__/loaders-6.input.js deleted file mode 100644 index 184e4e1ad08..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-6.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - loaders: [{ - test: /\.js$/, - loader: 'babel-loader' - }], - postLoaders:[{ - test: /\.js$/, - loader: 'my-post-loader' - }] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-7.input.js b/packages/migrate/loaders/__testfixtures__/loaders-7.input.js deleted file mode 100644 index f3c2915e2f8..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-7.input.js +++ /dev/null @@ -1,14 +0,0 @@ -export default { - module: { - loaders: [ - { - test: /\.js$/, - exclude: /(node_modules)/, - loader: 'babel-loader', - query: { - presets: ['env'] - } - } - ] - } -}; diff --git a/packages/migrate/loaders/__testfixtures__/loaders-8.input.js b/packages/migrate/loaders/__testfixtures__/loaders-8.input.js deleted file mode 100644 index 737e4515fca..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-8.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - module: { - loaders: [ - { - test: /\.js$/, - loaders: [ - 'style', - 'css?modules&importLoaders=1&string=test123' - ], - include: path.join(__dirname, 'src') - } - ] - } -} diff --git a/packages/migrate/loaders/__testfixtures__/loaders-9.input.js b/packages/migrate/loaders/__testfixtures__/loaders-9.input.js deleted file mode 100644 index 0bf440bce28..00000000000 --- a/packages/migrate/loaders/__testfixtures__/loaders-9.input.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - module: { - loaders: [ - { - test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/], - loader: 'url-loader', - options: { - limit: 10000, - name: 'static/media/[name].[hash:8].[ext]' - } - } - ] - } -} diff --git a/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap b/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap new file mode 100644 index 00000000000..7d170d4c435 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__snapshots__/loaders.test.ts.snap @@ -0,0 +1,290 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`loaders transforms correctly using "loaders-0" data 1`] = ` +"export default [ + { + module: { + rules: [ + { + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.css$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'style-loader', + }, { + loader: 'css-loader', + options: { + modules: true, + }, + }], + test: /\\\\.css$/, + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }, + ], + }, + }, + { + module: { + rules: [ + { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }, + ], + }, + }, + { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }] + }, + }, + { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }] + }, + }, +]; +" +`; + +exports[`loaders transforms correctly using "loaders-1" data 1`] = ` +"export default { + module: { + rules: [ + { + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.css$/, + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-2" data 1`] = ` +"export default { + module: { + rules: [ + { + use: [{ + loader: 'style-loader', + }, { + loader: 'css-loader', + options: { + modules: true, + }, + }], + test: /\\\\.css$/, + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-3" data 1`] = ` +"export default { + module: { + rules: [ + { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-4" data 1`] = ` +"export default { + module: { + rules: [ + { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-5" data 1`] = ` +"export default { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'eslint-loader' + }], + + test: /\\\\.js$/, + enforce: 'pre' + }] + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-6" data 1`] = ` +"export default { + module: { + rules: [{ + use: [{ + loader: 'babel-loader' + }], + test: /\\\\.js$/, + }, { + use: [{ + loader: 'my-post-loader' + }], + + test: /\\\\.js$/, + enforce: 'post' + }] + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-7" data 1`] = ` +"export default { + module: { + rules: [ + { + exclude: /(node_modules)/, + + use: [{ + loader: 'babel-loader', + + options: { + presets: [\\"env\\"], + } + }], + + test: /\\\\.js$/ + }, + ], + }, +}; +" +`; + +exports[`loaders transforms correctly using "loaders-8" data 1`] = ` +"import * as path from \\"path\\"; +module.exports = { + module: { + rules: [ + { + include: path.join(__dirname, \\"src\\"), + use: [{ + loader: 'style-loader' + }, { + loader: 'css-loader', + + options: { + modules: true, + importLoaders: 1, + string: 'test123' + } + }], + test: /\\\\.js$/, + }, + ], + }, +}; +" +`; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.ts new file mode 100644 index 00000000000..aa192c06157 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-0.input.ts @@ -0,0 +1,94 @@ +export default [ + { + module: { + loaders: [ + { + loader: "babel", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "style!css?modules&importLoaders=1&string=test123", + test: /\.css$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loaders: [ + { + loader: "style", + }, + { + loader: "css", + query: { + modules: true, + }, + }, + ], + test: /\.css$/, + }, + ], + }, + }, + { + module: { + preLoaders: [ + { + loader: "eslint", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + postLoaders: [ + { + loader: "my-post", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + preLoaders: [ + { + loader: "eslint-loader", + test: /\.js$/, + }, + ], + }, + }, + { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + postLoaders: [ + { + loader: "my-post-loader", + test: /\.js$/, + }, + ], + }, + }, +]; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.ts new file mode 100644 index 00000000000..64bced753e4 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-1.input.ts @@ -0,0 +1,10 @@ +export default { + module: { + loaders: [ + { + loader: "style!css?modules&importLoaders=1&string=test123", + test: /\.css$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.ts new file mode 100644 index 00000000000..1dcd9a55334 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-2.input.ts @@ -0,0 +1,20 @@ +export default { + module: { + loaders: [ + { + loaders: [ + { + loader: "style", + }, + { + loader: "css", + query: { + modules: true, + }, + }, + ], + test: /\.css$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.ts new file mode 100644 index 00000000000..43c2ada1ea9 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-3.input.ts @@ -0,0 +1,10 @@ +export default { + module: { + preLoaders: [ + { + loader: "eslint", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.ts new file mode 100644 index 00000000000..117ccfdcf4e --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-4.input.ts @@ -0,0 +1,10 @@ +export default { + module: { + postLoaders: [ + { + loader: "my-post", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.ts new file mode 100644 index 00000000000..42266dafbc4 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-5.input.ts @@ -0,0 +1,17 @@ +export default { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + + preLoaders: [ + { + loader: "eslint-loader", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.ts new file mode 100644 index 00000000000..4840f5be1d7 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-6.input.ts @@ -0,0 +1,16 @@ +export default { + module: { + loaders: [ + { + loader: "babel-loader", + test: /\.js$/, + }, + ], + postLoaders: [ + { + loader: "my-post-loader", + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.ts new file mode 100644 index 00000000000..dc7122ebfe7 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-7.input.ts @@ -0,0 +1,14 @@ +export default { + module: { + loaders: [ + { + exclude: /(node_modules)/, + loader: "babel-loader", + query: { + presets: ["env"], + }, + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.ts new file mode 100644 index 00000000000..ef4bb00b9d1 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-8.input.ts @@ -0,0 +1,12 @@ +import * as path from "path"; +module.exports = { + module: { + loaders: [ + { + include: path.join(__dirname, "src"), + loaders: ["style", "css?modules&importLoaders=1&string=test123"], + test: /\.js$/, + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.ts b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.ts new file mode 100644 index 00000000000..d100038d9a6 --- /dev/null +++ b/packages/migrate/loaders/__tests__/__testfixtures__/loaders-9.input.ts @@ -0,0 +1,14 @@ +module.exports = { + module: { + loaders: [ + { + loader: "url-loader", + options: { + limit: 10000, + name: "static/media/[name].[hash:8].[ext]", + }, + test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/], + }, + ], + }, +}; diff --git a/packages/migrate/loaders/__tests__/loaders.test.ts b/packages/migrate/loaders/__tests__/loaders.test.ts new file mode 100644 index 00000000000..c3cf6373871 --- /dev/null +++ b/packages/migrate/loaders/__tests__/loaders.test.ts @@ -0,0 +1,12 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +defineTest(join(__dirname, ".."), "loaders", "loaders-0"); +defineTest(join(__dirname, ".."), "loaders", "loaders-1"); +defineTest(join(__dirname, ".."), "loaders", "loaders-2"); +defineTest(join(__dirname, ".."), "loaders", "loaders-3"); +defineTest(join(__dirname, ".."), "loaders", "loaders-4"); +defineTest(join(__dirname, ".."), "loaders", "loaders-5"); +defineTest(join(__dirname, ".."), "loaders", "loaders-6"); +defineTest(join(__dirname, ".."), "loaders", "loaders-7"); +defineTest(join(__dirname, ".."), "loaders", "loaders-8"); diff --git a/packages/migrate/loaders/loaders.test.js b/packages/migrate/loaders/loaders.test.js deleted file mode 100644 index 4dc548b6bc3..00000000000 --- a/packages/migrate/loaders/loaders.test.js +++ /dev/null @@ -1,13 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "loaders", "loaders-0"); -defineTest(__dirname, "loaders", "loaders-1"); -defineTest(__dirname, "loaders", "loaders-2"); -defineTest(__dirname, "loaders", "loaders-3"); -defineTest(__dirname, "loaders", "loaders-4"); -defineTest(__dirname, "loaders", "loaders-5"); -defineTest(__dirname, "loaders", "loaders-6"); -defineTest(__dirname, "loaders", "loaders-7"); -defineTest(__dirname, "loaders", "loaders-8"); diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js b/packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js deleted file mode 100644 index 085268fadbe..00000000000 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-0.input.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - output: { - path: 'dist' - } -} diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js b/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js deleted file mode 100644 index c7a0ed58e7a..00000000000 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -const path = require('path'); -module.exports = { - output: { - path: path.join(__dirname, 'dist') - } -} diff --git a/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js b/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js deleted file mode 100644 index de8436ae6c3..00000000000 --- a/packages/migrate/outputPath/__testfixtures__/outputPath-2.input.js +++ /dev/null @@ -1,6 +0,0 @@ -const p = require('path'); -module.exports = { - output: { - path: 'dist' - } -} diff --git a/packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap b/packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap similarity index 57% rename from packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap rename to packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap index 27e07047768..851dcbcb42d 100644 --- a/packages/migrate/outputPath/__snapshots__/outputPath.test.js.snap +++ b/packages/migrate/outputPath/__tests__/__snapshots__/outputPath.test.ts.snap @@ -2,29 +2,29 @@ exports[`outputPath transforms correctly using "outputPath-0" data 1`] = ` "module.exports = { - output: { - path: path.join(__dirname, 'dist') - } -} + output: { + path: path.join(__dirname, \\"dist\\"), + }, +}; " `; exports[`outputPath transforms correctly using "outputPath-1" data 1`] = ` -"const path = require('path'); +"import * as path from \\"path\\"; module.exports = { - output: { - path: path.join(__dirname, 'dist') - } -} + output: { + path: path.join(__dirname, \\"dist\\"), + }, +}; " `; exports[`outputPath transforms correctly using "outputPath-2" data 1`] = ` -"const p = require('path'); +"import * as path from \\"path\\"; module.exports = { - output: { - path: p.join(__dirname, 'dist') - } -} + output: { + path: path.join(__dirname, \\"dist\\"), + }, +}; " `; diff --git a/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.ts b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.ts new file mode 100644 index 00000000000..e111b266b50 --- /dev/null +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-0.input.ts @@ -0,0 +1,5 @@ +module.exports = { + output: { + path: "dist", + }, +}; diff --git a/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.ts b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.ts new file mode 100644 index 00000000000..12117f5c3e1 --- /dev/null +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-1.input.ts @@ -0,0 +1,6 @@ +import * as path from "path"; +module.exports = { + output: { + path: path.join(__dirname, "dist"), + }, +}; diff --git a/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.ts b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.ts new file mode 100644 index 00000000000..eace16103ce --- /dev/null +++ b/packages/migrate/outputPath/__tests__/__testfixtures__/outputPath-2.input.ts @@ -0,0 +1,6 @@ +import * as path from "path"; +module.exports = { + output: { + path: "dist", + }, +}; diff --git a/packages/migrate/outputPath/__tests__/outputPath.test.ts b/packages/migrate/outputPath/__tests__/outputPath.test.ts new file mode 100644 index 00000000000..434b3b5bf71 --- /dev/null +++ b/packages/migrate/outputPath/__tests__/outputPath.test.ts @@ -0,0 +1,6 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +defineTest(join(__dirname, ".."), "outputPath", "outputPath-0"); +defineTest(join(__dirname, ".."), "outputPath", "outputPath-1"); +defineTest(join(__dirname, ".."), "outputPath", "outputPath-2"); diff --git a/packages/migrate/outputPath/outputPath.test.js b/packages/migrate/outputPath/outputPath.test.js deleted file mode 100644 index f103e99a09e..00000000000 --- a/packages/migrate/outputPath/outputPath.test.js +++ /dev/null @@ -1,7 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "outputPath", "outputPath-0"); -defineTest(__dirname, "outputPath", "outputPath-1"); -defineTest(__dirname, "outputPath", "outputPath-2"); diff --git a/packages/migrate/outputPath/outputPath.ts b/packages/migrate/outputPath/outputPath.ts index e5038b3c9a0..5e88223d808 100644 --- a/packages/migrate/outputPath/outputPath.ts +++ b/packages/migrate/outputPath/outputPath.ts @@ -12,68 +12,77 @@ import { IJSCodeshift, INode } from "../types/NodePath"; */ export default function(j: IJSCodeshift, ast: INode): INode | void { + const literalOutputPath: INode = ast + .find(j.ObjectExpression) + .filter( + (p: INode): boolean => + utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === + "output", + ) + .find(j.Property) + .filter( + (p: INode): boolean => + utils.safeTraverse(p, ["value", "key", "name"]) === "path" && + utils.safeTraverse(p, ["value", "value", "type"]) === "Literal", + ); - const literalOutputPath: INode = ast - .find(j.ObjectExpression) + if (literalOutputPath) { + let pathVarName = "path"; + let isPathPresent = false; + const pathDeclaration: INode = ast + .find(j.VariableDeclarator) .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["parentPath", "value", "key", "name"]) === - "output", + (p: INode): boolean => + utils.safeTraverse(p, ["value", "init", "callee", "name"]) === + "require", ) - .find(j.Property) .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "key", "name"]) === "path" && - utils.safeTraverse(p, ["value", "value", "type"]) === "Literal", + (p: INode): boolean => + utils.safeTraverse(p, ["value", "init", "arguments"]) && + p.value.init.arguments.reduce( + (isPresent: boolean, a: INode): boolean => { + return (a.type === "Literal" && a.value === "path") || isPresent; + }, + false, + ), ); - if (literalOutputPath) { - let pathVarName = "path"; - let isPathPresent = false; - const pathDeclaration: INode = ast - .find(j.VariableDeclarator) - .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "init", "callee", "name"]) === - "require", - ) - .filter( - (p: INode): boolean => - utils.safeTraverse(p, ["value", "init", "arguments"]) && - p.value.init.arguments.reduce((isPresent: boolean, a: INode): boolean => { - return (a.type === "Literal" && a.value === "path") || isPresent; - }, false), - ); - - if (pathDeclaration) { - isPathPresent = true; - pathDeclaration.forEach((p: INode): void => { - pathVarName = utils.safeTraverse(p, ["value", "id", "name"]); - }); - } - const finalPathName = pathVarName; - literalOutputPath - .find(j.Literal) - .replaceWith((p: INode): INode => replaceWithPath(j, p, finalPathName)); + if (pathDeclaration) { + isPathPresent = true; + pathDeclaration.forEach( + (p: INode): void => { + pathVarName = utils.safeTraverse(p, ["value", "id", "name"]); + }, + ); + } + const finalPathName = pathVarName; + literalOutputPath + .find(j.Literal) + .replaceWith((p: INode): INode => replaceWithPath(j, p, finalPathName)); - if (!isPathPresent) { - const pathRequire: INode = utils.getRequire(j, "path", "path"); - return ast - .find(j.Program) - .replaceWith((p: INode): INode => - j.program([].concat(pathRequire).concat(p.value.body)), - ); - } + if (!isPathPresent) { + const pathRequire: INode = utils.getRequire(j, "path", "path"); + return ast + .find(j.Program) + .replaceWith( + (p: INode): INode => + j.program([].concat(pathRequire).concat(p.value.body)), + ); } + } - return ast; + return ast; } -function replaceWithPath(j: IJSCodeshift, p: INode, pathVarName: string): INode { - const convertedPath: INode = j.callExpression( - j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false), - [j.identifier("__dirname"), p.value], - ); +function replaceWithPath( + j: IJSCodeshift, + p: INode, + pathVarName: string, +): INode { + const convertedPath: INode = j.callExpression( + j.memberExpression(j.identifier(pathVarName), j.identifier("join"), false), + [j.identifier("__dirname"), p.value], + ); - return convertedPath; + return convertedPath; } diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js deleted file mode 100644 index 133c4984bfd..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-0.input.js +++ /dev/null @@ -1,6 +0,0 @@ -// Works for OccurrenceOrderPlugin -module.exports = { - plugins: [ - new webpack.optimize.OccurrenceOrderPlugin(), - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js deleted file mode 100644 index a64dab79b37..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-1.input.js +++ /dev/null @@ -1,6 +0,0 @@ -// Works for DedupePlugin -module.exports = { - plugins: [ - new webpack.optimize.DedupePlugin(), - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js deleted file mode 100644 index 26150117db4..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-2.input.js +++ /dev/null @@ -1,8 +0,0 @@ -// Doesn't remove unmatched plugins -module.exports = { - plugins: [ - new webpack.optimize.OccurrenceOrderPlugin(), - new webpack.optimize.UglifyJsPlugin(), - new webpack.optimize.DedupePlugin() - ] -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js deleted file mode 100644 index 1d5194460e3..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-3.input.js +++ /dev/null @@ -1,7 +0,0 @@ -// This should throw -export default (config) => { - config.plugins.push(new webpack.optimize.UglifyJsPlugin()); - config.plugins.push(new webpack.optimize.DedupePlugin()); - config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); - return config -} diff --git a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js b/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js deleted file mode 100644 index fab47caf971..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/__testfixtures__/removeDeprecatedPlugins-4.input.js +++ /dev/null @@ -1,8 +0,0 @@ -// This should throw -const inst = new webpack.optimize.OccurrenceOrderPlugin() -export default (config) => { - config.plugins = [ - inst - ] - return config -} diff --git a/packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap b/packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap similarity index 57% rename from packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap rename to packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap index 550faf1fba2..d459445a8fe 100644 --- a/packages/migrate/removeDeprecatedPlugins/__snapshots__/removeDeprecatedPlugins.test.js.snap +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__snapshots__/removeDeprecatedPlugins.test.ts.snap @@ -2,43 +2,50 @@ exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-0" data 1`] = ` "// Works for OccurrenceOrderPlugin -module.exports = {} +import webpack from \\"webpack\\"; +module.exports = {}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-1" data 1`] = ` "// Works for DedupePlugin -module.exports = {} +import webpack from \\"webpack\\"; + +module.exports = {}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-2" data 1`] = ` "// Doesn't remove unmatched plugins +import webpack from \\"webpack\\"; + module.exports = { - plugins: [new webpack.optimize.UglifyJsPlugin()] -} + plugins: [new webpack.optimize.UglifyJsPlugin()], +}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-3" data 1`] = ` "// This should throw +import webpack from \\"webpack\\"; + export default (config) => { - config.plugins.push(new webpack.optimize.UglifyJsPlugin()); - config.plugins.push(new webpack.optimize.DedupePlugin()); - config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); - return config -} + config.plugins.push(new webpack.optimize.UglifyJsPlugin()); + config.plugins.push(new webpack.optimize.DedupePlugin()); + config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); + return config; +}; " `; exports[`removeDeprecatedPlugins transforms correctly using "removeDeprecatedPlugins-4" data 1`] = ` "// This should throw -const inst = new webpack.optimize.OccurrenceOrderPlugin() +import webpack from \\"webpack\\"; + +const inst = new webpack.optimize.OccurrenceOrderPlugin(); export default (config) => { - config.plugins = [ - inst - ] - return config -} + config.plugins = [inst]; + return config; +}; " `; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.ts new file mode 100644 index 00000000000..c67bac6b636 --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-0.input.ts @@ -0,0 +1,5 @@ +// Works for OccurrenceOrderPlugin +import webpack from "webpack"; +module.exports = { + plugins: [new webpack.optimize.OccurrenceOrderPlugin()], +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.ts new file mode 100644 index 00000000000..6a34f8b5f99 --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-1.input.ts @@ -0,0 +1,6 @@ +// Works for DedupePlugin +import webpack from "webpack"; + +module.exports = { + plugins: [new webpack.optimize.DedupePlugin()], +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.ts new file mode 100644 index 00000000000..cf7235f8883 --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-2.input.ts @@ -0,0 +1,10 @@ +// Doesn't remove unmatched plugins +import webpack from "webpack"; + +module.exports = { + plugins: [ + new webpack.optimize.OccurrenceOrderPlugin(), + new webpack.optimize.UglifyJsPlugin(), + new webpack.optimize.DedupePlugin(), + ], +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.ts new file mode 100644 index 00000000000..63f88411213 --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-3.input.ts @@ -0,0 +1,9 @@ +// This should throw +import webpack from "webpack"; + +export default (config) => { + config.plugins.push(new webpack.optimize.UglifyJsPlugin()); + config.plugins.push(new webpack.optimize.DedupePlugin()); + config.plugins.push(new webpack.optimize.OccurrenceOrderPlugin()); + return config; +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.ts new file mode 100644 index 00000000000..add2a9ad67b --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/__testfixtures__/removeDeprecatedPlugins-4.input.ts @@ -0,0 +1,8 @@ +// This should throw +import webpack from "webpack"; + +const inst = new webpack.optimize.OccurrenceOrderPlugin(); +export default (config) => { + config.plugins = [inst]; + return config; +}; diff --git a/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts b/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts new file mode 100644 index 00000000000..7d148be133b --- /dev/null +++ b/packages/migrate/removeDeprecatedPlugins/__tests__/removeDeprecatedPlugins.test.ts @@ -0,0 +1,28 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import { join } from "path"; + +defineTest( + join(__dirname, ".."), + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-0", +); +defineTest( + join(__dirname, ".."), + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-1", +); +defineTest( + join(__dirname, ".."), + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-2", +); +defineTest( + join(__dirname, ".."), + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-3", +); +defineTest( + join(__dirname, ".."), + "removeDeprecatedPlugins", + "removeDeprecatedPlugins-4", +); diff --git a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js deleted file mode 100644 index e881f02428f..00000000000 --- a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.test.js +++ /dev/null @@ -1,9 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-0"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-1"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-2"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-3"); -defineTest(__dirname, "removeDeprecatedPlugins", "removeDeprecatedPlugins-4"); diff --git a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts index 5d83f3cce0a..01030eb7686 100644 --- a/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts +++ b/packages/migrate/removeDeprecatedPlugins/removeDeprecatedPlugins.ts @@ -15,35 +15,36 @@ import { IJSCodeshift, INode } from "../types/NodePath"; */ export default function(j: IJSCodeshift, ast: INode) { + // List of deprecated plugins to remove + // each item refers to webpack.optimize.[NAME] construct + const deprecatedPlugingsList: string[] = [ + "webpack.optimize.OccurrenceOrderPlugin", + "webpack.optimize.DedupePlugin", + ]; - // List of deprecated plugins to remove - // each item refers to webpack.optimize.[NAME] construct - const deprecatedPlugingsList: string[] = [ - "webpack.optimize.OccurrenceOrderPlugin", - "webpack.optimize.DedupePlugin", - ]; + return utils.findPluginsByName(j, ast, deprecatedPlugingsList).forEach( + (path: INode): void => { + // For now we only support the case where plugins are defined in an Array + const arrayPath: INode = utils.safeTraverse(path, ["parent", "value"]); - return utils - .findPluginsByName(j, ast, deprecatedPlugingsList) - .forEach((path: INode): void => { - // For now we only support the case where plugins are defined in an Array - const arrayPath: INode = utils.safeTraverse(path, ["parent", "value"]); - - if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) { - // Check how many plugins are defined and - // if there is only last plugin left remove `plugins: []` node - const arrayElementsPath: INode[] = utils.safeTraverse(arrayPath, ["elements"]); - if (arrayElementsPath && arrayElementsPath.length === 1) { - j(path.parent.parent).remove(); - } else { - j(path).remove(); - } - } else { - console.error(` + if (arrayPath && utils.isType(arrayPath, "ArrayExpression")) { + // Check how many plugins are defined and + // if there is only last plugin left remove `plugins: []` node + const arrayElementsPath: INode[] = utils.safeTraverse(arrayPath, [ + "elements", + ]); + if (arrayElementsPath && arrayElementsPath.length === 1) { + j(path.parent.parent).remove(); + } else { + j(path).remove(); + } + } else { + console.error(` ${chalk.red("Please remove deprecated plugins manually. ")} See ${chalk.underline( - "https://webpack.js.org/guides/migrating/", - )} for more information.`); - } - }); + "https://webpack.js.org/guides/migrating/", + )} for more information.`); + } + }, + ); } diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD b/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js deleted file mode 100644 index 48517948142..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-0.input.js +++ /dev/null @@ -1,19 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.yml/, - use: [ - { - loader: 'json-loader' - }, - { - loader: 'another-loader' - }, - { - loader: 'yml-loader' - } - ] - }] - } -} - diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js deleted file mode 100644 index 1040b5ff919..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-1.input.js +++ /dev/null @@ -1,12 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.yml/, - use: [{ - loader: 'json-loader' - }, { - loader: 'yml-loader' - }] - }] - } -} diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js deleted file mode 100644 index 39b473705d0..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-2.input.js +++ /dev/null @@ -1,10 +0,0 @@ -export default { - module: { - rules: [ - { - test: /\.json/, - loader: 'json-loader' - } - ] - } -} diff --git a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js b/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js deleted file mode 100644 index be47fd92ee2..00000000000 --- a/packages/migrate/removeJsonLoader/__testfixtures__/removeJsonLoader-3.input.js +++ /dev/null @@ -1,11 +0,0 @@ -export default { - module: { - rules: [{ - test: /\.json/, - use: [{ - loader: 'json-loader' - }] - }] - } -} - diff --git a/packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap b/packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap similarity index 52% rename from packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap rename to packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap index e5153cd3412..7f0e1cb3fc7 100644 --- a/packages/migrate/removeJsonLoader/__snapshots__/removeJsonLoader.test.js.snap +++ b/packages/migrate/removeJsonLoader/__tests__/__snapshots__/removeJsonLoader.test.ts.snap @@ -2,50 +2,52 @@ exports[`removeJsonLoader transforms correctly using "removeJsonLoader-0" data 1`] = ` "export default { - module: { - rules: [{ - test: /\\\\.yml/, - use: [{ - loader: 'another-loader' - }, { - loader: 'yml-loader' - }] - }] - } -} - + module: { + rules: [ + { + test: /\\\\.yml/, + use: [{ + loader: \\"another-loader\\", + }, { + loader: \\"yml-loader\\", + }], + }, + ], + }, +}; " `; exports[`removeJsonLoader transforms correctly using "removeJsonLoader-1" data 1`] = ` "export default { - module: { - rules: [{ - test: /\\\\.yml/, - use: [{ - loader: 'yml-loader' - }] - }] - } -} + module: { + rules: [ + { + test: /\\\\.yml/, + use: [{ + loader: \\"yml-loader\\", + }], + }, + ], + }, +}; " `; exports[`removeJsonLoader transforms correctly using "removeJsonLoader-2" data 1`] = ` "export default { - module: { - rules: [] - } -} + module: { + rules: [], + }, +}; " `; exports[`removeJsonLoader transforms correctly using "removeJsonLoader-3" data 1`] = ` "export default { - module: { - rules: [] - } -} - + module: { + rules: [], + }, +}; " `; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.ts b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.ts new file mode 100644 index 00000000000..3fdaec96b28 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-0.input.ts @@ -0,0 +1,20 @@ +export default { + module: { + rules: [ + { + test: /\.yml/, + use: [ + { + loader: "json-loader", + }, + { + loader: "another-loader", + }, + { + loader: "yml-loader", + }, + ], + }, + ], + }, +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.ts b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.ts new file mode 100644 index 00000000000..b2b1031b7bc --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-1.input.ts @@ -0,0 +1,17 @@ +export default { + module: { + rules: [ + { + test: /\.yml/, + use: [ + { + loader: "json-loader", + }, + { + loader: "yml-loader", + }, + ], + }, + ], + }, +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.ts b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.ts new file mode 100644 index 00000000000..d9dfa19b162 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-2.input.ts @@ -0,0 +1,10 @@ +export default { + module: { + rules: [ + { + loader: "json-loader", + test: /\.json/, + }, + ], + }, +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.ts b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.ts new file mode 100644 index 00000000000..c52db6684f7 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/__testfixtures__/removeJsonLoader-3.input.ts @@ -0,0 +1,14 @@ +export default { + module: { + rules: [ + { + test: /\.json/, + use: [ + { + loader: "json-loader", + }, + ], + }, + ], + }, +}; diff --git a/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts b/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts new file mode 100644 index 00000000000..4251a6b2119 --- /dev/null +++ b/packages/migrate/removeJsonLoader/__tests__/removeJsonLoader.test.ts @@ -0,0 +1,22 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import * as path from "path"; +defineTest( + path.join(__dirname, ".."), + "removeJsonLoader", + "removeJsonLoader-0", +); +defineTest( + path.join(__dirname, ".."), + "removeJsonLoader", + "removeJsonLoader-1", +); +defineTest( + path.join(__dirname, ".."), + "removeJsonLoader", + "removeJsonLoader-2", +); +defineTest( + path.join(__dirname, ".."), + "removeJsonLoader", + "removeJsonLoader-3", +); diff --git a/packages/migrate/removeJsonLoader/removeJsonLoader.test.js b/packages/migrate/removeJsonLoader/removeJsonLoader.test.js deleted file mode 100644 index 82e38804c86..00000000000 --- a/packages/migrate/removeJsonLoader/removeJsonLoader.test.js +++ /dev/null @@ -1,8 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-0"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-1"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-2"); -defineTest(__dirname, "removeJsonLoader", "removeJsonLoader-3"); diff --git a/packages/migrate/resolve/__snapshots__/resolve.test.js.snap b/packages/migrate/resolve/__snapshots__/resolve.test.js.snap deleted file mode 100644 index 820fc965a13..00000000000 --- a/packages/migrate/resolve/__snapshots__/resolve.test.js.snap +++ /dev/null @@ -1,24 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`resolve transforms correctly 1`] = ` -"import path from 'path'; - -export default [{ - resolve: { - modules: [path.resolve('/src')] - } -}, { - resolve: { - modules: [path.resolve('/src')] - } -}, { - resolve: { - modules: [path.resolve('/src'), 'node_modules'] - } -}, { - resolve: { - modules: ['node_modules', path.resolve('/src')] - } -}]; -" -`; diff --git a/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD b/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/resolve/__testfixtures__/.editorconfig~HEAD +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 b/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 deleted file mode 100644 index adbdb1ba476..00000000000 --- a/packages/migrate/resolve/__testfixtures__/.editorconfig~ec53c68744edef90a7889cda35f1527442a79450 +++ /dev/null @@ -1,3 +0,0 @@ -[*] -indent_style = space -indent_size = 4 diff --git a/packages/migrate/resolve/__testfixtures__/resolve.input.js b/packages/migrate/resolve/__testfixtures__/resolve.input.js deleted file mode 100644 index 2b83fcf26ce..00000000000 --- a/packages/migrate/resolve/__testfixtures__/resolve.input.js +++ /dev/null @@ -1,20 +0,0 @@ -import path from 'path'; - -export default [{ - resolve: { - root: path.resolve('/src') - } -}, { - resolve: { - root: [path.resolve('/src')] - } -}, { - resolve: { - root: [path.resolve('/src'), 'node_modules'] - } -}, { - resolve: { - root: path.resolve('/src'), - modules: ['node_modules'] - } -}]; diff --git a/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap b/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap new file mode 100644 index 00000000000..ba6af31fcb2 --- /dev/null +++ b/packages/migrate/resolve/__tests__/__snapshots__/resolve.test.ts.snap @@ -0,0 +1,29 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`resolve transforms correctly 1`] = ` +"import * as path from \\"path\\"; + +export default [ + { + resolve: { + modules: [path.resolve(\\"/src\\")], + }, + }, + { + resolve: { + modules: [path.resolve(\\"/src\\")], + }, + }, + { + resolve: { + modules: [path.resolve(\\"/src\\"), \\"node_modules\\"], + }, + }, + { + resolve: { + modules: [\\"node_modules\\", path.resolve(\\"/src\\")] + }, + }, +]; +" +`; diff --git a/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.ts b/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.ts new file mode 100644 index 00000000000..2da094d0196 --- /dev/null +++ b/packages/migrate/resolve/__tests__/__testfixtures__/resolve.input.ts @@ -0,0 +1,25 @@ +import * as path from "path"; + +export default [ + { + resolve: { + root: path.resolve("/src"), + }, + }, + { + resolve: { + root: [path.resolve("/src")], + }, + }, + { + resolve: { + root: [path.resolve("/src"), "node_modules"], + }, + }, + { + resolve: { + modules: ["node_modules"], + root: path.resolve("/src"), + }, + }, +]; diff --git a/packages/migrate/resolve/__tests__/resolve.test.ts b/packages/migrate/resolve/__tests__/resolve.test.ts new file mode 100644 index 00000000000..d6fc59596d8 --- /dev/null +++ b/packages/migrate/resolve/__tests__/resolve.test.ts @@ -0,0 +1,4 @@ +import defineTest from "@webpack-cli/utils/defineTest"; +import * as path from "path"; + +defineTest(path.join(__dirname, ".."), "resolve"); diff --git a/packages/migrate/resolve/resolve.test.js b/packages/migrate/resolve/resolve.test.js deleted file mode 100644 index c3971466966..00000000000 --- a/packages/migrate/resolve/resolve.test.js +++ /dev/null @@ -1,5 +0,0 @@ -"use strict"; - -const defineTest = require("@webpack-cli/utils/defineTest").default; - -defineTest(__dirname, "resolve"); diff --git a/packages/migrate/types/index.ts b/packages/migrate/types/index.ts deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/packages/utils/defineTest.ts b/packages/utils/defineTest.ts index 1118cde9a32..4070d188610 100644 --- a/packages/utils/defineTest.ts +++ b/packages/utils/defineTest.ts @@ -3,23 +3,23 @@ import * as path from "path"; import { IJSCodeshift, INode } from "./types/NodePath"; interface IModule { - ( - jscodeshift: IJSCodeshift, - ast: INode, - initOptions: string | boolean | object, - action: string, - transformName?: string, - ): INode; - default: transformType; - parser: string; -} - -type transformType = ( + ( jscodeshift: IJSCodeshift, ast: INode, initOptions: string | boolean | object, action: string, transformName?: string, + ): INode; + default: transformType; + parser: string; +} + +type transformType = ( + jscodeshift: IJSCodeshift, + ast: INode, + initOptions: string | boolean | object, + action: string, + transformName?: string, ) => INode; /** @@ -47,50 +47,54 @@ type transformType = ( * @return {Function} Function that fires of the transforms */ function runSingleTransform( - dirName: string, - transformName: string, - testFilePrefix: string, - initOptions: object | boolean | string, - action: string, + dirName: string, + transformName: string, + testFilePrefix: string, + initOptions: object | boolean | string, + action: string, ): string { - if (!testFilePrefix) { - testFilePrefix = transformName; - } - const fixtureDir: string = path.join(dirName, "__testfixtures__"); - const inputPath: string = path.join(fixtureDir, testFilePrefix + ".input.js"); - const source: string = fs.readFileSync(inputPath, "utf8"); + if (!testFilePrefix) { + testFilePrefix = transformName; + } + const fixtureDir: string = path.join( + dirName, + "__tests__", + "__testfixtures__", + ); + const inputPath: string = path.join(fixtureDir, testFilePrefix + ".input.ts"); + const source: string = fs.readFileSync(inputPath, "utf8"); - let module: IModule; - // Assumes transform and test are on the same level - if (action) { - module = require(path.join(dirName, "recursive-parser" + ".js")); - } else { - module = require(path.join(dirName, transformName + ".js")); - } - // Handle ES6 modules using default export for the transform - const transform = module.default ? module.default : module; + let module: IModule; + // Assumes transform and test are on the same level + if (action) { + module = require(path.join(dirName, "recursive-parser" + ".ts")); + } else { + module = require(path.join(dirName, transformName + ".ts")); + } + // Handle ES6 modules using default export for the transform + const transform = module.default ? module.default : module; - // Jest resets the module registry after each test, so we need to always get - // a fresh copy of jscodeshift on every test run. - let jscodeshift: IJSCodeshift = require("jscodeshift/dist/core"); - if (module.parser) { - jscodeshift = jscodeshift.withParser(module.parser); - } - const ast: INode = jscodeshift(source); - if (initOptions || typeof initOptions === "boolean") { - return transform( - jscodeshift, - ast, - initOptions, - action, - transformName, - ).toSource({ - quote: "single", - }); - } - return transform(jscodeshift, ast, source, action).toSource({ + // Jest resets the module registry after each test, so we need to always get + // a fresh copy of jscodeshift on every test run. + let jscodeshift: IJSCodeshift = require("jscodeshift/dist/core"); + if (module.parser) { + jscodeshift = jscodeshift.withParser(module.parser); + } + const ast: INode = jscodeshift(source); + if (initOptions || typeof initOptions === "boolean") { + return transform( + jscodeshift, + ast, + initOptions, + action, + transformName, + ).toSource({ quote: "single", }); + } + return transform(jscodeshift, ast, source, action).toSource({ + quote: "single", + }); } /** @@ -111,25 +115,25 @@ function runSingleTransform( * @return {Void} Jest makes sure to execute the globally defined functions */ export default function defineTest( - dirName: string, - transformName: string, - testFilePrefix: string, - transformObject: object, - action: string, + dirName: string, + transformName: string, + testFilePrefix?: string, + transformObject?: object, + action?: string, ): void { - const testName: string = testFilePrefix - ? `transforms correctly using "${testFilePrefix}" data` - : "transforms correctly"; - describe(transformName, () => { - it(testName, () => { - const output = runSingleTransform( - dirName, - transformName, - testFilePrefix, - transformObject, - action, - ); - expect(output).toMatchSnapshot(); - }); + const testName: string = testFilePrefix + ? `transforms correctly using "${testFilePrefix}" data` + : "transforms correctly"; + describe(transformName, () => { + it(testName, () => { + const output = runSingleTransform( + dirName, + transformName, + testFilePrefix, + transformObject, + action, + ); + expect(output).toMatchSnapshot(); }); + }); }