node/test/parallel/test-preload.js
cjihrig a69ab27ab4 node: rename from io.js to node
This commit replaces instances of io.js with Node.js, based on the
recent convergence. There are some remaining instances of io.js,
related to build and the installer.

Fixes: https://github.com/nodejs/node/issues/2361
PR-URL: https://github.com/nodejs/node/pull/2367
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: João Reis <reis@janeasystems.com>
2015-08-23 17:59:43 -04:00

95 lines
2.6 KiB
JavaScript

'use strict';
var common = require('../common'),
assert = require('assert'),
path = require('path'),
child_process = require('child_process');
var nodeBinary = process.argv[0];
var preloadOption = function(preloads) {
var option = '';
preloads.forEach(function(preload, index) {
option += '-r ' + preload + ' ';
});
return option;
};
var fixture = function(name) {
return path.join(__dirname, '../fixtures/' + name);
};
var fixtureA = fixture('printA.js');
var fixtureB = fixture('printB.js');
var fixtureC = fixture('printC.js');
var fixtureThrows = fixture('throws_error4.js');
// test preloading a single module works
child_process.exec(nodeBinary + ' '
+ preloadOption([fixtureA]) + ' '
+ fixtureB,
function(err, stdout, stderr) {
if (err) throw err;
assert.equal(stdout, 'A\nB\n');
});
// test preloading multiple modules works
child_process.exec(nodeBinary + ' '
+ preloadOption([fixtureA, fixtureB]) + ' '
+ fixtureC,
function(err, stdout, stderr) {
if (err) throw err;
assert.equal(stdout, 'A\nB\nC\n');
});
// test that preloading a throwing module aborts
child_process.exec(nodeBinary + ' '
+ preloadOption([fixtureA, fixtureThrows]) + ' '
+ fixtureB,
function(err, stdout, stderr) {
if (err) {
assert.equal(stdout, 'A\n');
} else {
throw new Error('Preload should have failed');
}
});
// test that preload can be used with --eval
child_process.exec(nodeBinary + ' '
+ preloadOption([fixtureA])
+ '-e "console.log(\'hello\');"',
function(err, stdout, stderr) {
if (err) throw err;
assert.equal(stdout, 'A\nhello\n');
});
// test that preload placement at other points in the cmdline
// also test that duplicated preload only gets loaded once
child_process.exec(nodeBinary + ' '
+ preloadOption([fixtureA])
+ '-e "console.log(\'hello\');" '
+ preloadOption([fixtureA, fixtureB]),
function(err, stdout, stderr) {
if (err) throw err;
assert.equal(stdout, 'A\nB\nhello\n');
});
child_process.exec(nodeBinary + ' '
+ '--require ' + fixture('cluster-preload.js') + ' '
+ fixture('cluster-preload-test.js'),
function(err, stdout, stderr) {
if (err) throw err;
assert.ok(/worker terminated with code 43/.test(stdout));
});
// https://github.com/nodejs/node/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));
});