test: whitelist the expected modules in test-bootstrap-modules.js · nodejs/node@892282d (original) (raw)

`@@ -3,15 +3,131 @@

`

3

3

``

4

4

`// This list must be computed before we require any modules to

`

5

5

`// to eliminate the noise.

`

6

``

`-

const list = process.moduleLoadList.slice();

`

``

6

`+

const actualModules = new Set(process.moduleLoadList.slice());

`

7

7

``

8

8

`const common = require('../common');

`

9

9

`const assert = require('assert');

`

10

10

``

11

``

`-

const isMainThread = common.isMainThread;

`

12

``

`-

const kCoverageModuleCount = process.env.NODE_V8_COVERAGE ? 1 : 0;

`

13

``

`-

const kMaxModuleCount = (isMainThread ? 65 : 88) + kCoverageModuleCount;

`

``

11

`+

const expectedModules = new Set([

`

``

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 inspector',

`

``

20

`+

'Internal Binding messaging',

`

``

21

`+

'Internal Binding module_wrap',

`

``

22

`+

'Internal Binding native_module',

`

``

23

`+

'Internal Binding options',

`

``

24

`+

'Internal Binding process_methods',

`

``

25

`+

'Internal Binding task_queue',

`

``

26

`+

'Internal Binding timers',

`

``

27

`+

'Internal Binding trace_events',

`

``

28

`+

'Internal Binding types',

`

``

29

`+

'Internal Binding url',

`

``

30

`+

'Internal Binding util',

`

``

31

`+

'NativeModule buffer',

`

``

32

`+

'NativeModule events',

`

``

33

`+

'NativeModule fs',

`

``

34

`+

'NativeModule internal/assert',

`

``

35

`+

'NativeModule internal/async_hooks',

`

``

36

`+

'NativeModule internal/bootstrap/pre_execution',

`

``

37

`+

'NativeModule internal/buffer',

`

``

38

`+

'NativeModule internal/console/constructor',

`

``

39

`+

'NativeModule internal/console/global',

`

``

40

`+

'NativeModule internal/constants',

`

``

41

`+

'NativeModule internal/domexception',

`

``

42

`+

'NativeModule internal/encoding',

`

``

43

`+

'NativeModule internal/errors',

`

``

44

`+

'NativeModule internal/fixed_queue',

`

``

45

`+

'NativeModule internal/fs/utils',

`

``

46

`+

'NativeModule internal/idna',

`

``

47

`+

'NativeModule internal/linkedlist',

`

``

48

`+

'NativeModule internal/modules/cjs/helpers',

`

``

49

`+

'NativeModule internal/modules/cjs/loader',

`

``

50

`+

'NativeModule internal/options',

`

``

51

`+

'NativeModule internal/priority_queue',

`

``

52

`+

'NativeModule internal/process/execution',

`

``

53

`+

'NativeModule internal/process/next_tick',

`

``

54

`+

'NativeModule internal/process/per_thread',

`

``

55

`+

'NativeModule internal/process/promises',

`

``

56

`+

'NativeModule internal/process/warning',

`

``

57

`+

'NativeModule internal/querystring',

`

``

58

`+

'NativeModule internal/timers',

`

``

59

`+

'NativeModule internal/url',

`

``

60

`+

'NativeModule internal/util',

`

``

61

`+

'NativeModule internal/util/debuglog',

`

``

62

`+

'NativeModule internal/util/inspect',

`

``

63

`+

'NativeModule internal/util/types',

`

``

64

`+

'NativeModule internal/validators',

`

``

65

`+

'NativeModule path',

`

``

66

`+

'NativeModule timers',

`

``

67

`+

'NativeModule url',

`

``

68

`+

'NativeModule util',

`

``

69

`+

'NativeModule vm',

`

``

70

`+

]);

`

14

71

``

15

``

`-

assert(list.length <= kMaxModuleCount,

`

16

``

`` -

Total length: ${list.length}\n + list.join('\n')

``

17

``

`-

);

