Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download
80668 views
1
/**
2
* Copyright (c) 2014, Facebook, Inc. All rights reserved.
3
*
4
* This source code is licensed under the BSD-style license found in the
5
* LICENSE file in the root directory of this source tree. An additional grant
6
* of patent rights can be found in the PATENTS file in the same directory.
7
*/
8
'use strict';
9
10
jest.autoMockOff();
11
12
var path = require('path');
13
var q = require('q');
14
var utils = require('../../lib/utils');
15
16
describe('HasteModuleLoader', function() {
17
var HasteModuleLoader;
18
var mockEnvironment;
19
var resourceMap;
20
21
var CONFIG = utils.normalizeConfig({
22
name: 'HasteModuleLoader-tests',
23
rootDir: path.resolve(__dirname, 'test_root')
24
});
25
26
function buildLoader() {
27
if (!resourceMap) {
28
return HasteModuleLoader.loadResourceMap(CONFIG).then(function(map) {
29
resourceMap = map;
30
return buildLoader();
31
});
32
} else {
33
return q(new HasteModuleLoader(CONFIG, mockEnvironment, resourceMap));
34
}
35
}
36
37
function initHasteModuleLoader(nodePath) {
38
process.env.NODE_PATH = nodePath;
39
HasteModuleLoader = require('../HasteModuleLoader');
40
mockEnvironment = {
41
global: {
42
console: {},
43
mockClearTimers: jest.genMockFn()
44
},
45
runSourceText: jest.genMockFn().mockImplementation(function(codeStr) {
46
/* jshint evil:true */
47
return (new Function('return ' + codeStr))();
48
})
49
};
50
}
51
52
pit('uses NODE_PATH to find modules', function() {
53
var nodePath = process.cwd() +
54
'/src/HasteModuleLoader/__tests__/NODE_PATH_dir';
55
initHasteModuleLoader(nodePath);
56
return buildLoader().then(function(loader) {
57
var exports = loader.requireModuleOrMock(null, 'RegularModuleInNodePath');
58
expect(exports).toBeDefined();
59
});
60
});
61
62
pit('finds modules in NODE_PATH containing multiple paths', function() {
63
var cwd = process.cwd();
64
var nodePath = cwd + '/some/other/path' + path.delimiter + cwd +
65
'/src/HasteModuleLoader/__tests__/NODE_PATH_dir';
66
initHasteModuleLoader(nodePath);
67
return buildLoader().then(function(loader) {
68
var exports = loader.requireModuleOrMock(null, 'RegularModuleInNodePath');
69
expect(exports).toBeDefined();
70
});
71
});
72
73
pit('doesnt find modules if NODE_PATH is relative', function() {
74
var nodePath = process.cwd().substr(path.sep.length) +
75
'src/HasteModuleLoader/__tests__/NODE_PATH_dir';
76
initHasteModuleLoader(nodePath);
77
return buildLoader().then(function(loader) {
78
try {
79
var exports = loader.requireModuleOrMock(null,
80
'RegularModuleInNodePath');
81
expect(exports).toBeUndefined();
82
} catch (e) {
83
expect(
84
(e.message.indexOf('Cannot find module'))).toBeGreaterThan(-1);
85
}
86
});
87
});
88
89
});
90
91