diff --git a/__test__/url-helper.test.ts b/__test__/url-helper.test.ts index 0c2c8d1..27f6606 100644 --- a/__test__/url-helper.test.ts +++ b/__test__/url-helper.test.ts @@ -1,5 +1,28 @@ import * as urlHelper from '../src/url-helper' +describe('getServerUrl tests', () => { + it('basics', async () => { + // Note that URL::toString will append a trailing / when passed just a domain name ... + expect(urlHelper.getServerUrl().toString()).toBe('https://github.com/') + expect(urlHelper.getServerUrl(' ').toString()).toBe('https://github.com/') + expect(urlHelper.getServerUrl(' ').toString()).toBe('https://github.com/') + expect(urlHelper.getServerUrl('http://contoso.com').toString()).toBe( + 'http://contoso.com/' + ) + expect(urlHelper.getServerUrl('https://contoso.com').toString()).toBe( + 'https://contoso.com/' + ) + expect(urlHelper.getServerUrl('https://contoso.com/').toString()).toBe( + 'https://contoso.com/' + ) + + // ... but can't make that same assumption when passed an URL that includes some deeper path. + expect(urlHelper.getServerUrl('https://contoso.com/a/b').toString()).toBe( + 'https://contoso.com/a/b' + ) + }) +}) + describe('isGhes tests', () => { it('basics', async () => { expect(urlHelper.isGhes()).toBeFalsy() diff --git a/dist/index.js b/dist/index.js index 2b418c3..55ee37a 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2455,13 +2455,13 @@ function getFetchUrl(settings) { } function getServerUrl(url) { let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com'; - if (hasContent(url, false)) { + if (hasContent(url, WhitespaceMode.IgnorePureWhitespace)) { resolvedUrl = url; } return new url_1.URL(resolvedUrl); } function getServerApiUrl(url) { - if (hasContent(url, false)) { + if (hasContent(url, WhitespaceMode.IgnorePureWhitespace)) { let serverUrl = getServerUrl(url); if (isGhes(url)) { serverUrl.pathname = 'api/v3'; @@ -2482,14 +2482,20 @@ function isGhes(url) { return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost; } function pruneSuffix(text, suffix) { - if (hasContent(suffix, true) && (text === null || text === void 0 ? void 0 : text.endsWith(suffix))) { + if (hasContent(suffix, WhitespaceMode.AllowPureWhitespace) && + (text === null || text === void 0 ? void 0 : text.endsWith(suffix))) { return text.substring(0, text.length - suffix.length); } return text; } -function hasContent(text, allowPureWhitespace) { +var WhitespaceMode; +(function (WhitespaceMode) { + WhitespaceMode[WhitespaceMode["IgnorePureWhitespace"] = 0] = "IgnorePureWhitespace"; + WhitespaceMode[WhitespaceMode["AllowPureWhitespace"] = 1] = "AllowPureWhitespace"; +})(WhitespaceMode || (WhitespaceMode = {})); +function hasContent(text, whitespaceMode) { let refinedText = text !== null && text !== void 0 ? text : ''; - if (!allowPureWhitespace) { + if (whitespaceMode == WhitespaceMode.IgnorePureWhitespace) { refinedText = refinedText.trim(); } return refinedText.length > 0; diff --git a/src/url-helper.ts b/src/url-helper.ts index 5c4fcbd..47721da 100644 --- a/src/url-helper.ts +++ b/src/url-helper.ts @@ -22,7 +22,7 @@ export function getFetchUrl(settings: IGitSourceSettings): string { export function getServerUrl(url?: string): URL { let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com' - if (hasContent(url, false)) { + if (hasContent(url, WhitespaceMode.IgnorePureWhitespace)) { resolvedUrl = url! } @@ -30,7 +30,7 @@ export function getServerUrl(url?: string): URL { } export function getServerApiUrl(url?: string): string { - if (hasContent(url, false)) { + if (hasContent(url, WhitespaceMode.IgnorePureWhitespace)) { let serverUrl = getServerUrl(url) if (isGhes(url)) { serverUrl.pathname = 'api/v3' @@ -58,18 +58,26 @@ export function isGhes(url?: string): boolean { } function pruneSuffix(text: string, suffix: string) { - if (hasContent(suffix, true) && text?.endsWith(suffix)) { + if ( + hasContent(suffix, WhitespaceMode.AllowPureWhitespace) && + text?.endsWith(suffix) + ) { return text.substring(0, text.length - suffix.length) } return text } +enum WhitespaceMode { + IgnorePureWhitespace, + AllowPureWhitespace +} + function hasContent( text: string | undefined, - allowPureWhitespace: boolean + whitespaceMode: WhitespaceMode ): boolean { let refinedText = text ?? '' - if (!allowPureWhitespace) { + if (whitespaceMode == WhitespaceMode.IgnorePureWhitespace) { refinedText = refinedText.trim() } return refinedText.length > 0