mirror of
				https://gitea.com/actions/setup-java.git
				synced 2025-11-02 07:47:06 +00:00 
			
		
		
		
	* Bump prettier from 2.8.8 to 3.6.2 Bumps [prettier](https://github.com/prettier/prettier) from 2.8.8 to 3.6.2. - [Release notes](https://github.com/prettier/prettier/releases) - [Changelog](https://github.com/prettier/prettier/blob/main/CHANGELOG.md) - [Commits](https://github.com/prettier/prettier/compare/2.8.8...3.6.2) --- updated-dependencies: - dependency-name: prettier dependency-version: 3.6.2 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> * doc update and check failure fix * npm run format-check * doc format update * doc update * doc update --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Aparna Jyothi <aparnajyothi-y@github.com>
		
			
				
	
	
		
			118 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			118 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 : manifestData.length + 2;
 | 
						|
    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 */
 | 
						|
    );
 | 
						|
  });
 | 
						|
});
 |