`

``

72

`+

if (common.isMainThread) {

`

``

73

`+

expectedModules.add('NativeModule internal/process/main_thread_only');

`

``

74

`+

expectedModules.add('NativeModule internal/process/stdio');

`

``

75

`+

} else {

`

``

76

`+

expectedModules.add('Internal Binding heap_utils');

`

``

77

`+

expectedModules.add('Internal Binding serdes');

`

``

78

`+

expectedModules.add('Internal Binding stream_wrap');

`

``

79

`+

expectedModules.add('Internal Binding symbols');

`

``

80

`+

expectedModules.add('Internal Binding uv');

`

``

81

`+

expectedModules.add('Internal Binding v8');

`

``

82

`+

expectedModules.add('Internal Binding worker');

`

``

83

`+

expectedModules.add('NativeModule _stream_duplex');

`

``

84

`+

expectedModules.add('NativeModule _stream_passthrough');

`

``

85

`+

expectedModules.add('NativeModule _stream_readable');

`

``

86

`+

expectedModules.add('NativeModule _stream_transform');

`

``

87

`+

expectedModules.add('NativeModule _stream_writable');

`

``

88

`+

expectedModules.add('NativeModule internal/error-serdes');

`

``

89

`+

expectedModules.add('NativeModule internal/process/worker_thread_only');

`

``

90

`+

expectedModules.add('NativeModule internal/stream_base_commons');

`

``

91

`+

expectedModules.add('NativeModule internal/streams/buffer_list');

`

``

92

`+

expectedModules.add('NativeModule internal/streams/destroy');

`

``

93

`+

expectedModules.add('NativeModule internal/streams/end-of-stream');

`

``

94

`+

expectedModules.add('NativeModule internal/streams/legacy');

`

``

95

`+

expectedModules.add('NativeModule internal/streams/pipeline');

`

``

96

`+

expectedModules.add('NativeModule internal/streams/state');

`

``

97

`+

expectedModules.add('NativeModule internal/worker');

`

``

98

`+

expectedModules.add('NativeModule internal/worker/io');

`

``

99

`+

expectedModules.add('NativeModule module');

`

``

100

`+

expectedModules.add('NativeModule stream');

`

``

101

`+

expectedModules.add('NativeModule v8');

`

``

102

`+

expectedModules.add('NativeModule worker_threads');

`

``

103

`+

}

`

``

104

+

``

105

`+

if (common.hasIntl) {

`

``

106

`+

expectedModules.add('Internal Binding icu');

`

``

107

`+

} else {

`

``

108

`+

expectedModules.add('NativeModule punycode');

`

``

109

`+

}

`

``

110

+

``

111

`+

if (process.features.inspector) {

`

``

112

`+

expectedModules.add('NativeModule internal/inspector_async_hook');

`

``

113

`+

expectedModules.add('NativeModule internal/util/inspector');

`

``

114

`+

}

`

``

115

+

``

116

`+

if (process.env.NODE_V8_COVERAGE) {

`

``

117

`+

expectedModules.add('NativeModule internal/profiler');

`

``

118

`+

}

`

``

119

+

``

120

`+

const difference = (setA, setB) => {

`

``

121

`+

return new Set([...setA].filter((x) => !setB.has(x)));

`

``

122

`+

};

`

``

123

`+

const missingModules = difference(expectedModules, actualModules);

`

``

124

`+

const extraModules = difference(actualModules, expectedModules);

`

``

125

`` +

const printSet = (s) => { return ${[...s].sort().join(',\n ')}\n; };

``

``

126

+

``

127

`+

assert.deepStrictEqual(actualModules, expectedModules,

`

``

128

`+

(missingModules.size > 0 ?

`

``

129

`+

'These modules were not loaded:\n ' +

`

``

130

`+

printSet(missingModules) : '') +

`

``

131

`+

(extraModules.size > 0 ?

`

``

132

`+

'These modules were unexpectedly loaded:\n ' +

`

``

133

`+

printSet(extraModules) : ''));

`