module: allow require('.')
authorMichaël Zasso <mic.besace@gmail.com>
Wed, 18 Mar 2015 07:38:00 +0000 (08:38 +0100)
committerRoman Reiss <me@silverwind.io>
Fri, 20 Mar 2015 17:17:25 +0000 (18:17 +0100)
Previously, the minimal argument to require the current directory was
require('./'). This commits allows to skip the trailing slash.

Fixes: https://github.com/iojs/io.js/issues/1178
PR-URL: https://github.com/iojs/io.js/pull/1185
Reviewed-By: Chris Dickinson <christopher.s.dickinson@gmail.com>
Reviewed-By: Christian Tellnes <christian@tellnes.no>
Reviewed-By: Roman Reiss <me@silverwind.io>
lib/module.js
test/fixtures/module-require/relative/dot-slash.js [new file with mode: 0644]
test/fixtures/module-require/relative/dot.js [new file with mode: 0644]
test/fixtures/module-require/relative/index.js [new file with mode: 0644]
test/parallel/test-require-extensions-main.js

index 30e1f72..b2ddbd8 100644 (file)
@@ -205,7 +205,7 @@ Module._resolveLookupPaths = function(request, parent) {
   }
 
   var start = request.substring(0, 2);
-  if (start !== './' && start !== '..') {
+  if (start !== '.' && start !== './' && start !== '..') {
     var paths = modulePaths;
     if (parent) {
       if (!parent.paths) parent.paths = [];
diff --git a/test/fixtures/module-require/relative/dot-slash.js b/test/fixtures/module-require/relative/dot-slash.js
new file mode 100644 (file)
index 0000000..9817d8d
--- /dev/null
@@ -0,0 +1 @@
+module.exports = require('./');
diff --git a/test/fixtures/module-require/relative/dot.js b/test/fixtures/module-require/relative/dot.js
new file mode 100644 (file)
index 0000000..edac839
--- /dev/null
@@ -0,0 +1 @@
+module.exports = require('.');
diff --git a/test/fixtures/module-require/relative/index.js b/test/fixtures/module-require/relative/index.js
new file mode 100644 (file)
index 0000000..f16abdc
--- /dev/null
@@ -0,0 +1 @@
+exports.value = 42;
index 032f2eb..2a102af 100644 (file)
@@ -2,3 +2,9 @@ var common = require('../common');
 var assert = require('assert');
 
 require(common.fixturesDir + '/require-bin/bin/req.js');
+
+var a = require(common.fixturesDir + '/module-require/relative/dot.js');
+var b = require(common.fixturesDir + '/module-require/relative/dot-slash.js');
+
+assert.equal(a.value, 42);
+assert.equal(a, b, 'require(".") should resolve like require("./")');