@@ -93,7 +93,7 @@ describe('url-parse', function () {
9393 assume ( parse . extractProtocol ( '//foo/bar' ) ) . eql ( {
9494 slashes : true ,
9595 protocol : '' ,
96- rest : 'foo/bar'
96+ rest : '// foo/bar'
9797 } ) ;
9898 } ) ;
9999
@@ -283,7 +283,7 @@ describe('url-parse', function () {
283283 assume ( parsed . href ) . equals ( 'http://what-is-up.com/' ) ;
284284 } ) ;
285285
286- it ( 'does not see a slash after the protocol as path ' , function ( ) {
286+ it ( 'ignores slashes after the protocol for special URLs ' , function ( ) {
287287 var url = 'https:\\/github.com/foo/bar'
288288 , parsed = parse ( url ) ;
289289
@@ -292,11 +292,59 @@ describe('url-parse', function () {
292292 assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
293293
294294 url = 'https:/\\/\\/\\github.com/foo/bar' ;
295+ parsed = parse ( url ) ;
295296 assume ( parsed . host ) . equals ( 'github.com' ) ;
296297 assume ( parsed . hostname ) . equals ( 'github.com' ) ;
297298 assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
299+
300+ url = 'https:/github.com/foo/bar' ;
301+ parsed = parse ( url ) ;
302+ assume ( parsed . host ) . equals ( 'github.com' ) ;
303+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
304+
305+ url = 'https:\\github.com/foo/bar' ;
306+ parsed = parse ( url ) ;
307+ assume ( parsed . host ) . equals ( 'github.com' ) ;
308+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
309+
310+ url = 'https:github.com/foo/bar' ;
311+ parsed = parse ( url ) ;
312+ assume ( parsed . host ) . equals ( 'github.com' ) ;
313+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
314+
315+ url = 'https:github.com/foo/bar' ;
316+ parsed = parse ( url ) ;
317+ assume ( parsed . host ) . equals ( 'github.com' ) ;
318+ assume ( parsed . pathname ) . equals ( '/foo/bar' ) ;
298319 } ) ;
299320
321+ it ( 'handles slashes after the protocol for non special URLs' , function ( ) {
322+ var url = 'foo:example.com'
323+ , parsed = parse ( url ) ;
324+
325+ assume ( parsed . hostname ) . equals ( '' ) ;
326+ assume ( parsed . pathname ) . equals ( 'example.com' ) ;
327+ assume ( parsed . href ) . equals ( 'foo:example.com' ) ;
328+
329+ url = 'foo:/example.com' ;
330+ parsed = parse ( url ) ;
331+ assume ( parsed . hostname ) . equals ( '' ) ;
332+ assume ( parsed . pathname ) . equals ( '/example.com' ) ;
333+ assume ( parsed . href ) . equals ( 'foo:/example.com' ) ;
334+
335+ url = 'foo://example.com' ;
336+ parsed = parse ( url ) ;
337+ assume ( parsed . hostname ) . equals ( 'example.com' ) ;
338+ assume ( parsed . pathname ) . equals ( '/' ) ;
339+ assume ( parsed . href ) . equals ( 'foo://example.com/' ) ;
340+
341+ url = 'foo:///example.com' ;
342+ parsed = parse ( url ) ;
343+ assume ( parsed . hostname ) . equals ( '' ) ;
344+ assume ( parsed . pathname ) . equals ( '/example.com' ) ;
345+ assume ( parsed . href ) . equals ( 'foo:///example.com' ) ;
346+ } )
347+
300348 describe ( 'origin' , function ( ) {
301349 it ( 'generates an origin property' , function ( ) {
302350 var url = 'http://google.com:80/pathname'
@@ -440,7 +488,7 @@ describe('url-parse', function () {
440488 } ) ;
441489
442490 it ( 'handles the file: protocol' , function ( ) {
443- var slashes = [ '' , '/' , '//' , '///' , '////' , '/////' ] ;
491+ var slashes = [ '' , '/' , '//' , '///' ] ;
444492 var data ;
445493 var url ;
446494
@@ -451,6 +499,18 @@ describe('url-parse', function () {
451499 assume ( data . href ) . equals ( 'file:///' ) ;
452500 }
453501
502+ url = 'file:////' ;
503+ data = parse ( url ) ;
504+ assume ( data . protocol ) . equals ( 'file:' ) ;
505+ assume ( data . pathname ) . equals ( '//' ) ;
506+ assume ( data . href ) . equals ( url ) ;
507+
508+ url = 'file://///' ;
509+ data = parse ( url ) ;
510+ assume ( data . protocol ) . equals ( 'file:' ) ;
511+ assume ( data . pathname ) . equals ( '///' ) ;
512+ assume ( data . href ) . equals ( url ) ;
513+
454514 url = 'file:///Users/foo/BAR/baz.pdf' ;
455515 data = parse ( url ) ;
456516 assume ( data . protocol ) . equals ( 'file:' ) ;
0 commit comments