fix: don't parse port as part of the path in repository URLs (#1671)
This commit is contained in:
		
							parent
							
								
									d74ffef788
								
							
						
					
					
						commit
						77a75f072b
					
				| @ -53,10 +53,10 @@ module.exports = async ({cwd, env, branch, options: {repositoryUrl}}) => { | ||||
| 
 | ||||
|     if (gitCredentials) { | ||||
|       // If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
 | ||||
|       const [match, auth, host, path] = | ||||
|         /^(?!.+:\/\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<path>.*)$/.exec(repositoryUrl) || []; | ||||
|       const [match, auth, host, basePort, path] = | ||||
|         /^(?!.+:\/\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<port>\d+)?:?\/?(?<path>.*)$/.exec(repositoryUrl) || []; | ||||
|       const {port, hostname, ...parsed} = parse( | ||||
|         match ? `ssh://${auth ? `${auth}@` : ''}${host}/${path}` : repositoryUrl | ||||
|         match ? `ssh://${auth ? `${auth}@` : ''}${host}${basePort ? `:${basePort}` : ''}/${path}` : repositoryUrl | ||||
|       ); | ||||
| 
 | ||||
|       return format({ | ||||
|  | ||||
| @ -133,6 +133,32 @@ test('Return the "https" formatted URL if "gitCredentials" is defined and reposi | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "git" URL without user and with a custom port', async (t) => { | ||||
|   const {cwd} = await gitRepo(); | ||||
| 
 | ||||
|   t.is( | ||||
|     await getAuthUrl({ | ||||
|       cwd, | ||||
|       env: {...env, GIT_CREDENTIALS: 'user:pass'}, | ||||
|       options: {branch: 'master', repositoryUrl: 'host.null:6666:owner/repo.git'}, | ||||
|     }), | ||||
|     'https://user:pass@host.null:6666/owner/repo.git' | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "git" URL without user and with a custom port followed by a slash', async (t) => { | ||||
|   const {cwd} = await gitRepo(); | ||||
| 
 | ||||
|   t.is( | ||||
|     await getAuthUrl({ | ||||
|       cwd, | ||||
|       env: {...env, GIT_CREDENTIALS: 'user:pass'}, | ||||
|       options: {branch: 'master', repositoryUrl: 'host.null:6666:/owner/repo.git'}, | ||||
|     }), | ||||
|     'https://user:pass@host.null:6666/owner/repo.git' | ||||
|   ); | ||||
| }); | ||||
| 
 | ||||
| test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "https" URL', async (t) => { | ||||
|   const {cwd} = await gitRepo(); | ||||
| 
 | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user