From a4f4909f3d15dbc02f4742ad168afbe11d6d8dc4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C3=ABl=20Zasso?= Date: Thu, 18 Jun 2015 22:18:46 +0200 Subject: [PATCH] module: fix stat with long paths on Windows PR-URL: https://github.com/nodejs/io.js/pull/2013 Reviewed-By: Rod Vagg Reviewed-By: Ben Noordhuis --- lib/module.js | 2 +- test/parallel/test-require-long-path.js | 26 +++++++++++++++---------- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/lib/module.js b/lib/module.js index 9eba6bfdc15518..d9b4415ad8fe94 100644 --- a/lib/module.js +++ b/lib/module.js @@ -143,7 +143,7 @@ Module._findPath = function(request, paths) { // For each path for (var i = 0, PL = paths.length; i < PL; i++) { // Don't search further if path doesn't exist - if (paths[i] && internalModuleStat(paths[i]) < 1) continue; + if (paths[i] && internalModuleStat(path._makeLong(paths[i])) < 1) continue; var basePath = path.resolve(paths[i], request); var filename; diff --git a/test/parallel/test-require-long-path.js b/test/parallel/test-require-long-path.js index a69503f8d2f3df..1f7e28cba2960c 100644 --- a/test/parallel/test-require-long-path.js +++ b/test/parallel/test-require-long-path.js @@ -1,17 +1,23 @@ 'use strict'; -var common = require('../common'); -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); +const common = require('../common'); +const fs = require('fs'); +const path = require('path'); // make a path that is more than 260 chars long. -var fileNameLen = Math.max(261 - common.tmpDir.length - 1, 1); -var fileName = path.join(common.tmpDir, new Array(fileNameLen + 1).join('x')); -var fullPath = path.resolve(fileName); +const dirNameLen = Math.max(260 - common.tmpDir.length, 1); +const dirName = path.join(common.tmpDir, 'x'.repeat(dirNameLen)); +const fullDirPath = path.resolve(dirName); + +const indexFile = path.join(fullDirPath, 'index.js'); +const otherFile = path.join(fullDirPath, 'other.js'); common.refreshTmpDir(); -fs.writeFileSync(fullPath, 'module.exports = 42;'); -assert.equal(require(fullPath), 42); +fs.mkdirSync(fullDirPath); +fs.writeFileSync(indexFile, 'require("./other");'); +fs.writeFileSync(otherFile, ''); + +require(indexFile); +require(otherFile); -fs.unlinkSync(fullPath); +common.refreshTmpDir();