From 7a2e784ad7386771d15249d446c914fba1675068 Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Sat, 31 Oct 2009 19:02:30 +0100 Subject: [PATCH] Module refactor - almost CommonJS compatible now API change summary: * require("/sys.js") becomes require("sys") * require("circle.js") becomes require("./circle") * process.path.join() becomes require("path").join() --- bin/node-repl | 4 +- doc/api.txt | 163 ++++--- doc/index.html | 10 +- lib/file.js | 2 +- lib/http.js | 2 +- lib/repl.js | 2 +- src/file.js | 5 - src/node.js | 439 +++++++++++------- src/util.js | 53 --- test/mjsunit/common.js | 18 +- test/mjsunit/fixtures/a.js | 2 +- test/mjsunit/fixtures/b/c.js | 8 +- test/mjsunit/fixtures/b/package/index.js | 2 + test/mjsunit/test-buffered-file.js | 8 +- test/mjsunit/test-delayed-require.js | 4 +- .../test-event-emitter-add-listeners.js | 2 +- test/mjsunit/test-exec.js | 2 +- test/mjsunit/test-file-cat-noexist.js | 4 +- test/mjsunit/test-fs-sendfile.js | 8 +- test/mjsunit/test-fs-stat.js | 2 +- test/mjsunit/test-fs-write.js | 10 +- test/mjsunit/test-http-cat.js | 4 +- test/mjsunit/test-http-client-race.js | 4 +- test/mjsunit/test-http-client-upload.js | 4 +- test/mjsunit/test-http-malformed-request.js | 6 +- test/mjsunit/test-http-proxy.js | 4 +- test/mjsunit/test-http-server.js | 6 +- test/mjsunit/test-http.js | 4 +- test/mjsunit/test-mkdir-rmdir.js | 8 +- test/mjsunit/test-module-loading.js | 8 +- test/mjsunit/test-multipart.js | 8 +- test/mjsunit/test-process-buffering.js | 2 +- test/mjsunit/test-process-kill.js | 2 +- test/mjsunit/test-process-simple.js | 2 +- test/mjsunit/test-process-spawn-loop.js | 2 +- test/mjsunit/test-promise-timeout.js | 2 +- test/mjsunit/test-promise-wait.js | 2 +- test/mjsunit/test-readdir.js | 2 +- test/mjsunit/test-signal-handler.js | 2 +- test/mjsunit/test-tcp-binary.js | 4 +- test/mjsunit/test-tcp-many-clients.js | 4 +- test/mjsunit/test-tcp-pingpong-delay.js | 4 +- test/mjsunit/test-tcp-pingpong.js | 4 +- test/mjsunit/test-tcp-reconnect.js | 4 +- .../test-tcp-throttle-kernel-buffer.js | 4 +- test/mjsunit/test-tcp-throttle.js | 4 +- test/mjsunit/test-tcp-timeout.js | 4 +- test/mjsunit/test-timers.js | 2 +- test/mjsunit/test-utf8-scripts.js | 2 +- test/mjsunit/test-wait-ordering.js | 2 +- 50 files changed, 473 insertions(+), 387 deletions(-) create mode 100644 test/mjsunit/fixtures/b/package/index.js diff --git a/bin/node-repl b/bin/node-repl index e08dee0043e571..b4c60b7428b8cc 100755 --- a/bin/node-repl +++ b/bin/node-repl @@ -1,11 +1,11 @@ #!/usr/bin/env node -process.mixin(require("/utils.js")); +process.mixin(require('sys')); puts("Welcome to the Node.js REPL."); puts("Enter ECMAScript at the prompt."); puts("Tip 1: Use 'rlwrap node-repl' for a better interface"); puts("Tip 2: Type Control-D to exit."); -require("/repl.js").start(); +require('repl').start(); // vim:ft=javascript diff --git a/doc/api.txt b/doc/api.txt index 8654cc872996a1..db559f732b0619 100644 --- a/doc/api.txt +++ b/doc/api.txt @@ -16,8 +16,8 @@ An example of a web server written with Node which responds with "Hello World": ---------------------------------------- -var sys = require("/sys.js"), - http = require("/http.js"); +var sys = require("sys"), + http = require("http"); http.createServer(function (request, response) { response.sendHeader(200, {"Content-Type": "text/plain"}); response.sendBody("Hello World\n"); @@ -80,7 +80,7 @@ more information. A listener on this event should not try to perform I/O since the process will forcibly exit in less than microsecond. However, it is a good hook to - perform constant time checks of the module's + perform constant time checks of the module"s state (like for unit tests). + The parameter +code+ is the integer exit code @@ -126,11 +126,12 @@ copy, recursively copying any objects it finds. Otherwise, the copy will share structure with the original object(s). + Undefined properties are not copied. However, properties inherited from the -object's prototype will be copied over. +object"s prototype will be copied over. === System module -These function are in +"/sys.js"+. Use +require("/sys.js")+ to access them. +These function are in the module +"sys"+. Use +require("sys")+ to access +them. +puts(string)+:: Outputs the +string+ and a trailing new-line to +stdout+. @@ -150,7 +151,7 @@ Executes the command as a child process, buffers the output and returns it in a promise callback. + ---------------------------------------- -var sys = require("/sys.js"); +var sys = require("sys"); sys.exec("ls /").addCallback(function (stdout, stderr) { puts(stdout); }); @@ -235,7 +236,7 @@ Adds a listener for the +"cancel"+ event. Returns the same promise object. If you created the promise (by doing +new process.Promise()+) then call +emitSuccess+ to emit the +"success"+ event with the given arguments. + -(+promise.emit("success", arg1, arg2, ...)+ should also work, but doesn't at +(+promise.emit("success", arg1, arg2, ...)+ should also work, but doesn"t at the moment due to a bug; use +emitSuccess+ instead.) +promise.emitError(arg1, arg2, ...)+ :: @@ -261,7 +262,7 @@ To tell apart a timeout from a regular "error" event, use the following test: + ---------------------------------------- promise.addErrback(function(e) { - if (e instanceof Error && e.message === 'timeout') { + if (e instanceof Error && e.message === "timeout") { // handle timeout } else { // handle regular error @@ -286,7 +287,7 @@ If +"error"+ was emitted instead, +wait()+ throws an error. + *IMPORTANT* +promise.wait()+ is not a true fiber/coroutine. If any other promises are created and made to wait while the first promise waits, the -first promise's wait will not return until all others return. The benefit of +first promise"s wait will not return until all others return. The benefit of this is a simple implementation and the event loop does not get blocked. Disadvantage is the possibility of situations where the promise stack grows infinitely large because promises keep getting created and keep being told @@ -328,15 +329,17 @@ Close stdin. === Modules +Node uses the CommonJS module system + Node has a simple module loading system. In Node, files and modules are in one-to-one correspondence. As an example, +foo.js+ loads the module -+circle.js+. ++circle.js+ in the same directory. The contents of +foo.js+: ---------------------------------------- -var circle = require("circle.js"), - sys = require("/sys.js"); +var circle = require("./circle"), +var sys = require("sys"); sys.puts("The area of a circle of radius 4 is " + circle.area(4)); ---------------------------------------- @@ -358,42 +361,56 @@ The module +circle.js+ has exported the functions +area()+ and +circumference()+. To export an object, add to the special +exports+ object. (Alternatively, one can use +this+ instead of +exports+.) Variables local to the module will be private. In this example the variable +PI+ is -private to +circle.js+. The function +puts()+ comes from the module -+"/sys.js"+. +private to +circle.js+. The function +puts()+ comes from the module +"sys"+, +which is a built-in module. Modules which are not prefixed by +"./"+ are +built-in module--more about this later. -The module path is relative to the file calling +require()+. That is, -+circle.js+ must be in the same directory as +foo.js+ for +require()+ to -find it. +A module prefixed with +"./"+ is relative to the file calling +require()+. +That is, +circle.js+ must be in the same directory as +foo.js+ for ++require("./circle")+ to find it. -Use +process.mixin()+ to include modules into the global namespace. - ----------------------------------------- -process.mixin(process, require("circle.js"), require("/sys.js")); -puts("The area of a cirlce of radius 4 is " + area(4)); ----------------------------------------- - -When an absolute path is given to +require()+, like -+require("/mjsunit.js")+ the module is searched for in the -+require.paths+ array. +require.paths+ on my system looks like this: +Without the leading +"./"+, like +require("mjsunit")+ the module is searched +for in the +require.paths+ array. +require.paths+ on my system looks like +this: ---------------------------------------- [ "/home/ryan/.node_libraries" -, "/home/ryan/local/node/lib/node_libraries" -, "/" +, "/usr/local/lib/node/libraries" ] ---------------------------------------- -That is, first Node looks for +"/home/ryan/.node_libraries/mjsunit.js"+ and -then for +"/home/ryan/local/node/lib/node_libraries/mjsunit.js"+. If not -found, it finally looks for +"/mjsunit.js"+ (in the root directory). +That is, when +require("mjsunit")+ is called Node looks for + + 1. +"/home/ryan/.node_libraries/mjsunit.js"+ + + 2. +"/home/ryan/.node_libraries/mjsunit.node"+ + + 3. +"/home/ryan/.node_libraries/mjsunit/index.js"+ + + 4. +"/home/ryan/.node_libraries/mjsunit/index.node"+ + + 5. +"/usr/local/lib/node/libraries/mjsunit.js"+ + + 6. +"/usr/local/lib/node/libraries/mjsunit.node"+ + + 7. +"/usr/local/lib/node/libraries/mjsunit/index.js"+ + + 8. +"/usr/local/lib/node/libraries/mjsunit/index.node"+ + +interrupting once a file is found. Files ending in +".node"+ are binary Addon +Modules; see the section below about addons. +"index.js"+ allows one to +package a module as a directory. +require.paths+ can be modified at runtime by simply unshifting new -paths on to it and at startup with the +NODE_LIBRARY_PATHS+ environmental +paths on to it and at startup with the +NODE_PATH+ environmental variable (which should be a list of paths, colon separated). -Node comes with several libraries which are installed when +"make install"+ -is run. These are currently undocumented, but do look them up in your -system. +Use +process.mixin()+ to include modules into the global namespace. + +---------------------------------------- +process.mixin(GLOBAL, require("./circle"), require("sys")); +puts("The area of a cirlce of radius 4 is " + area(4)); +---------------------------------------- @@ -422,7 +439,7 @@ Stops a interval from triggering. === Child Processes Node provides a tridirectional +popen(3)+ facility through the class -+process.ChildProcess+. It is possible to stream data through the child's +stdin+, ++process.ChildProcess+. It is possible to stream data through the child"s +stdin+, +stdout+, and +stderr+ in a fully non-blocking way. ==== +process.ChildProcess+ @@ -468,13 +485,13 @@ The PID of the child process. +child.write(data, encoding="ascii")+ :: -Write data to the child process's +stdin+. The second argument is optional and +Write data to the child process"s +stdin+. The second argument is optional and specifies the encoding: possible values are +"utf8"+, +"ascii"+, and +"binary"+. +child.close()+ :: -Closes the process's +stdin+ stream. +Closes the process"s +stdin+ stream. +child.kill(signal="SIGTERM")+ :: @@ -486,14 +503,14 @@ will be sent +"SIGTERM"+. See signal(7) for a list of available signals. === POSIX module File I/O is provided by simple wrappers around standard POSIX functions. To -use this module do +require("/posix.js")+. +use this module do +require("posix")+. All POSIX wrappers have a similar form. They return a promise (+process.Promise+). Example of deleting a file: ------------------------------------------------------------------------------ -var posix = require("/posix.js"), - sys = require("/sys.js"); +var posix = require("posix"), + sys = require("sys"); var promise = posix.unlink("/tmp/hello"); @@ -638,7 +655,7 @@ Objects returned from +posix.stat()+ are of this type. === HTTP -To use the HTTP server and client one must +require("/http.js")+. +To use the HTTP server and client one must +require("http")+. The HTTP interfaces in Node are designed to support many features of the protocol which have been traditionally difficult to use. @@ -656,7 +673,7 @@ HTTP message headers are represented by an object like this } ---------------------------------------- -In order to support the full spectrum of possible HTTP applications, Node's +In order to support the full spectrum of possible HTTP applications, Node"s HTTP API is very low-level. It deals with connection handling and message parsing only. It parses a message into headers and body but it does not parse the actual headers or the body. @@ -819,7 +836,7 @@ higher-level multi-part body encodings that may be used. + The first time +sendBody+ is called, it will send the buffered header information and the first body to the client. The second time -+sendBody+ is called, Node assumes you're going to be streaming data, and ++sendBody+ is called, Node assumes you"re going to be streaming data, and sends that seperately. That is, the response is buffered up to the first chunk of body. @@ -1003,13 +1020,13 @@ After emitted no other events will be emitted on the response. === Multipart Parsing A library to parse HTTP requests with +multipart/form-data+ is included with -Node. To use it, +require("/multipart.js")+. +Node. To use it, +require("multipart")+. +multipart.parse(options)+ :: - on success: Returns an object where each key holds the value of one part of the stream. +options+ can either be an instance of - +http.ServerRequest+ or an object containing a 'boundary' and a - 'data' key. + +http.ServerRequest+ or an object containing a "boundary" and a + "data" key. - on error: no parameters. ==== +multipart.Stream+ @@ -1017,24 +1034,24 @@ Node. To use it, +require("/multipart.js")+. Here is an example for parsing a +multipart/form-data+ request: ---------------------------------------- -var multipart = require('/multipart.js'); +var multipart = require("multipart"); var stream = new multipart.Stream(options); var parts = {}; -stream.addListener('part', function (part) { - var name = part.headers['Content-Disposition'].name; - var buffer = ''; +stream.addListener("part", function (part) { + var name = part.headers["Content-Disposition"].name; + var buffer = ""; - part.addListener('body', function(chunk) { + part.addListener("body", function(chunk) { buffer = buffer + chunk; }); - part.addListener('complete', function() { + part.addListener("complete", function() { parts[name] = buffer; }); }); -stream.addListener('complete', function() { +stream.addListener("complete", function() { // The parts object now contains all parts and data }); ---------------------------------------- @@ -1060,7 +1077,7 @@ stream.addListener('complete', function() { === TCP -To use the TCP server and client one must +require("/tcp.js")+. +To use the TCP server and client one must +require("tcp")+. ==== +tcp.Server+ @@ -1068,7 +1085,7 @@ Here is an example of a echo server which listens for connections on port 7000 ---------------------------------------- -var tcp = require("/tcp.js"); +var tcp = require("tcp"); var server = tcp.createServer(function (socket) { socket.setEncoding("utf8"); socket.addListener("connect", function () { @@ -1222,13 +1239,13 @@ immediately fire off data each time +connection.send()+ is called. === DNS module -Use +require("/dns.js")+ to access this module +Use +require("dns")+ to access this module Here is an example of which resolves +"www.google.com"+ then reverse resolves the IP addresses which are returned. ------------------------------------------------------------------------- -var dns = require("/dns.js"); +var dns = require("dns"); var resolution = dns.resolve4("www.google.com"); @@ -1298,7 +1315,7 @@ A Read-Eval-Print-Loop is available both as a standalone program and easily includable in other programs. The standalone REPL is called +node-repl+ and is installed at -+$PREFIX/bin/node-repl+. It's recommended to use it with the program ++$PREFIX/bin/node-repl+. It"s recommended to use it with the program +rlwrap+ for a better user interface. I set ------------------------------------ alias node-repl="rlwrap node-repl" @@ -1310,9 +1327,9 @@ result of the last expression. The library is called +/repl.js+ and it can be used like this: ------------------------------------ -var sys = require("/sys.js"), - tcp = require("/tcp.js"), - repl = require("/repl.js"); +var sys = require("sys"), + tcp = require("tcp"), + repl = require("repl"); nconnections = 0; tcp.createServer(function (c) { sys.error("Connection!"); @@ -1351,10 +1368,10 @@ knowledge of several libraries: - Others. Look in +deps/+ for what else is available. Node statically compiles all its dependencies into the executable. When -compiling your module, you don't need to worry about linking to any of these +compiling your module, you don"t need to worry about linking to any of these libraries. -To get started let's make a small Addon which does the following except in +To get started let"s make a small Addon which does the following except in C++: ----------------------------------------------------- exports.hello = "world"; @@ -1378,20 +1395,20 @@ This source code needs to be built into +hello.node+, the binary Addon. To do this we create a file called +wscript+ which is python code and looks like this: ----------------------------------------------------- -srcdir = '.' -blddir = 'build' -VERSION = '0.0.1' +srcdir = "." +blddir = "build" +VERSION = "0.0.1" def set_options(opt): - opt.tool_options('compiler_cxx') + opt.tool_options("compiler_cxx") def configure(conf): - conf.check_tool('compiler_cxx') - conf.check_tool('node_addon') + conf.check_tool("compiler_cxx") + conf.check_tool("node_addon") def build(bld): - obj = bld.new_task_gen('cxx', 'shlib', 'node_addon') - obj.target = 'hello' + obj = bld.new_task_gen("cxx", "shlib", "node_addon") + obj.target = "hello" obj.source = "hello.cc" ----------------------------------------------------- Running +node-waf configure build+ will create a file diff --git a/doc/index.html b/doc/index.html index 0f931f51dffa0d..3380ff1d93743c 100644 --- a/doc/index.html +++ b/doc/index.html @@ -42,16 +42,16 @@

