default_paths.js 1.6 KB

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