diff options
-rw-r--r-- | lib/config/nerf-dart.js | 6 | ||||
-rw-r--r-- | test/tap/nerf-dart.js | 32 |
2 files changed, 36 insertions, 2 deletions
diff --git a/lib/config/nerf-dart.js b/lib/config/nerf-dart.js index 3b26a56c6..07c817500 100644 --- a/lib/config/nerf-dart.js +++ b/lib/config/nerf-dart.js @@ -13,9 +13,11 @@ module.exports = toNerfDart */ function toNerfDart(uri) { var parsed = url.parse(uri) - parsed.pathname = "/" delete parsed.protocol delete parsed.auth + delete parsed.query + delete parsed.search + delete parsed.hash - return url.format(parsed) + return url.resolve(url.format(parsed), ".") } diff --git a/test/tap/nerf-dart.js b/test/tap/nerf-dart.js new file mode 100644 index 000000000..157f6c7df --- /dev/null +++ b/test/tap/nerf-dart.js @@ -0,0 +1,32 @@ +// taken from https://raw.githubusercontent.com/indexzero/npm/bd3cad01fbd3ab481d2f5da441b9eead16029123/test/tap/config-nerf-dart.js +// originally written by Charlie Robbins, https://github.com/indexzero +var test = require("tap").test +var toNerfDart = require("../../lib/config/nerf-dart.js") + +function validNerfDart (uri, valid) { + if (!valid) valid = "//registry.npmjs.org/" + test(uri, function (t) { + t.equal(toNerfDart(uri), valid) + t.end() + }) +} + +validNerfDart("http://registry.npmjs.org") +validNerfDart("http://registry.npmjs.org/some-package") +validNerfDart("http://registry.npmjs.org/some-package?write=true") +validNerfDart("http://user:pass@registry.npmjs.org/some-package?write=true") +validNerfDart("http://registry.npmjs.org/#random-hash") +validNerfDart("http://registry.npmjs.org/some-package#random-hash") + +validNerfDart( + "http://relative.couchapp.npm/design/-/rewrite/", + "//relative.couchapp.npm/design/-/rewrite/" +) +validNerfDart( + "http://relative.couchapp.npm:8080/design/-/rewrite/", + "//relative.couchapp.npm:8080/design/-/rewrite/" +) +validNerfDart( + "http://relative.couchapp.npm:8080/design/-/rewrite/some-package", + "//relative.couchapp.npm:8080/design/-/rewrite/" +) |