Browse Source

Implement our own mocking logic

pull/2/head
Luke Childs 8 years ago
parent
commit
bc2fa72c41
  1. 3
      package.json
  2. 5
      src/index.js
  3. 2
      test/requireable.js

3
package.json

@ -30,8 +30,7 @@
}, },
"homepage": "https://github.com/lukechilds/requireable", "homepage": "https://github.com/lukechilds/requireable",
"dependencies": { "dependencies": {
"find-root": "^1.1.0", "find-root": "^1.1.0"
"mock-require": "^2.0.2"
}, },
"devDependencies": { "devDependencies": {
"ava": "^0.19.1", "ava": "^0.19.1",

5
src/index.js

@ -1,14 +1,15 @@
'use strict'; 'use strict';
const Module = require('module');
const findRoot = require('find-root'); const findRoot = require('find-root');
const mock = require('mock-require');
const pkg = { success: false }; const pkg = { success: false };
try { try {
pkg.path = findRoot(process.cwd()); pkg.path = findRoot(process.cwd());
pkg.name = require(pkg.path + '/package.json').name; pkg.name = require(pkg.path + '/package.json').name;
mock(pkg.name, () => require(pkg.path)); const origRequire = Module.prototype.require;
Module.prototype.require = pkgName => pkgName === pkg.name ? origRequire(pkg.path) : origRequire(pkgName);
pkg.success = true; pkg.success = true;
} catch (err) {} } catch (err) {}

2
test/requireable.js

@ -8,5 +8,5 @@ test.serial(`outputs success info`, t => {
test.serial(`requiring package name requires root package`, t => { test.serial(`requiring package name requires root package`, t => {
// eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved // eslint-disable-next-line import/no-extraneous-dependencies, import/no-unresolved
t.true(typeof require('requireable') === 'function'); t.is(require('requireable'), require('../'));
}); });

Loading…
Cancel
Save