mirror of
				https://gitea.com/actions/setup-java.git
				synced 2025-10-31 07:47:06 +00:00 
			
		
		
		
	 7a6d8a8234
			
		
	
	7a6d8a8234
	
	
	
		
			
			* Add Support for JetBrains Runtime - Add Installer, Models - Includes Tests & Test Manifest Data - Add to `e2e-versions.yml` - Run `npm run build` - Update README.md * Add Docs + Distro Factory * Fix Runtime Unrecognizable * `npm run build` (JBR) * Fix Incorrect JBR Distribution * Switch to `jbrsdk_jcef` * Fix Incorrect File Extension * `npm run build` (JBR) * Fix Windows Support * Add `GITHUB_TOKEN` Authentication * Update Authorization, Add Documentation * Fix PR Issues - Fix JDK 11 URL Bug - Add JDK URL Testing to ensure versions can be downloaded - Run Prettier * Change Distribution to \`jbrsdk\` * Don't Replace Underscores * Fix `semver` not resolving correctly * Update e2e-versions.yml - Add `GITHUB_TOKEN` environment variable for JetBrains requests - Add `jetbrains` to other E2E tests * `npm run format` * Fix Format, Inaccessible URLs * Update Tests * Fix Broken URLs, Add Additional Package Types * `npm run build` * Fix JetBrains Tests, Issues in `e2e-versions.yml` * Add Hidden JDK 11 Versions * Update `jetbrains-installer` Tests * Add Notices in Documentation * Fix Documentation * Run `npm audit fix` * Fix Tests on Windows
		
			
				
	
	
		
			121 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import https from 'https';
 | |
| import {HttpClient} from '@actions/http-client';
 | |
| import {JetBrainsDistribution} from '../../src/distributions/jetbrains/installer';
 | |
| 
 | |
| import manifestData from '../data/jetbrains.json';
 | |
| import os from 'os';
 | |
| 
 | |
| describe('getAvailableVersions', () => {
 | |
|   let spyHttpClient: jest.SpyInstance;
 | |
| 
 | |
|   beforeEach(() => {
 | |
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
 | |
|     spyHttpClient.mockReturnValue({
 | |
|       statusCode: 200,
 | |
|       headers: {},
 | |
|       result: []
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   afterEach(() => {
 | |
|     jest.resetAllMocks();
 | |
|     jest.clearAllMocks();
 | |
|     jest.restoreAllMocks();
 | |
|   });
 | |
| 
 | |
|   it('load available versions', async () => {
 | |
|     spyHttpClient = jest.spyOn(HttpClient.prototype, 'getJson');
 | |
|     spyHttpClient.mockReturnValueOnce({
 | |
|       statusCode: 200,
 | |
|       headers: {},
 | |
|       result: manifestData as any
 | |
|     });
 | |
| 
 | |
|     const distribution = new JetBrainsDistribution({
 | |
|       version: '17',
 | |
|       architecture: 'x64',
 | |
|       packageType: 'jdk',
 | |
|       checkLatest: false
 | |
|     });
 | |
|     const availableVersions = await distribution['getAvailableVersions']();
 | |
|     expect(availableVersions).not.toBeNull();
 | |
| 
 | |
|     const length =
 | |
|       os.platform() === 'win32'
 | |
|         ? manifestData.length - 1
 | |
|         : manifestData.length + 1;
 | |
|     expect(availableVersions.length).toBe(length);
 | |
|   }, 10_000);
 | |
| });
 | |
| 
 | |
| describe('findPackageForDownload', () => {
 | |
|   it.each([
 | |
|     ['17', '17.0.11+1207.24'],
 | |
|     ['11.0', '11.0.16+2043.64'],
 | |
|     ['11.0.11', '11.0.11+1542.1'],
 | |
|     ['21.0.2', '21.0.2+375.1'],
 | |
|     ['21', '21.0.3+465.3'],
 | |
|     ['x', '21.0.3+465.3']
 | |
|   ])('version is resolved correctly %s -> %s', async (input, expected) => {
 | |
|     const distribution = new JetBrainsDistribution({
 | |
|       version: input,
 | |
|       architecture: 'x64',
 | |
|       packageType: 'jdk',
 | |
|       checkLatest: false
 | |
|     });
 | |
|     distribution['getAvailableVersions'] = async () => manifestData as any;
 | |
|     const resolvedVersion = await distribution['findPackageForDownload'](input);
 | |
|     expect(resolvedVersion.version).toBe(expected);
 | |
|   });
 | |
| 
 | |
|   it.each(['17', '11.0', '11.0.11', '21.0.2', '21'])(
 | |
|     'version %s can be downloaded',
 | |
|     async input => {
 | |
|       const distribution = new JetBrainsDistribution({
 | |
|         version: input,
 | |
|         architecture: 'x64',
 | |
|         packageType: 'jdk',
 | |
|         checkLatest: false
 | |
|       });
 | |
|       distribution['getAvailableVersions'] = async () => manifestData as any;
 | |
|       const resolvedVersion = await distribution['findPackageForDownload'](
 | |
|         input
 | |
|       );
 | |
|       const url = resolvedVersion.url;
 | |
|       const options = {method: 'HEAD'};
 | |
| 
 | |
|       https.request(url, options, res => {
 | |
|         // JetBrains uses 403 for inexistent packages
 | |
|         expect(res.statusCode).not.toBe(403);
 | |
|         res.resume();
 | |
|       });
 | |
|     }
 | |
|   );
 | |
| 
 | |
|   it('version is not found', async () => {
 | |
|     const distribution = new JetBrainsDistribution({
 | |
|       version: '8.0.452',
 | |
|       architecture: 'x64',
 | |
|       packageType: 'jdk',
 | |
|       checkLatest: false
 | |
|     });
 | |
|     distribution['getAvailableVersions'] = async () => manifestData as any;
 | |
|     await expect(distribution['findPackageForDownload']('8.x')).rejects.toThrow(
 | |
|       /Could not find satisfied version for SemVer */
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   it('version list is empty', async () => {
 | |
|     const distribution = new JetBrainsDistribution({
 | |
|       version: '8',
 | |
|       architecture: 'x64',
 | |
|       packageType: 'jdk',
 | |
|       checkLatest: false
 | |
|     });
 | |
|     distribution['getAvailableVersions'] = async () => [];
 | |
|     await expect(distribution['findPackageForDownload']('8')).rejects.toThrow(
 | |
|       /Could not find satisfied version for SemVer */
 | |
|     );
 | |
|   });
 | |
| });
 |