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 (gitCredentials) {
|
||||||
// If credentials are set via environment variables, convert the URL to http/https and add basic auth, otherwise return `repositoryUrl` as is
|
// 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] =
|
const [match, auth, host, basePort, path] =
|
||||||
/^(?!.+:\/\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<path>.*)$/.exec(repositoryUrl) || [];
|
/^(?!.+:\/\/)(?:(?<auth>.*)@)?(?<host>.*?):(?<port>\d+)?:?\/?(?<path>.*)$/.exec(repositoryUrl) || [];
|
||||||
const {port, hostname, ...parsed} = parse(
|
const {port, hostname, ...parsed} = parse(
|
||||||
match ? `ssh://${auth ? `${auth}@` : ''}${host}/${path}` : repositoryUrl
|
match ? `ssh://${auth ? `${auth}@` : ''}${host}${basePort ? `:${basePort}` : ''}/${path}` : repositoryUrl
|
||||||
);
|
);
|
||||||
|
|
||||||
return format({
|
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) => {
|
test('Return the "https" formatted URL if "gitCredentials" is defined and repositoryUrl is a "https" URL', async (t) => {
|
||||||
const {cwd} = await gitRepo();
|
const {cwd} = await gitRepo();
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user