diff --git a/package-lock.json b/package-lock.json index 7cb207c4a..877c1b79d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3089,6 +3089,24 @@ "babel-plugin-jest-hoist": "^24.6.0" } }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, "babylon": { "version": "6.18.0", "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", @@ -4181,6 +4199,12 @@ "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", "dev": true }, + "compare-module-exports": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/compare-module-exports/-/compare-module-exports-2.1.0.tgz", + "integrity": "sha512-3Lc0sTIuX1jmY2K2RrXRJOND6KsRTX2D4v3+eu1PDptsuJZVK4LZc852eZa9I+avj0NrUKlTNgqvccNOH6mbGg==", + "dev": true + }, "compare-versions": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.4.0.tgz", @@ -9916,6 +9940,12 @@ "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", "dev": true }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, "lodash.assign": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-4.2.0.tgz", @@ -10006,12 +10036,37 @@ "integrity": "sha512-AOYza4+Hf5z1/0Hztxpm2/xiPZgi/cjMqdnKTUWTBSKchJlxXXuUSxCCl8rJlf4g6yww/j6mA8nC8Hw/EZWxKQ==", "dev": true }, + "lodash.some": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.some/-/lodash.some-4.6.0.tgz", + "integrity": "sha1-G7nzFO9ri63tE7VJFpsqlF62jk0=", + "dev": true + }, "lodash.sortby": { "version": "4.7.0", "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", "dev": true }, + "lodash.template": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.4.0.tgz", + "integrity": "sha1-5zoDhcg1VZF0bgILmWecaQ5o+6A=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.1.0.tgz", + "integrity": "sha1-K01OlbpEDZFf8IvImeRVNmZxMxY=", + "dev": true, + "requires": { + "lodash._reinterpolate": "~3.0.0" + } + }, "log-symbols": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", @@ -13250,6 +13305,22 @@ } } }, + "rewiremock": { + "version": "3.13.6", + "resolved": "https://registry.npmjs.org/rewiremock/-/rewiremock-3.13.6.tgz", + "integrity": "sha512-Oti87nanVTWUyiyTU12ZwIthGFky3KUJxK2jhL7HzCQ+Detp7yzsqcopfy1gygZQF+W7LwYchMCZ137tEfB73Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "compare-module-exports": "^2.1.0", + "lodash.some": "^4.6.0", + "lodash.template": "^4.4.0", + "node-libs-browser": "^2.1.0", + "path-parse": "^1.0.5", + "wipe-node-cache": "^2.1.0", + "wipe-webpack-cache": "^2.1.0" + } + }, "rimraf": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", @@ -15654,6 +15725,21 @@ } } }, + "wipe-node-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wipe-node-cache/-/wipe-node-cache-2.1.0.tgz", + "integrity": "sha512-Vdash0WV9Di/GeYW9FJrAZcPjGK4dO7M/Be/sJybguEgcM7As0uwLyvewZYqdlepoh7Rj4ZJKEdo8uX83PeNIw==", + "dev": true + }, + "wipe-webpack-cache": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wipe-webpack-cache/-/wipe-webpack-cache-2.1.0.tgz", + "integrity": "sha512-OXzQMGpA7MnQQ8AG+uMl5mWR2ezy6fw1+DMHY+wzYP1qkF1jrek87psLBmhZEj+er4efO/GD4R8jXWFierobaA==", + "dev": true, + "requires": { + "wipe-node-cache": "^2.1.0" + } + }, "wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", diff --git a/package.json b/package.json index 8e631dec5..145dfb8c0 100644 --- a/package.json +++ b/package.json @@ -90,6 +90,7 @@ "require-inject": "^1.4.4", "requizzle": "^0.2.1", "rewire": "^4.0.1", + "rewiremock": "^3.13.6", "semver": "^5.7.0", "sinon": "^7.3.2", "sleep": "^5.2.4", diff --git a/test/fixture/scenario/rewiremock/a.js b/test/fixture/scenario/rewiremock/a.js new file mode 100644 index 000000000..7116638f7 --- /dev/null +++ b/test/fixture/scenario/rewiremock/a.js @@ -0,0 +1,4 @@ +import { extname } from "path" +import b from "./b.js" + +export default () => "a" + b + extname("") diff --git a/test/fixture/scenario/rewiremock/b.js b/test/fixture/scenario/rewiremock/b.js new file mode 100644 index 000000000..194716471 --- /dev/null +++ b/test/fixture/scenario/rewiremock/b.js @@ -0,0 +1 @@ +// Empty module. diff --git a/test/fixture/scenario/rewiremock/c.js b/test/fixture/scenario/rewiremock/c.js new file mode 100644 index 000000000..5e5a7a0d7 --- /dev/null +++ b/test/fixture/scenario/rewiremock/c.js @@ -0,0 +1,3 @@ +import a from "./a.js" + +export default () => a() diff --git a/test/fixture/scenario/rewiremock/index.js b/test/fixture/scenario/rewiremock/index.js new file mode 100644 index 000000000..2279ab128 --- /dev/null +++ b/test/fixture/scenario/rewiremock/index.js @@ -0,0 +1,22 @@ +import assert from "assert" +import rewiremock from "rewiremock" + +const a = rewiremock + .proxy("./a.js", { + path: { + extname: () => "c" + }, + "./b.js": "b" + }) + +assert.strictEqual(a.default(), "abc") + +const c = rewiremock.proxy("./c.js", { + path: { + extname: () => "b" + }, + "./b.js": "c" +}) + +assert.strictEqual(c.default(), "acb") + diff --git a/test/scenario-tests.mjs b/test/scenario-tests.mjs index 1fffb0432..241cdd50d 100644 --- a/test/scenario-tests.mjs +++ b/test/scenario-tests.mjs @@ -1,5 +1,4 @@ import SemVer from "semver" - import assert from "assert" import execa from "execa" import fs from "fs-extra" @@ -185,6 +184,13 @@ describe("scenario tests", function () { ], envAuto) ) + it("should work with rewiremock", () => { + node([ + "-r", pkgPath, + path.resolve("fixture/scenario/rewiremock") + ], envAuto) + }) + it("should work with sinon", () => node([ path.resolve("fixture/scenario/sinon")