}
static void PrintHelp() {
- printf("Usage: node [options] script.js [arguments] \n"
- " node debug script.js [arguments] \n"
+ printf("Usage: node [options] [ -e script | script.js ] [arguments] \n"
+ " node debug [ -e script | script.js ] [arguments] \n"
"\n"
"Options:\n"
" -v, --version print node's version\n"
+ " -e, --eval script evaluate script\n"
" --v8-options print v8 command line options\n"
" --vars print various compiled-in variables\n"
" --max-stack-size=val set max v8 stack size (bytes)\n"
var d = NativeModule.require('_debugger');
d.start();
+ } else if (process._eval != null) {
+ // User passed '-e' or '--eval' arguments to Node.
+ var Module = NativeModule.require('module');
+ var path = NativeModule.require('path');
+ var cwd = process.cwd();
+
+ var module = new Module('eval');
+ module.filename = path.join(cwd, 'eval');
+ module.paths = Module._nodeModulePaths(cwd);
+ var rv = module._compile('return eval(process._eval)', 'eval');
+ console.log(rv);
+
} else if (process.argv[1]) {
// make process.argv[1] into a full path
if (!(/^http:\/\//).exec(process.argv[1])) {
// Main entry point into most programs:
process.nextTick(Module.runMain);
- } else if (process._eval != null) {
- // User passed '-e' or '--eval' arguments to Node.
- var Module = NativeModule.require('module');
- var path = NativeModule.require('path');
- var cwd = process.cwd();
-
- var module = new Module('eval');
- module.filename = path.join(cwd, 'eval');
- module.paths = Module._nodeModulePaths(cwd);
- var rv = module._compile('return eval(process._eval)', 'eval');
- console.log(rv);
-
} else {
var binding = process.binding('stdio');
var fd = binding.openStdin();
--- /dev/null
+// 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.
+
+require('../common');
+var assert = require('assert');
+var exec = require('child_process').exec;
+
+var success_count = 0;
+var error_count = 0;
+
+var cmd = [process.execPath, '-e', '"process.argv"', 'foo', 'bar'].join(' ');
+var expected = "[ '" + process.execPath + "',\n 'foo',\n 'bar' ]\n";
+var child = exec(cmd, function(err, stdout, stderr) {
+ if (err) {
+ console.log(err.toString());
+ ++error_count;
+ return;
+ }
+ assert.equal(stdout, expected);
+ ++success_count;
+});
+
+process.addListener('exit', function() {
+ assert.equal(1, success_count);
+ assert.equal(0, error_count);
+});
+