Fix bug in the url module's url_parse method if 'parseQueryString' is true

This commit is contained in:
Benjamin Thomas 2010-01-06 03:03:14 +00:00 committed by Ryan Dahl
parent b1e126f415
commit 947c577c0d
2 changed files with 27 additions and 1 deletions

View File

@ -74,7 +74,12 @@ function url_parse (url, parseQueryString) {
if (qm !== -1) {
out.search = rest.substr(qm);
out.query = rest.substr(qm+1);
if (parseQueryString) out.query = (querystring || querystring = require("querystring")).parse(out.query);
if (parseQueryString) {
if (!querystring) {
querystring = require("querystring");
}
out.query = querystring.parse(out.query);
}
rest = rest.slice(0, qm);
}
if (rest) out.pathname = rest;

View File

@ -176,6 +176,27 @@ for (var u in parseTests) {
assert.equal(expected, actual, "format("+u+") == "+u+"\nactual:"+actual);
}
var parseTestsWithQueryString = {
"/foo/bar?baz=quux#frag" : {
"href": "/foo/bar?baz=quux#frag",
"hash": "#frag",
"search": "?baz=quux",
"query": {
"baz": "quux"
},
"pathname": "/foo/bar"
},
};
for (var u in parseTestsWithQueryString) {
var actual = url.parse(u,true);
var expected = parseTestsWithQueryString[u];
for (var i in expected) {
var e = JSON.stringify(expected[i]),
a = JSON.stringify(actual[i]);
assert.equal(e, a, "parse(" + u + ")."+i+" == "+e+"\nactual: "+a);
}
}
// some extra formatting tests, just to verify that it'll format slightly wonky content to a valid url.
var formatTests = {
"http://a.com/a/b/c?s#h" : {