• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1'use strict';
2
3// This list must be computed before we require any modules to
4// to eliminate the noise.
5const actualModules = new Set(process.moduleLoadList.slice());
6
7const common = require('../common');
8const assert = require('assert');
9
10const expectedModules = new Set([
11  'Internal Binding errors',
12  'Internal Binding async_wrap',
13  'Internal Binding buffer',
14  'Internal Binding config',
15  'Internal Binding constants',
16  'Internal Binding contextify',
17  'Internal Binding credentials',
18  'Internal Binding fs',
19  'Internal Binding fs_dir',
20  'Internal Binding fs_event_wrap',
21  'Internal Binding messaging',
22  'Internal Binding module_wrap',
23  'Internal Binding native_module',
24  'Internal Binding options',
25  'Internal Binding process_methods',
26  'Internal Binding report',
27  'Internal Binding string_decoder',
28  'Internal Binding symbols',
29  'Internal Binding task_queue',
30  'Internal Binding timers',
31  'Internal Binding trace_events',
32  'Internal Binding types',
33  'Internal Binding url',
34  'Internal Binding util',
35  'Internal Binding uv',
36  'NativeModule async_hooks',
37  'NativeModule buffer',
38  'NativeModule events',
39  'NativeModule fs',
40  'NativeModule internal/assert',
41  'NativeModule internal/async_hooks',
42  'NativeModule internal/bootstrap/pre_execution',
43  'NativeModule internal/buffer',
44  'NativeModule internal/console/constructor',
45  'NativeModule internal/console/global',
46  'NativeModule internal/constants',
47  'NativeModule internal/encoding',
48  'NativeModule internal/errors',
49  'NativeModule internal/fixed_queue',
50  'NativeModule internal/fs/dir',
51  'NativeModule internal/fs/utils',
52  'NativeModule internal/fs/promises',
53  'NativeModule internal/fs/rimraf',
54  'NativeModule internal/fs/watchers',
55  'NativeModule internal/idna',
56  'NativeModule internal/linkedlist',
57  'NativeModule internal/modules/run_main',
58  'NativeModule internal/modules/package_json_reader',
59  'NativeModule internal/modules/cjs/helpers',
60  'NativeModule internal/modules/cjs/loader',
61  'NativeModule internal/modules/esm/create_dynamic_module',
62  'NativeModule internal/modules/esm/get_format',
63  'NativeModule internal/modules/esm/get_source',
64  'NativeModule internal/modules/esm/loader',
65  'NativeModule internal/modules/esm/module_job',
66  'NativeModule internal/modules/esm/module_map',
67  'NativeModule internal/modules/esm/resolve',
68  'NativeModule internal/modules/esm/transform_source',
69  'NativeModule internal/modules/esm/translators',
70  'NativeModule internal/modules/esm/handle_process_exit',
71  'NativeModule internal/process/esm_loader',
72  'NativeModule internal/options',
73  'NativeModule internal/priority_queue',
74  'NativeModule internal/process/execution',
75  'NativeModule internal/process/per_thread',
76  'NativeModule internal/process/promises',
77  'NativeModule internal/process/report',
78  'NativeModule internal/process/signal',
79  'NativeModule internal/process/task_queues',
80  'NativeModule internal/process/warning',
81  'NativeModule internal/querystring',
82  'NativeModule internal/source_map/source_map_cache',
83  'NativeModule internal/streams/utils',
84  'NativeModule internal/timers',
85  'NativeModule internal/url',
86  'NativeModule internal/util',
87  'NativeModule internal/util/debuglog',
88  'NativeModule internal/util/inspect',
89  'NativeModule internal/util/iterable_weak_map',
90  'NativeModule internal/util/types',
91  'NativeModule internal/validators',
92  'NativeModule internal/vm/module',
93  'NativeModule internal/worker/js_transferable',
94  'NativeModule internal/blob',
95  'NativeModule path',
96  'NativeModule timers',
97  'NativeModule url',
98  'NativeModule vm',
99]);
100
101if (!common.isMainThread) {
102  [
103    'Internal Binding messaging',
104    'Internal Binding performance',
105    'Internal Binding symbols',
106    'Internal Binding worker',
107    'NativeModule internal/streams/duplex',
108    'NativeModule internal/streams/passthrough',
109    'NativeModule internal/streams/readable',
110    'NativeModule internal/streams/transform',
111    'NativeModule internal/streams/writable',
112    'NativeModule internal/error_serdes',
113    'NativeModule internal/event_target',
114    'NativeModule internal/process/worker_thread_only',
115    'NativeModule internal/streams/buffer_list',
116    'NativeModule internal/streams/destroy',
117    'NativeModule internal/streams/end-of-stream',
118    'NativeModule internal/streams/legacy',
119    'NativeModule internal/streams/pipeline',
120    'NativeModule internal/streams/state',
121    'NativeModule internal/worker',
122    'NativeModule internal/worker/io',
123    'NativeModule stream',
124    'NativeModule util',
125    'NativeModule worker_threads',
126  ].forEach(expectedModules.add.bind(expectedModules));
127}
128
129if (common.hasIntl) {
130  expectedModules.add('Internal Binding icu');
131} else {
132  expectedModules.add('NativeModule punycode');
133}
134
135if (process.features.inspector) {
136  expectedModules.add('Internal Binding inspector');
137  expectedModules.add('NativeModule internal/inspector_async_hook');
138  expectedModules.add('NativeModule internal/util/inspector');
139}
140
141if (process.env.NODE_V8_COVERAGE) {
142  expectedModules.add('Internal Binding profiler');
143}
144
145const difference = (setA, setB) => {
146  return new Set([...setA].filter((x) => !setB.has(x)));
147};
148const missingModules = difference(expectedModules, actualModules);
149const extraModules = difference(actualModules, expectedModules);
150const printSet = (s) => { return `${[...s].sort().join(',\n  ')}\n`; };
151
152assert.deepStrictEqual(actualModules, expectedModules,
153                       (missingModules.size > 0 ?
154                         'These modules were not loaded:\n  ' +
155                         printSet(missingModules) : '') +
156                       (extraModules.size > 0 ?
157                         'These modules were unexpectedly loaded:\n  ' +
158                         printSet(extraModules) : ''));
159