summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2011-07-27 19:30:32 -0700
committerRyan Dahl <ry@tinyclouds.org>2011-07-27 19:30:32 -0700
commitea9ee1fb7e3f785c21d04a155e0f18a354fe0173 (patch)
tree6b99e71f4a142938800a9f35a8daeff8c8b21f7a /test
parentbca6e35b2b533ce220376d5db43893e14bb8dbf3 (diff)
downloadnodejs-ea9ee1fb7e3f785c21d04a155e0f18a354fe0173.tar.gz
nodejs-ea9ee1fb7e3f785c21d04a155e0f18a354fe0173.tar.bz2
nodejs-ea9ee1fb7e3f785c21d04a155e0f18a354fe0173.zip
Add process.moduleLoadList for better startup transparency
Diffstat (limited to 'test')
-rw-r--r--test/simple/test-module-load-list.js79
1 files changed, 79 insertions, 0 deletions
diff --git a/test/simple/test-module-load-list.js b/test/simple/test-module-load-list.js
new file mode 100644
index 000000000..a8b35a734
--- /dev/null
+++ b/test/simple/test-module-load-list.js
@@ -0,0 +1,79 @@
+// Copyright Joyent, Inc. and other Node contributors.
+//
+// Permission is hereby granted, free of charge, to any person obtaining a
+// copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to permit
+// persons to whom the Software is furnished to do so, subject to the
+// following conditions:
+//
+// The above copyright notice and this permission notice shall be included
+// in all copies or substantial portions of the Software.
+//
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+// USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+// This test makes assertions about exactly which modules and bindings are
+// loaded at startup time. We explicitly do NOT load ../common.js or at the
+// beginning of this file.
+
+function assertEqual(x, y) {
+ if (x !== y) throw new Error("Expected '" + x + "' got '" + y + "'");
+}
+
+function checkExpected() {
+ assertEqual(expected.length, process.moduleLoadList.length);
+
+ for (var i = 0; i < expected.length; i++) {
+ assertEqual(expected[i], process.moduleLoadList[i]);
+ }
+}
+
+var expected = [
+ 'Binding evals',
+ 'Binding natives',
+ 'NativeModule events',
+ 'NativeModule buffer',
+ 'Binding buffer',
+ 'NativeModule buffer_ieee754', // FIXME should not be loading
+ 'NativeModule assert',
+ 'NativeModule util',
+ 'Binding stdio',
+ 'NativeModule path',
+ 'NativeModule module',
+ 'NativeModule fs',
+ 'Binding fs',
+ 'Binding constants',
+ 'NativeModule stream'
+];
+
+checkExpected();
+
+
+// Now do the test again after we console.log something.
+console.log("load console.log");
+
+expected = expected.concat([
+ 'NativeModule console',
+ 'NativeModule net_legacy',
+ 'NativeModule timers_legacy',
+ 'Binding timer',
+ 'NativeModule _linklist',
+ 'Binding net',
+ 'NativeModule freelist',
+ 'Binding io_watcher',
+ 'NativeModule tty',
+ 'NativeModule tty_posix', // FIXME branch on win32 here.
+ 'NativeModule child_process', // FIXME should not be loading
+ 'Binding child_process' // FIXME should not be loading
+]);
+
+checkExpected();
+
+console.log(process.moduleLoadList);