|
| 1 | +'use strict'; |
| 2 | + |
| 3 | +var path = require('path'); |
| 4 | +var test = require('tape'); |
| 5 | +var mockProperty = require('mock-property'); |
| 6 | + |
| 7 | +var homedirPath = require.resolve('../lib/homedir'); |
| 8 | +var asyncPath = require.resolve('../async'); |
| 9 | +var libAsyncPath = require.resolve('../lib/async'); |
| 10 | +var syncPath = require.resolve('../sync'); |
| 11 | +var libSyncPath = require.resolve('../lib/sync'); |
| 12 | + |
| 13 | +function mockNullHomedir(t) { |
| 14 | + t.teardown(mockProperty(require.cache, homedirPath, { |
| 15 | + value: { id: homedirPath, filename: homedirPath, loaded: true, exports: function () { return null; } } |
| 16 | + })); |
| 17 | +} |
| 18 | + |
| 19 | +test('async: null homedir does not throw', function (t) { |
| 20 | + t.plan(2); |
| 21 | + |
| 22 | + mockNullHomedir(t); |
| 23 | + t.teardown(mockProperty(require.cache, asyncPath, { 'delete': true })); |
| 24 | + t.teardown(mockProperty(require.cache, libAsyncPath, { 'delete': true })); |
| 25 | + |
| 26 | + var resolve = require('../lib/async'); |
| 27 | + |
| 28 | + var dir = path.join(__dirname, 'resolver'); |
| 29 | + |
| 30 | + resolve('./baz', { basedir: dir }, function (err, res) { |
| 31 | + t.error(err, 'no error'); |
| 32 | + t.equal(res, path.join(dir, 'baz', 'quux.js'), 'resolves correctly with null homedir'); |
| 33 | + }); |
| 34 | +}); |
| 35 | + |
| 36 | +test('sync: null homedir does not throw', function (t) { |
| 37 | + mockNullHomedir(t); |
| 38 | + t.teardown(mockProperty(require.cache, syncPath, { 'delete': true })); |
| 39 | + t.teardown(mockProperty(require.cache, libSyncPath, { 'delete': true })); |
| 40 | + |
| 41 | + var resolveSync = require('../lib/sync'); |
| 42 | + |
| 43 | + var dir = path.join(__dirname, 'resolver'); |
| 44 | + |
| 45 | + var res = resolveSync('./baz', { basedir: dir }); |
| 46 | + t.equal(res, path.join(dir, 'baz', 'quux.js'), 'resolves correctly with null homedir'); |
| 47 | + |
| 48 | + t.end(); |
| 49 | +}); |
0 commit comments