| 'use strict'; |
| |
| // This list must be computed before we require any modules to |
| // to eliminate the noise. |
| const actualModules = new Set(process.moduleLoadList.slice()); |
| |
| const common = require('../common'); |
| const assert = require('assert'); |
| |
| const expectedModules = new Set([ |
| 'Internal Binding errors', |
| 'Internal Binding async_wrap', |
| 'Internal Binding buffer', |
| 'Internal Binding config', |
| 'Internal Binding constants', |
| 'Internal Binding contextify', |
| 'Internal Binding credentials', |
| 'Internal Binding fs', |
| 'Internal Binding fs_dir', |
| 'Internal Binding inspector', |
| 'Internal Binding module_wrap', |
| 'Internal Binding native_module', |
| 'Internal Binding options', |
| 'Internal Binding process_methods', |
| 'Internal Binding string_decoder', |
| 'Internal Binding task_queue', |
| 'Internal Binding timers', |
| 'Internal Binding trace_events', |
| 'Internal Binding types', |
| 'Internal Binding url', |
| 'Internal Binding util', |
| 'NativeModule buffer', |
| 'NativeModule events', |
| 'NativeModule fs', |
| 'NativeModule internal/assert', |
| 'NativeModule internal/async_hooks', |
| 'NativeModule internal/bootstrap/pre_execution', |
| 'NativeModule internal/buffer', |
| 'NativeModule internal/console/constructor', |
| 'NativeModule internal/console/global', |
| 'NativeModule internal/constants', |
| 'NativeModule internal/encoding', |
| 'NativeModule internal/errors', |
| 'NativeModule internal/fixed_queue', |
| 'NativeModule internal/fs/dir', |
| 'NativeModule internal/fs/utils', |
| 'NativeModule internal/idna', |
| 'NativeModule internal/linkedlist', |
| 'NativeModule internal/modules/run_main', |
| 'NativeModule internal/modules/cjs/helpers', |
| 'NativeModule internal/modules/cjs/loader', |
| 'NativeModule internal/modules/esm/create_dynamic_module', |
| 'NativeModule internal/modules/esm/get_format', |
| 'NativeModule internal/modules/esm/get_source', |
| 'NativeModule internal/modules/esm/loader', |
| 'NativeModule internal/modules/esm/module_job', |
| 'NativeModule internal/modules/esm/module_map', |
| 'NativeModule internal/modules/esm/resolve', |
| 'NativeModule internal/modules/esm/transform_source', |
| 'NativeModule internal/modules/esm/translators', |
| 'NativeModule internal/process/esm_loader', |
| 'NativeModule internal/options', |
| 'NativeModule internal/priority_queue', |
| 'NativeModule internal/process/execution', |
| 'NativeModule internal/process/per_thread', |
| 'NativeModule internal/process/promises', |
| 'NativeModule internal/process/signal', |
| 'NativeModule internal/process/task_queues', |
| 'NativeModule internal/process/warning', |
| 'NativeModule internal/querystring', |
| 'NativeModule internal/source_map/source_map_cache', |
| 'NativeModule internal/timers', |
| 'NativeModule internal/url', |
| 'NativeModule internal/util', |
| 'NativeModule internal/util/debuglog', |
| 'NativeModule internal/util/inspect', |
| 'NativeModule internal/util/types', |
| 'NativeModule internal/validators', |
| 'NativeModule internal/vm/module', |
| 'NativeModule path', |
| 'NativeModule timers', |
| 'NativeModule url', |
| 'NativeModule vm', |
| ]); |
| |
| if (!common.isMainThread) { |
| expectedModules.add('Internal Binding messaging'); |
| expectedModules.add('Internal Binding symbols'); |
| expectedModules.add('Internal Binding worker'); |
| expectedModules.add('NativeModule _stream_duplex'); |
| expectedModules.add('NativeModule _stream_passthrough'); |
| expectedModules.add('NativeModule _stream_readable'); |
| expectedModules.add('NativeModule _stream_transform'); |
| expectedModules.add('NativeModule _stream_writable'); |
| expectedModules.add('NativeModule internal/error-serdes'); |
| expectedModules.add('NativeModule internal/process/worker_thread_only'); |
| expectedModules.add('NativeModule internal/streams/buffer_list'); |
| expectedModules.add('NativeModule internal/streams/destroy'); |
| expectedModules.add('NativeModule internal/streams/end-of-stream'); |
| expectedModules.add('NativeModule internal/streams/legacy'); |
| expectedModules.add('NativeModule internal/streams/pipeline'); |
| expectedModules.add('NativeModule internal/streams/state'); |
| expectedModules.add('NativeModule internal/worker'); |
| expectedModules.add('NativeModule internal/worker/io'); |
| expectedModules.add('NativeModule stream'); |
| expectedModules.add('NativeModule worker_threads'); |
| } |
| |
| if (common.hasIntl) { |
| expectedModules.add('Internal Binding icu'); |
| } else { |
| expectedModules.add('NativeModule punycode'); |
| } |
| |
| if (process.features.inspector) { |
| expectedModules.add('NativeModule internal/inspector_async_hook'); |
| expectedModules.add('NativeModule internal/util/inspector'); |
| } |
| |
| if (process.env.NODE_V8_COVERAGE) { |
| expectedModules.add('Internal Binding profiler'); |
| } |
| |
| const difference = (setA, setB) => { |
| return new Set([...setA].filter((x) => !setB.has(x))); |
| }; |
| const missingModules = difference(expectedModules, actualModules); |
| const extraModules = difference(actualModules, expectedModules); |
| const printSet = (s) => { return `${[...s].sort().join(',\n ')}\n`; }; |
| |
| assert.deepStrictEqual(actualModules, expectedModules, |
| (missingModules.size > 0 ? |
| 'These modules were not loaded:\n ' + |
| printSet(missingModules) : '') + |
| (extraModules.size > 0 ? |
| 'These modules were unexpectedly loaded:\n ' + |
| printSet(extraModules) : '')); |