From 0386fa7fc21d1abbcc588b343dd306bcfc521dd9 Mon Sep 17 00:00:00 2001 From: MT Lewis Date: Wed, 6 Mar 2024 20:51:16 +0000 Subject: [PATCH] integration: use href from git-url-parse when resolving file urls When parsing a URL with a trailing slash, git-url-parse drops the trailing slash from the href and filepath properties on the result, which is inconsistent with the behavior of the native URL constructor. Since before we were using the filepath property from git-url-parse to determine how much to truncate the pathname from the URL constructor, we were off-by-one for URLs with a trailing slash. After this change, we pass the href property from git-url-parse to the URL constructor, such that the amount to truncate the pathname and the pathname itself are ultimately coming from the same source. Signed-off-by: MT Lewis --- .changeset/chatty-vans-cross.md | 5 +++++ packages/integration/src/helpers.ts | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 .changeset/chatty-vans-cross.md diff --git a/.changeset/chatty-vans-cross.md b/.changeset/chatty-vans-cross.md new file mode 100644 index 0000000000..fab7af5155 --- /dev/null +++ b/.changeset/chatty-vans-cross.md @@ -0,0 +1,5 @@ +--- +'@backstage/integration': patch +--- + +Fixed an issue with resolution of SCM URLs against a base URL with a trailing slash. diff --git a/packages/integration/src/helpers.ts b/packages/integration/src/helpers.ts index 94aafaa6c3..b403155cc5 100644 --- a/packages/integration/src/helpers.ts +++ b/packages/integration/src/helpers.ts @@ -84,8 +84,10 @@ export function defaultScmResolveUrl(options: { if (url.startsWith('/')) { // If it is an absolute path, move relative to the repo root - const { filepath } = parseGitUrl(base); - updated = new URL(base); + const { href, filepath } = parseGitUrl(base); + + updated = new URL(href); + const repoRootPath = trimEnd( updated.pathname.substring(0, updated.pathname.length - filepath.length), '/',