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;
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" : {