@@ -3,22 +3,23 @@ var HostedGitInfo = require('../')
33var tap = require ( 'tap' )
44var url = require ( 'url' )
55
6- // Auth credentials with special characters (colon and/or at-sign) should remain correctly escaped
7- var parsedInfo = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/hosted-git-info.git' )
8- tap . equal ( parsedInfo . auth , 'user%3An%40me:p%40ss%3Aword' )
9-
106// Node.js' built-in `url` module should be able to parse the resulting url
11- var parsedUrl = new url . URL ( parsedInfo . toString ( ) )
12- tap . equal ( parsedUrl . username , 'user%3An%40me' )
13- tap . equal ( parsedUrl . password , 'p%40ss%3Aword' )
14- tap . equal ( parsedUrl . hostname , 'github.com' )
15-
16- // For full backwards-compatibility; support auth where only username or only password is provided
17- tap . equal ( HostedGitInfo . fromUrl ( 'https://user%3An%40me@github.com/npm/hosted-git-info.git' ) . auth , 'user%3An%40me' )
18- tap . equal ( HostedGitInfo . fromUrl ( 'https://:p%40ss%3Aword@github.com/npm/hosted-git-info.git' ) . auth , ':p%40ss%3Aword' )
19-
207// don't try to url.URL parse it if url.URL is not available
218// ie, node <6.13. This is broken, but at least it doesn't throw.
22- url . URL = null
23- var parsedInfoNoURL = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/xyz.git' )
24- tap . equal ( parsedInfoNoURL . auth , 'user:n@me:p@ss:word' )
9+ if ( typeof url . URL === 'function' ) {
10+ // Auth credentials with special characters (colon and/or at-sign) should remain correctly escaped
11+ var parsedInfo = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/hosted-git-info.git' )
12+ tap . equal ( parsedInfo . auth , 'user%3An%40me:p%40ss%3Aword' )
13+
14+ var parsedUrl = new url . URL ( parsedInfo . toString ( ) )
15+ tap . equal ( parsedUrl . username , 'user%3An%40me' )
16+ tap . equal ( parsedUrl . password , 'p%40ss%3Aword' )
17+ tap . equal ( parsedUrl . hostname , 'github.com' )
18+
19+ // For full backwards-compatibility; support auth where only username or only password is provided
20+ tap . equal ( HostedGitInfo . fromUrl ( 'https://user%3An%40me@github.com/npm/hosted-git-info.git' ) . auth , 'user%3An%40me' )
21+ tap . equal ( HostedGitInfo . fromUrl ( 'https://:p%40ss%3Aword@github.com/npm/hosted-git-info.git' ) . auth , ':p%40ss%3Aword' )
22+ } else {
23+ var parsedInfoNoURL = HostedGitInfo . fromUrl ( 'https://user%3An%40me:p%40ss%3Aword@github.com/npm/xyz.git' )
24+ tap . equal ( parsedInfoNoURL . auth , 'user:n@me:p@ss:word' )
25+ }
0 commit comments