Node

-var sys = require("/sys.js"), 
-   http = require("/http.js");
+var sys = require('sys'), 
+   http = require('http');
 http.createServer(function (req, res) {
   setTimeout(function () {
-    res.sendHeader(200, {"Content-Type": "text/plain"});
-    res.sendBody("Hello World");
+    res.sendHeader(200, {'Content-Type': 'text/plain'});
+    res.sendBody('Hello World');
     res.finish();
   }, 2000);
 }).listen(8000);
-sys.puts("Server running at http://127.0.0.1:8000/");
+sys.puts('Server running at http://127.0.0.1:8000/');

diff --git a/lib/file.js b/lib/file.js index 5565fd1770221b..84a09a8b456216 100644 --- a/lib/file.js +++ b/lib/file.js @@ -1,4 +1,4 @@ -var posix = require("/posix.js"); +var posix = require("./posix"); /*jslint onevar: true, undef: true, eqeqeq: true, plusplus: true, regexp: true, newcap: true, immed: true */ /*globals exports, node, __filename */ diff --git a/lib/http.js b/lib/http.js index ff00b2cd187f5a..c94ccfa767b9cd 100644 --- a/lib/http.js +++ b/lib/http.js @@ -1,4 +1,4 @@ -var sys = require("/sys.js"); +var sys = require('sys'); var CRLF = "\r\n"; var STATUS_CODES = { diff --git a/lib/repl.js b/lib/repl.js index 5ca84ecac1065a..c887f86bdb22d5 100644 --- a/lib/repl.js +++ b/lib/repl.js @@ -1,7 +1,7 @@ // A repl library that you can include in your own code to get a runtime // interface to your program. Just require("/repl.js"). -var sys = require("/sys.js"); +var sys = require('sys'); sys.puts("Type '.help' for options."); diff --git a/src/file.js b/src/file.js index 307eee392fc88b..56a71ca22bcd70 100644 --- a/src/file.js +++ b/src/file.js @@ -1,8 +1,3 @@ -process.fs.exists = function (path, callback) { - var p = process.fs.stat(path); - p.addCallback(function () { callback(true); }); - p.addErrback(function () { callback(false); }); -}; process.fs.cat = function (path, encoding) { var promise = new process.Promise(); diff --git a/src/node.js b/src/node.js index 50e37c426e943e..0c359578bada4c 100644 --- a/src/node.js +++ b/src/node.js @@ -1,26 +1,37 @@ +(function () { // annonymous namespace + +// deprecation errors + +GLOBAL.include = function () { + throw new Error("include() has been removed. Use process.mixin(process, require(file)) to get the same effect."); +}; + +GLOBAL.puts = function () { + throw new Error("puts() has moved. Use require('/sys.js') to bring it back."); +} + +GLOBAL.print = function () { + throw new Error("print() has moved. Use require('/sys.js') to bring it back."); +} + +GLOBAL.p = function () { + throw new Error("p() has moved. Use require('/sys.js') to bring it back."); +} + +process.debug = function () { + throw new Error("process.debug() has moved. Use require('/sys.js') to bring it back."); +} + +process.error = function () { + throw new Error("process.error() has moved. Use require('/sys.js') to bring it back."); +} + process.tcp.createServer = function () { throw new Error("process.tcp.createServer() has moved. Use require('/tcp.js') to access it."); }; process.createProcess = function () { - throw "process.createProcess() has been changed to process.createChildProcess() update your code"; -}; - -process.createChildProcess = function (file, args, env) { - var child = new process.ChildProcess(); - args = args || []; - env = env || process.ENV; - var envPairs = []; - for (var key in env) { - if (env.hasOwnProperty(key)) { - envPairs.push(key + "=" + env[key]); - } - } - // TODO Note envPairs is not currently used in child_process.cc. The PATH - // needs to be searched for the 'file' command if 'file' does not contain - // a '/' character. - child.spawn(file, args, envPairs); - return child; + throw new Error("process.createProcess() has been changed to process.createChildProcess() update your code"); }; process.exec = function () { @@ -39,15 +50,30 @@ process.tcp.createConnection = function (port, host) { throw new Error("process.tcp.createConnection() has moved. Use require('/tcp.js') to access it."); }; -include = function () { - throw new Error("include() has been removed. Use process.mixin(process, require(file)) to get the same effect."); -} -/* From jQuery.extend in the jQuery JavaScript Library v1.3.2 - * Copyright (c) 2009 John Resig - * Dual licensed under the MIT and GPL licenses. - * http://docs.jquery.com/License - */ + + +process.createChildProcess = function (file, args, env) { + var child = new process.ChildProcess(); + args = args || []; + env = env || process.ENV; + var envPairs = []; + for (var key in env) { + if (env.hasOwnProperty(key)) { + envPairs.push(key + "=" + env[key]); + } + } + // TODO Note envPairs is not currently used in child_process.cc. The PATH + // needs to be searched for the 'file' command if 'file' does not contain + // a '/' character. + child.spawn(file, args, envPairs); + return child; +}; + +// From jQuery.extend in the jQuery JavaScript Library v1.3.2 +// Copyright (c) 2009 John Resig +// Dual licensed under the MIT and GPL licenses. +// http://docs.jquery.com/License process.mixin = function() { // copy reference to target object var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options; @@ -98,188 +124,278 @@ process.mixin = function() { return target; }; + + // Signal Handlers -(function () { // anonymous namespace +function isSignal (event) { + return event.slice(0, 3) === 'SIG' && process.hasOwnProperty(event); +}; - function isSignal (event) { - return event.slice(0, 3) === 'SIG' && process.hasOwnProperty(event); - }; +process.addListener("newListener", function (event) { + if (isSignal(event) && process.listeners(event).length === 0) { + var handler = new process.SignalHandler(process[event]); + handler.addListener("signal", function () { + process.emit(event); + }); + } +}); - process.addListener("newListener", function (event) { - if (isSignal(event) && process.listeners(event).length === 0) { - var handler = new process.SignalHandler(process[event]); - handler.addListener("signal", function () { - process.emit(event); - }); - } - }); -})(); // anonymous namespace // Timers -function setTimeout (callback, after) { +GLOBAL.setTimeout = function (callback, after) { var timer = new process.Timer(); timer.addListener("timeout", callback); timer.start(after, 0); return timer; } -function setInterval (callback, repeat) { +GLOBAL.setInterval = function (callback, repeat) { var timer = new process.Timer(); timer.addListener("timeout", callback); timer.start(repeat, repeat); return timer; } -function clearTimeout (timer) { +GLOBAL.clearTimeout = function (timer) { timer.stop(); } -clearInterval = clearTimeout; +GLOBAL.clearInterval = GLOBAL.clearTimeout; + + + -// Module +// Modules -process.libraryPaths = [ process.path.join(process.ENV["HOME"], ".node_libraries") - , process.path.join(process.installPrefix, "lib/node/libraries") - , "/" - ]; +var debugLevel = 0; +if ("NODE_DEBUG" in process.ENV) debugLevel = 1; -if (process.ENV["NODE_LIBRARY_PATHS"]) { - process.libraryPaths = - process.ENV["NODE_LIBRARY_PATHS"].split(":").concat(process.libraryPaths); +function debug (x) { + if (debugLevel > 0) { + process.stdio.writeError(x + "\n"); + } } -process.Module = function (filename, parent) { - process.assert(filename.charAt(0) == "/"); - this.filename = filename; + +// private constructor +function Module (name, parent) { + this.name = name; this.exports = {}; this.parent = parent; + this.filename = null; this.loaded = false; this.loadPromise = null; this.exited = false; this.children = []; }; -process.Module.cache = {}; +var moduleCache = {}; -(function () { - function retrieveFromCache (loadPromise, fullPath, parent) { - var module; - if (fullPath in process.Module.cache) { - module = process.Module.cache[fullPath]; - setTimeout(function () { - loadPromise.emitSuccess(module.exports); - }, 0); - } else { - module = new process.Module(fullPath, parent); - process.Module.cache[fullPath] = module; - module.load(loadPromise); - } +function createModule (name, parent) { + if (name in moduleCache) { + debug("found " + JSON.stringify(name) + " in cache"); + return moduleCache[name]; } + debug("didn't found " + JSON.stringify(name) + " in cache. creating new module"); + var m = new Module(name, parent); + moduleCache[name] = m; + return m; +}; - function findPath (path, dirs, callback) { - process.assert(path.charAt(0) == "/"); - process.assert(dirs.constructor == Array); +function createInternalModule (name, constructor) { + var m = createModule(name); + constructor(m.exports); + m.loaded = true; + return m; +}; - if (dirs.length == 0) { - callback(); - } else { - var dir = dirs[0]; - var rest = dirs.slice(1, dirs.length); - - var fullPath = process.path.join(dir, path); - process.fs.exists(fullPath, function (doesExist) { - if (doesExist) { - callback(fullPath); - } else { - findPath(path, rest, callback); - } - }); - } - } +var pathModule = createInternalModule("path", function (exports) { + exports.join = function () { + var joined = ""; + for (var i = 0; i < arguments.length; i++) { + var part = arguments[i].toString(); - process.loadModule = function (requestedPath, exports, parent) { - var loadPromise = new process.Promise(); + /* Some logic to shorten paths */ + if (part === ".") continue; + while (/^\.\//.exec(part)) part = part.replace(/^\.\//, ""); - // On success copy the loaded properties into the exports - loadPromise.addCallback(function (t) { - for (var prop in t) { - if (t.hasOwnProperty(prop)) exports[prop] = t[prop]; + if (i === 0) { + part = part.replace(/\/*$/, "/"); + } else if (i === arguments.length - 1) { + part = part.replace(/^\/*/, ""); + } else { + part = part.replace(/^\/*/, "").replace(/\/*$/, "/"); } - }); + joined += part; + } + return joined; + }; - loadPromise.addErrback(function (e) { - process.stdio.writeError(e.message + "\n"); - process.exit(1); - }); + exports.dirname = function (path) { + if (path.charAt(0) !== "/") path = "./" + path; + var parts = path.split("/"); + return parts.slice(0, parts.length-1).join("/"); + }; - if (!parent) { - // root module - process.assert(requestedPath.charAt(0) == "/"); - retrieveFromCache(loadPromise, requestedPath); + exports.filename = function (path) { + if (path.charAt(0) !== "/") path = "./" + path; + var parts = path.split("/"); + return parts[parts.length-1]; + }; - } else { - if (requestedPath.charAt(0) == "/") { - // Need to find the module in process.libraryPaths - findPath(requestedPath, process.libraryPaths, function (fullPath) { - if (fullPath) { - retrieveFromCache(loadPromise, fullPath, parent); - } else { - loadPromise.emitError(new Error("Cannot find module '" + requestedPath + "'")); + exports.exists = function (path, callback) { + var p = process.fs.stat(path); + p.addCallback(function () { callback(true); }); + p.addErrback(function () { callback(false); }); + }; +}); + +var path = pathModule.exports; + + + +var modulePaths = [ path.join(process.installPrefix, "lib/node/libraries") + ]; + +if (process.ENV["HOME"]) { + modulePaths.unshift(path.join(process.ENV["HOME"], ".node_libraries")); +} + +if (process.ENV["NODE_PATH"]) { + modulePaths = process.ENV["NODE_PATH"].split(":").concat(modulePaths); +} + + +function findModulePath (name, dirs, callback) { + process.assert(dirs.constructor == Array); + + if (/.(js|node)$/.exec(name)) { + throw new Error("No longer accepting filename extension in module names"); + } + + if (dirs.length == 0) { + callback(); + return; + } + + var dir = dirs[0]; + var rest = dirs.slice(1, dirs.length); + + var js = path.join(dir, name + ".js"); + var addon = path.join(dir, name + ".node"); + var indexJs = path.join(dir, name, "index.js"); + var indexAddon = path.join(dir, name, "index.addon"); + + // TODO clean up the following atrocity! + + path.exists(js, function (found) { + if (found) { + callback(js); + return; + } + path.exists(addon, function (found) { + if (found) { + callback(addon); + return; + } + path.exists(indexJs, function (found) { + if (found) { + callback(indexJs); + return; + } + path.exists(indexAddon, function (found) { + if (found) { + callback(indexAddon); + return; } + findModulePath(name, rest, callback); }); + }); + }); + }); +} + +function loadModule (request, parent) { + // This is the promise which is actually returned from require.async() + var loadPromise = new process.Promise(); + loadPromise.addErrback(function (e) { + process.stdio.writeError(e.message + "\n"); + process.exit(1); + }); + + debug("loadModule REQUEST " + JSON.stringify(request) + " parent: " + JSON.stringify(parent)); + + var name, paths; + if (request.charAt(0) == "." && request.charAt(1) == "/") { + // Relative request + name = path.join(path.dirname(parent.name), request); + paths = [path.dirname(parent.filename)]; + } else { + name = request; + paths = modulePaths; + } + + if (name in moduleCache) { + debug("found " + JSON.stringify(name) + " in cache"); + // In cache + var module = moduleCache[name]; + setTimeout(function () { + loadPromise.emitSuccess(module.exports); + }, 0); + } else { + debug("looking for " + JSON.stringify(name) + " in " + JSON.stringify(paths)); + // Not in cache + findModulePath(request, paths, function (filename) { + if (!filename) { + loadPromise.emitError(new Error("Cannot find module '" + request + "'")); } else { - // Relative file load - var fullPath = process.path.join(process.path.dirname(parent.filename), - requestedPath); - retrieveFromCache(loadPromise, fullPath, parent); + var module = createModule(name, parent); + module.load(filename, loadPromise); } - } + }); + } - return loadPromise; - }; -}()); + return loadPromise; +}; + +Module.prototype.load = function (filename, loadPromise) { + debug("load " + JSON.stringify(filename) + " for module " + JSON.stringify(this.name)); + + process.assert(!this.loaded); + process.assert(!this.loadPromise); -process.Module.prototype.load = function (loadPromise) { - if (this.loaded) { - loadPromise.emitError(new Error("Module '" + self.filename + "' is already loaded.")); - return; - } - process.assert(!process.loadPromise); this.loadPromise = loadPromise; + this.filename = filename; - if (this.filename.match(/\.node$/)) { - this.loadObject(loadPromise); + if (filename.match(/\.node$/)) { + this.loadObject(filename, loadPromise); } else { - this.loadScript(loadPromise); + this.loadScript(filename, loadPromise); } }; -process.Module.prototype.loadObject = function (loadPromise) { +Module.prototype.loadObject = function (filename, loadPromise) { var self = this; // XXX Not yet supporting loading from HTTP. would need to download the // file, store it to tmp then run dlopen on it. - process.fs.exists(self.filename, function (does_exist) { - if (does_exist) { - self.loaded = true; - process.dlopen(self.filename, self.exports); // FIXME synchronus - loadPromise.emitSuccess(self.exports); - } else { - loadPromise.emitError(new Error("Error reading " + self.filename)); - } - }); + setTimeout(function () { + self.loaded = true; + process.dlopen(filename, self.exports); // FIXME synchronus + loadPromise.emitSuccess(self.exports); + }, 0); }; -process.Module.prototype.loadScript = function (loadPromise) { +Module.prototype.loadScript = function (filename, loadPromise) { var self = this; - var catPromise = process.cat(self.filename); + var catPromise = process.cat(filename); catPromise.addErrback(function () { - loadPromise.emitError(new Error("Error reading " + self.filename)); + loadPromise.emitError(new Error("Error reading " + filename)); }); catPromise.addCallback(function (content) { @@ -287,23 +403,23 @@ process.Module.prototype.loadScript = function (loadPromise) { content = content.replace(/^\#\!.*/, ''); function requireAsync (url) { - return self.newChild(url); + return loadModule(url, self); // new child } function require (url) { return requireAsync(url).wait(); } - require.paths = process.libraryPaths; + require.paths = modulePaths; require.async = requireAsync; // create wrapper function - var wrapper = "var __wrap__ = function (__module, __filename, exports, require) { " + var wrapper = "var __wrap__ = function (exports, require, module, __filename) { " + content + "\n}; __wrap__;"; - var compiled_wrapper = process.compile(wrapper, self.filename); + var compiledWrapper = process.compile(wrapper, filename); - compiled_wrapper.apply(self.exports, [self, self.filename, self.exports, require]); + compiledWrapper.apply(self.exports, [self.exports, require, self, filename]); self.waitChildrenLoad(function () { self.loaded = true; @@ -312,11 +428,7 @@ process.Module.prototype.loadScript = function (loadPromise) { }); }; -process.Module.prototype.newChild = function (path) { - return process.loadModule(path, {}, this); -}; - -process.Module.prototype.waitChildrenLoad = function (callback) { +Module.prototype.waitChildrenLoad = function (callback) { var nloaded = 0; var children = this.children; for (var i = 0; i < children.length; i++) { @@ -339,18 +451,21 @@ process.exit = function (code) { process.reallyExit(code); }; -(function () { - var cwd = process.cwd(); +var cwd = process.cwd(); - // Make process.ARGV[0] and process.ARGV[1] into full paths. - if (process.ARGV[0].charAt(0) != "/") { - process.ARGV[0] = process.path.join(cwd, process.ARGV[0]); - } +// Make process.ARGV[0] and process.ARGV[1] into full paths. +if (process.ARGV[0].charAt(0) != "/") { + process.ARGV[0] = path.join(cwd, process.ARGV[0]); +} - if (process.ARGV[1].charAt(0) != "/") { - process.ARGV[1] = process.path.join(cwd, process.ARGV[1]); - } +if (process.ARGV[1].charAt(0) != "/") { + process.ARGV[1] = path.join(cwd, process.ARGV[1]); +} + +// Load the root module--the command line argument. +var m = createModule("."); +var loadPromise = new process.Promise(); +m.load(process.ARGV[1], loadPromise); +loadPromise.wait(); - // Load the root module--the command line argument. - process.loadModule(process.ARGV[1], process); -}()); +}()); // end annonymous namespace diff --git a/src/util.js b/src/util.js index 794fe3f374f48a..31da60b4990d4b 100644 --- a/src/util.js +++ b/src/util.js @@ -33,58 +33,5 @@ process.cat = function(location, encoding) { return process.fs.cat(location, encoding); }; -process.path = new function () { - this.join = function () { - var joined = ""; - for (var i = 0; i < arguments.length; i++) { - var part = arguments[i].toString(); - /* Some logic to shorten paths */ - if (part === ".") continue; - while (/^\.\//.exec(part)) part = part.replace(/^\.\//, ""); - if (i === 0) { - part = part.replace(/\/*$/, "/"); - } else if (i === arguments.length - 1) { - part = part.replace(/^\/*/, ""); - } else { - part = part.replace(/^\/*/, "").replace(/\/*$/, "/"); - } - joined += part; - } - return joined; - }; - - this.dirname = function (path) { - if (path.charAt(0) !== "/") path = "./" + path; - var parts = path.split("/"); - return parts.slice(0, parts.length-1).join("/"); - }; - - this.filename = function (path) { - if (path.charAt(0) !== "/") path = "./" + path; - var parts = path.split("/"); - return parts[parts.length-1]; - }; -}; - - -puts = function () { - throw new Error("puts() has moved. Use require('/sys.js') to bring it back."); -} - -print = function () { - throw new Error("print() has moved. Use require('/sys.js') to bring it back."); -} - -p = function () { - throw new Error("p() has moved. Use require('/sys.js') to bring it back."); -} - -process.debug = function () { - throw new Error("process.debug() has moved. Use require('/sys.js') to bring it back."); -} - -process.error = function () { - throw new Error("process.error() has moved. Use require('/sys.js') to bring it back."); -} diff --git a/test/mjsunit/common.js b/test/mjsunit/common.js index 6f4de7b7ebcdea..2874f3c9bdb11d 100644 --- a/test/mjsunit/common.js +++ b/test/mjsunit/common.js @@ -1,11 +1,15 @@ -exports.testDir = process.path.dirname(__filename); -exports.fixturesDir = process.path.join(exports.testDir, "fixtures"); -exports.libDir = process.path.join(exports.testDir, "../../lib"); +var path = require("path"); + +exports.testDir = path.dirname(__filename); +exports.fixturesDir = path.join(exports.testDir, "fixtures"); +exports.libDir = path.join(exports.testDir, "../../lib"); require.paths.unshift(exports.libDir); -var mjsunit = require("/mjsunit.js"); -var utils = require("/utils.js"); -process.mixin(exports, mjsunit, utils); -exports.posix = require("/posix.js"); +var mjsunit = require("mjsunit"); +var sys = require("sys"); + +process.mixin(exports, mjsunit, sys); +exports.posix = require("posix"); +exports.path = path; diff --git a/test/mjsunit/fixtures/a.js b/test/mjsunit/fixtures/a.js index ed1da113b0c040..f30ea0c4317047 100644 --- a/test/mjsunit/fixtures/a.js +++ b/test/mjsunit/fixtures/a.js @@ -1,4 +1,4 @@ -var c = require("b/c.js"); +var c = require("./b/c"); debug("load fixtures/a.js"); diff --git a/test/mjsunit/fixtures/b/c.js b/test/mjsunit/fixtures/b/c.js index a9dd96b84614dc..68d40bb1ea6dca 100644 --- a/test/mjsunit/fixtures/b/c.js +++ b/test/mjsunit/fixtures/b/c.js @@ -1,4 +1,10 @@ -var d = require("d.js"); +var d = require("./d"); + +var mjsunit = require("mjsunit"); + +var package = require("./package"); + +mjsunit.assertEquals("world", package.hello); debug("load fixtures/b/c.js"); diff --git a/test/mjsunit/fixtures/b/package/index.js b/test/mjsunit/fixtures/b/package/index.js new file mode 100644 index 00000000000000..4a19b877e57aba --- /dev/null +++ b/test/mjsunit/fixtures/b/package/index.js @@ -0,0 +1,2 @@ +exports.hello = "world"; +debug("load package/index.js"); diff --git a/test/mjsunit/test-buffered-file.js b/test/mjsunit/test-buffered-file.js index ae02e90cf71381..a065ec19b0f733 100644 --- a/test/mjsunit/test-buffered-file.js +++ b/test/mjsunit/test-buffered-file.js @@ -1,10 +1,10 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); -var testTxt = process.path.join(fixturesDir, "test.txt"); +var testTxt = path.join(fixturesDir, "test.txt"); -var libDir = process.path.join(testDir, "../../lib"); +var libDir = path.join(testDir, "../../lib"); require.paths.unshift(libDir); -process.mixin(require("/file.js")); +process.mixin(require("file")); var fileUnlinked = false; diff --git a/test/mjsunit/test-delayed-require.js b/test/mjsunit/test-delayed-require.js index c9f242be84c6cd..e13c82dca0e555 100644 --- a/test/mjsunit/test-delayed-require.js +++ b/test/mjsunit/test-delayed-require.js @@ -1,7 +1,7 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); setTimeout(function () { - a = require("fixtures/a.js"); + a = require("./fixtures/a"); }, 50); process.addListener("exit", function () { diff --git a/test/mjsunit/test-event-emitter-add-listeners.js b/test/mjsunit/test-event-emitter-add-listeners.js index 8d323899a27d25..53fa8ee5100999 100644 --- a/test/mjsunit/test-event-emitter-add-listeners.js +++ b/test/mjsunit/test-event-emitter-add-listeners.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var e = new process.EventEmitter(); diff --git a/test/mjsunit/test-exec.js b/test/mjsunit/test-exec.js index 1f24c4b31bb456..7a9cf8f0058aee 100644 --- a/test/mjsunit/test-exec.js +++ b/test/mjsunit/test-exec.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); success_count = 0; error_count = 0; diff --git a/test/mjsunit/test-file-cat-noexist.js b/test/mjsunit/test-file-cat-noexist.js index 30c1e2b5e7e6c4..301cc937fb44e1 100644 --- a/test/mjsunit/test-file-cat-noexist.js +++ b/test/mjsunit/test-file-cat-noexist.js @@ -1,7 +1,7 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var got_error = false; -var filename = process.path.join(fixturesDir, "does_not_exist.txt"); +var filename = path.join(fixturesDir, "does_not_exist.txt"); var promise = posix.cat(filename, "raw"); promise.addCallback(function (content) { diff --git a/test/mjsunit/test-fs-sendfile.js b/test/mjsunit/test-fs-sendfile.js index 3a9a1bfbe30000..70161fbf1c3328 100644 --- a/test/mjsunit/test-fs-sendfile.js +++ b/test/mjsunit/test-fs-sendfile.js @@ -1,9 +1,9 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); -tcp = require("/tcp.js"); -sys = require("/sys.js"); +tcp = require("tcp"); +sys = require("sys"); PORT = 23123; -var x = process.path.join(fixturesDir, "x.txt"); +var x = path.join(fixturesDir, "x.txt"); var expected = "xyz"; var server = tcp.createServer(function (socket) { diff --git a/test/mjsunit/test-fs-stat.js b/test/mjsunit/test-fs-stat.js index 376d69203cd6dd..14e155cfb7728d 100644 --- a/test/mjsunit/test-fs-stat.js +++ b/test/mjsunit/test-fs-stat.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var got_error = false; var success_count = 0; diff --git a/test/mjsunit/test-fs-write.js b/test/mjsunit/test-fs-write.js index 6b5906ab7051b0..dd3c68e8ff72ec 100644 --- a/test/mjsunit/test-fs-write.js +++ b/test/mjsunit/test-fs-write.js @@ -1,15 +1,15 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); -var path = process.path.join(fixturesDir, "write.txt"); +var fn = path.join(fixturesDir, "write.txt"); var expected = "hello"; var found; -posix.open(path, process.O_WRONLY | process.O_TRUNC | process.O_CREAT, 0644).addCallback(function (file) { +posix.open(fn, process.O_WRONLY | process.O_TRUNC | process.O_CREAT, 0644).addCallback(function (file) { posix.write(file, expected, 0, "utf8").addCallback(function() { posix.close(file).addCallback(function() { - posix.cat(path, process.UTF8).addCallback(function(contents) { + posix.cat(fn, process.UTF8).addCallback(function(contents) { found = contents; - posix.unlink(path).wait(); + posix.unlink(fn).wait(); }); }); }); diff --git a/test/mjsunit/test-http-cat.js b/test/mjsunit/test-http-cat.js index 13deab399b1e49..0f87630ea5137b 100644 --- a/test/mjsunit/test-http-cat.js +++ b/test/mjsunit/test-http-cat.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); PORT = 8888; var body = "exports.A = function() { return 'A';}"; diff --git a/test/mjsunit/test-http-client-race.js b/test/mjsunit/test-http-client-race.js index 796c74d86bfa54..264ebca20c196b 100644 --- a/test/mjsunit/test-http-client-race.js +++ b/test/mjsunit/test-http-client-race.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); PORT = 8888; var body1_s = "1111111111111111"; diff --git a/test/mjsunit/test-http-client-upload.js b/test/mjsunit/test-http-client-upload.js index 071e00178a1e55..4ee68b93062c2f 100644 --- a/test/mjsunit/test-http-client-upload.js +++ b/test/mjsunit/test-http-client-upload.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); var PORT = 18032; var sent_body = ""; diff --git a/test/mjsunit/test-http-malformed-request.js b/test/mjsunit/test-http-malformed-request.js index 48c3e998c6368c..e9c8fc576d70b8 100644 --- a/test/mjsunit/test-http-malformed-request.js +++ b/test/mjsunit/test-http-malformed-request.js @@ -1,6 +1,6 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); -http = require("/http.js"); +process.mixin(require("./common")); +tcp = require("tcp"); +http = require("http"); // Make sure no exceptions are thrown when receiving malformed HTTP // requests. diff --git a/test/mjsunit/test-http-proxy.js b/test/mjsunit/test-http-proxy.js index 508d2030780a96..e9ffde70a5d1df 100644 --- a/test/mjsunit/test-http-proxy.js +++ b/test/mjsunit/test-http-proxy.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); var PROXY_PORT = 8869; var BACKEND_PORT = 8870; diff --git a/test/mjsunit/test-http-server.js b/test/mjsunit/test-http-server.js index d28b3d924a7661..4dda11169c1689 100644 --- a/test/mjsunit/test-http-server.js +++ b/test/mjsunit/test-http-server.js @@ -1,6 +1,6 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); -http = require("/http.js"); +process.mixin(require("./common")); +tcp = require("tcp"); +http = require("http"); var port = 8222; diff --git a/test/mjsunit/test-http.js b/test/mjsunit/test-http.js index 1546507f77f554..f71a0ee171a9f2 100644 --- a/test/mjsunit/test-http.js +++ b/test/mjsunit/test-http.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); PORT = 8888; var responses_sent = 0; diff --git a/test/mjsunit/test-mkdir-rmdir.js b/test/mjsunit/test-mkdir-rmdir.js index 5defedb959b330..f68afc0181fb31 100644 --- a/test/mjsunit/test-mkdir-rmdir.js +++ b/test/mjsunit/test-mkdir-rmdir.js @@ -1,8 +1,8 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); -var dirname = process.path.dirname(__filename); -var fixtures = process.path.join(dirname, "fixtures"); -var d = process.path.join(fixtures, "dir"); +var dirname = path.dirname(__filename); +var fixtures = path.join(dirname, "fixtures"); +var d = path.join(fixtures, "dir"); var mkdir_error = false; var rmdir_error = false; diff --git a/test/mjsunit/test-module-loading.js b/test/mjsunit/test-module-loading.js index 58b3715714de06..9659005d1620ec 100644 --- a/test/mjsunit/test-module-loading.js +++ b/test/mjsunit/test-module-loading.js @@ -1,10 +1,10 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); debug("load test-module-loading.js"); -var a = require("fixtures/a.js"); -var d = require("fixtures/b/d.js"); -var d2 = require("fixtures/b/d.js"); +var a = require("./fixtures/a"); +var d = require("./fixtures/b/d"); +var d2 = require("./fixtures/b/d"); assertFalse(false, "testing the test program."); diff --git a/test/mjsunit/test-multipart.js b/test/mjsunit/test-multipart.js index 21fa7fdf55e358..d0472c4647d5ed 100644 --- a/test/mjsunit/test-multipart.js +++ b/test/mjsunit/test-multipart.js @@ -1,8 +1,8 @@ -process.mixin(require("common.js")); -http = require("/http.js"); +process.mixin(require("./common")); +http = require("http"); -var multipart = require('/multipart.js'); -var fixture = require('fixtures/multipart.js'); +var multipart = require('multipart'); +var fixture = require('./fixtures/multipart'); var port = 8222; var parts_reveived = 0; diff --git a/test/mjsunit/test-process-buffering.js b/test/mjsunit/test-process-buffering.js index b0d795275ed53a..6943d50d26a2d4 100644 --- a/test/mjsunit/test-process-buffering.js +++ b/test/mjsunit/test-process-buffering.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var pwd_called = false; diff --git a/test/mjsunit/test-process-kill.js b/test/mjsunit/test-process-kill.js index 59cc5361dffcb7..995b80958371fb 100644 --- a/test/mjsunit/test-process-kill.js +++ b/test/mjsunit/test-process-kill.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var exit_status = -1; diff --git a/test/mjsunit/test-process-simple.js b/test/mjsunit/test-process-simple.js index 4a38ca552be88a..2413cb7b6e33c8 100644 --- a/test/mjsunit/test-process-simple.js +++ b/test/mjsunit/test-process-simple.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var cat = process.createChildProcess("cat"); diff --git a/test/mjsunit/test-process-spawn-loop.js b/test/mjsunit/test-process-spawn-loop.js index ebeb5e5b550200..cc96a12af9a065 100644 --- a/test/mjsunit/test-process-spawn-loop.js +++ b/test/mjsunit/test-process-spawn-loop.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var N = 40; var finished = false; diff --git a/test/mjsunit/test-promise-timeout.js b/test/mjsunit/test-promise-timeout.js index 5f31a165d61ac9..8166a528d4ab45 100644 --- a/test/mjsunit/test-promise-timeout.js +++ b/test/mjsunit/test-promise-timeout.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var timeouts = 0; diff --git a/test/mjsunit/test-promise-wait.js b/test/mjsunit/test-promise-wait.js index 2b662ccec9af0d..baba7c407c76d8 100644 --- a/test/mjsunit/test-promise-wait.js +++ b/test/mjsunit/test-promise-wait.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var p1_done = false; var p1 = new process.Promise(); diff --git a/test/mjsunit/test-readdir.js b/test/mjsunit/test-readdir.js index 8a37079fbfc5f1..33b9fe32b7c043 100644 --- a/test/mjsunit/test-readdir.js +++ b/test/mjsunit/test-readdir.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var got_error = false; diff --git a/test/mjsunit/test-signal-handler.js b/test/mjsunit/test-signal-handler.js index 12ad20e07596b2..5c277ba74ac4f5 100644 --- a/test/mjsunit/test-signal-handler.js +++ b/test/mjsunit/test-signal-handler.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); puts("process.pid: " + process.pid); diff --git a/test/mjsunit/test-tcp-binary.js b/test/mjsunit/test-tcp-binary.js index 988e79160fc0b4..b628c497bad0a2 100644 --- a/test/mjsunit/test-tcp-binary.js +++ b/test/mjsunit/test-tcp-binary.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); PORT = 23123; binaryString = ""; diff --git a/test/mjsunit/test-tcp-many-clients.js b/test/mjsunit/test-tcp-many-clients.js index b501a5f4a79e3a..2f18ad4c4a06fc 100644 --- a/test/mjsunit/test-tcp-many-clients.js +++ b/test/mjsunit/test-tcp-many-clients.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); // settings var port = 20743; var bytes = 1024*40; diff --git a/test/mjsunit/test-tcp-pingpong-delay.js b/test/mjsunit/test-tcp-pingpong-delay.js index a2140f13b4c857..8560e86c96c275 100644 --- a/test/mjsunit/test-tcp-pingpong-delay.js +++ b/test/mjsunit/test-tcp-pingpong-delay.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); var tests_run = 0; diff --git a/test/mjsunit/test-tcp-pingpong.js b/test/mjsunit/test-tcp-pingpong.js index f6ed15b684b2be..df919bebe62277 100644 --- a/test/mjsunit/test-tcp-pingpong.js +++ b/test/mjsunit/test-tcp-pingpong.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); var tests_run = 0; diff --git a/test/mjsunit/test-tcp-reconnect.js b/test/mjsunit/test-tcp-reconnect.js index baa0fea19f3699..96a383ad7386be 100644 --- a/test/mjsunit/test-tcp-reconnect.js +++ b/test/mjsunit/test-tcp-reconnect.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); var N = 50; var port = 8921; diff --git a/test/mjsunit/test-tcp-throttle-kernel-buffer.js b/test/mjsunit/test-tcp-throttle-kernel-buffer.js index a4ad64de97acb6..cf632e98b98738 100644 --- a/test/mjsunit/test-tcp-throttle-kernel-buffer.js +++ b/test/mjsunit/test-tcp-throttle-kernel-buffer.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); PORT = 20444; N = 30*1024; // 500kb diff --git a/test/mjsunit/test-tcp-throttle.js b/test/mjsunit/test-tcp-throttle.js index 7223425f481a3b..020e7c577f7bec 100644 --- a/test/mjsunit/test-tcp-throttle.js +++ b/test/mjsunit/test-tcp-throttle.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); PORT = 20443; N = 200; diff --git a/test/mjsunit/test-tcp-timeout.js b/test/mjsunit/test-tcp-timeout.js index a559ba23e35b08..ba76846b0918a5 100644 --- a/test/mjsunit/test-tcp-timeout.js +++ b/test/mjsunit/test-tcp-timeout.js @@ -1,5 +1,5 @@ -process.mixin(require("common.js")); -tcp = require("/tcp.js"); +process.mixin(require("./common")); +tcp = require("tcp"); port = 9992; exchanges = 0; starttime = null; diff --git a/test/mjsunit/test-timers.js b/test/mjsunit/test-timers.js index 361da3152a428f..827164a046e9d4 100644 --- a/test/mjsunit/test-timers.js +++ b/test/mjsunit/test-timers.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); var WINDOW = 200; // why is does this need to be so big? diff --git a/test/mjsunit/test-utf8-scripts.js b/test/mjsunit/test-utf8-scripts.js index b679e3d544e68a..9ad2159f3b0311 100644 --- a/test/mjsunit/test-utf8-scripts.js +++ b/test/mjsunit/test-utf8-scripts.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); // üäö diff --git a/test/mjsunit/test-wait-ordering.js b/test/mjsunit/test-wait-ordering.js index f8503b032b169a..2937fa7bbdd6da 100644 --- a/test/mjsunit/test-wait-ordering.js +++ b/test/mjsunit/test-wait-ordering.js @@ -1,4 +1,4 @@ -process.mixin(require("common.js")); +process.mixin(require("./common")); function timer (t) { var promise = new process.Promise();