From 0a461e5360f400e42a144ad968bcfa9e72e42668 Mon Sep 17 00:00:00 2001 From: Yosuke Furukawa Date: Thu, 14 May 2015 00:00:57 +0900 Subject: [PATCH] src: fix preload when used with prior flags Fixes: https://github.com/nodejs/io.js/issues/1691 PR-URL: https://github.com/nodejs/io.js/pull/1694 Reviewed-By: Ali Ijaz Sheikh Reviewed-By: Trevor Norris Reviewed-By: Jeremiah Senkpiel --- src/node.js | 21 ++++++++++++--------- test/parallel/test-preload.js | 12 ++++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/node.js b/src/node.js index 55b1d782ce82b0..cb50341ce2ea8c 100644 --- a/src/node.js +++ b/src/node.js @@ -82,16 +82,9 @@ delete process.env.NODE_UNIQUE_ID; } - // Load any preload modules - if (process._preload_modules) { - var Module = NativeModule.require('module'); - process._preload_modules.forEach(function(module) { - Module._load(module); - }); - } - if (process._eval != null) { // User passed '-e' or '--eval' arguments to Node. + startup.preloadModules(); evalScript('[eval]'); } else if (process.argv[1]) { // make process.argv[1] into a full path @@ -99,7 +92,7 @@ process.argv[1] = path.resolve(process.argv[1]); var Module = NativeModule.require('module'); - + startup.preloadModules(); if (global.v8debug && process.execArgv.some(function(arg) { return arg.match(/^--debug-brk(=[0-9]*)?$/); @@ -857,6 +850,16 @@ }; }; + // Load preload modules + startup.preloadModules = function() { + if (process._preload_modules) { + var Module = NativeModule.require('module'); + process._preload_modules.forEach(function(module) { + Module._load(module); + }); + } + }; + // Below you find a minimal module system, which is used to load the node // core modules found in lib/*.js. All core modules are compiled into the // node binary, so they can be loaded faster. diff --git a/test/parallel/test-preload.js b/test/parallel/test-preload.js index 643edfb1d970cc..3801f3df7b20f8 100644 --- a/test/parallel/test-preload.js +++ b/test/parallel/test-preload.js @@ -80,3 +80,15 @@ child_process.exec(nodeBinary + ' ' if (err) throw err; assert.ok(/worker terminated with code 43/.test(stdout)); }); + +// https://github.com/iojs/io.js/issues/1691 +var originalCwd = process.cwd(); +process.chdir(path.join(__dirname, '../fixtures/')); +child_process.exec(nodeBinary + ' ' + + '--expose_debug_as=v8debug ' + + '--require ' + fixture('cluster-preload.js') + ' ' + + 'cluster-preload-test.js', + function(err, stdout, stderr) { + if (err) throw err; + assert.ok(/worker terminated with code 43/.test(stdout)); + });