diff --git a/__tests__/config.test.ts b/__tests__/config.test.ts new file mode 100644 index 0000000..5afed94 --- /dev/null +++ b/__tests__/config.test.ts @@ -0,0 +1,27 @@ +import * as config from '../src/internal/shared/config' + +beforeEach(() => { + jest.resetModules() +}) + +describe('isGhes', () => { + it('should return false when the request domain is github.com', () => { + process.env.GITHUB_SERVER_URL = 'https://github.com' + expect(config.isGhes()).toBe(false) + }) + + it('should return false when the request domain ends with ghe.com', () => { + process.env.GITHUB_SERVER_URL = 'https://my.domain.ghe.com' + expect(config.isGhes()).toBe(false) + }) + + it('should return false when the request domain ends with ghe.localhost', () => { + process.env.GITHUB_SERVER_URL = 'https://my.domain.ghe.localhost' + expect(config.isGhes()).toBe(false) + }) + + it('should return false when the request domain is specific to an enterprise', () => { + process.env.GITHUB_SERVER_URL = 'https://my-enterprise.github.com' + expect(config.isGhes()).toBe(true) + }) +}) diff --git a/src/internal/shared/config.ts b/src/internal/shared/config.ts index a5631bf..089fae1 100644 --- a/src/internal/shared/config.ts +++ b/src/internal/shared/config.ts @@ -27,7 +27,13 @@ export function isGhes(): boolean { const ghUrl = new URL( process.env['GITHUB_SERVER_URL'] || 'https://github.com' ) - return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM' + + const hostname = ghUrl.hostname.trimEnd().toUpperCase() + const isGitHubHost = hostname === 'GITHUB.COM' + const isGheHost = + hostname.endsWith('.GHE.COM') || hostname.endsWith('.GHE.LOCALHOST') + + return !isGitHubHost && !isGheHost } export function getGitHubWorkspaceDir(): string {