diff --git a/lib/core/resolvers/Resolver.js b/lib/core/resolvers/Resolver.js index e3b7b7715..972516058 100644 --- a/lib/core/resolvers/Resolver.js +++ b/lib/core/resolvers/Resolver.js @@ -7,6 +7,7 @@ var rimraf = require('../../util/rimraf'); var readJson = require('../../util/readJson'); var createError = require('../../util/createError'); var removeIgnores = require('../../util/removeIgnores'); +var md5 = require('md5-hex'); tmp.setGracefulCleanup(); @@ -145,7 +146,7 @@ Resolver.prototype._createTempDir = function () { return Q.nfcall(mkdirp, this._config.tmp) .then(function () { return Q.nfcall(tmp.dir, { - template: path.join(this._config.tmp, this._name + '-' + process.pid + '-XXXXXX'), + template: path.join(this._config.tmp, md5(this._name) + '-' + process.pid + '-XXXXXX'), mode: 0777 & ~process.umask(), unsafeCleanup: true }); diff --git a/test/core/resolvers/resolver.js b/test/core/resolvers/resolver.js index aa455e6aa..50b9f8b5b 100644 --- a/test/core/resolvers/resolver.js +++ b/test/core/resolvers/resolver.js @@ -515,6 +515,18 @@ describe('Resolver', function () { }) .done(); }); + + it('should remove @ from directory names', function (next) { + var resolver = create('foo@bar'); + + resolver._createTempDir() + .then(function (dir) { + expect(resolver._tempDir).to.be.ok(); + expect(resolver._tempDir.indexOf('@')).to.equal(-1); + next(); + }) + .done(); + }); }); describe('._cleanTempDir', function () {