mirror of
				https://code.forgejo.org/actions/checkout.git
				synced 2025-10-31 13:02:28 +00:00 
			
		
		
		
	second attempt
This commit is contained in:
		
							parent
							
								
									e8e821983d
								
							
						
					
					
						commit
						df4b58c789
					
				
					 2 changed files with 60 additions and 8 deletions
				
			
		
							
								
								
									
										23
									
								
								__test__/url-helper.test.ts
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								__test__/url-helper.test.ts
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,23 @@ | |||
| import * as urlHelper from '../src/url-helper' | ||||
| 
 | ||||
| describe('isGhes tests', () => { | ||||
|   it('basics', async () => { | ||||
|     expect(urlHelper.isGhes()).toBeFalsy() | ||||
|     expect(urlHelper.isGhes('https://github.com')).toBeFalsy() | ||||
|     //expect(urlHelper.isGhes('https://api.github.com')).toBeFalsy()
 | ||||
|     expect(urlHelper.isGhes('https://europe.ghe.com')).toBeFalsy() | ||||
|     expect(urlHelper.isGhes('https://test.github.localhost')).toBeFalsy() | ||||
|     expect(urlHelper.isGhes('https://src.onpremise.customer.com')).toBeTruthy() | ||||
|   }) | ||||
| }) | ||||
| 
 | ||||
| describe('getServerApiUrl tests', () => { | ||||
|   it('basics', async () => { | ||||
|     expect(urlHelper.getServerApiUrl()).toBe('https://api.github.com') | ||||
|     expect(urlHelper.getServerApiUrl('https://github.com')).toBe('https://api.github.com') | ||||
|     expect(urlHelper.getServerApiUrl('https://GitHub.com')).toBe('https://api.github.com') | ||||
|     expect(urlHelper.getServerApiUrl('https://europe.ghe.com')).toBe('https://api.europe.ghe.com') | ||||
|     expect(urlHelper.getServerApiUrl('https://australia.GHE.COM')).toBe('https://api.australia.ghe.com') | ||||
|     expect(urlHelper.getServerApiUrl('https://src.onpremise.customer.com')).toBe('https://src.onpremise.customer.com/api/v3') | ||||
|   }) | ||||
| }) | ||||
|  | @ -21,20 +21,32 @@ export function getFetchUrl(settings: IGitSourceSettings): string { | |||
| } | ||||
| 
 | ||||
| export function getServerUrl(url?: string): URL { | ||||
|   let urlValue = | ||||
|     url && url.trim().length > 0 | ||||
|       ? url | ||||
|       : process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||
|   return new URL(urlValue) | ||||
|   let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||
|   if (hasContent(url, false)) { | ||||
|     resolvedUrl = url! | ||||
|   } | ||||
| 
 | ||||
|   return new URL(resolvedUrl) | ||||
| } | ||||
| 
 | ||||
| export function getServerApiUrl(): string { | ||||
| export function getServerApiUrl(url?: string): string { | ||||
|   if (hasContent(url, false)) { | ||||
|     let serverUrl = getServerUrl(url) | ||||
|     if (isGhes(url)) { | ||||
|       serverUrl.pathname = "api/v3" | ||||
|     } else { | ||||
|       serverUrl.hostname = "api." + serverUrl.hostname | ||||
|     } | ||||
| 
 | ||||
|     return pruneSuffix(serverUrl.toString(), '/') | ||||
|   } | ||||
| 
 | ||||
|   return process.env['GITHUB_API_URL'] || 'https://api.github.com' | ||||
| } | ||||
| 
 | ||||
| export function isGhes(): boolean { | ||||
| export function isGhes(url?: string): boolean { | ||||
|   const ghUrl = new URL( | ||||
|     process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||
|     url || process.env['GITHUB_SERVER_URL'] || 'https://github.com' | ||||
|   ) | ||||
| 
 | ||||
|   const hostname = ghUrl.hostname.trimEnd().toUpperCase() | ||||
|  | @ -44,3 +56,20 @@ export function isGhes(): boolean { | |||
| 
 | ||||
|   return !isGitHubHost && !isGheHost && !isLocalHost | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| function pruneSuffix(text: string, suffix: string) { | ||||
|   if (hasContent(suffix, true) && text?.endsWith(suffix)) { | ||||
|     return text.substring(0, text.length - suffix.length) | ||||
|   } | ||||
|   return text | ||||
| } | ||||
| 
 | ||||
| function hasContent(text: string | undefined, allowPureWhitespace: boolean): boolean { | ||||
|   let refinedText = text ?? "" | ||||
|   if (!allowPureWhitespace) { | ||||
|     refinedText = refinedText.trim() | ||||
|   } | ||||
|   return refinedText.length > 0 | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue