mirror of
				https://github.com/actions/setup-java.git
				synced 2025-10-26 07:16:46 +08:00 
			
		
		
		
	* actions/setup-java@v2 - Support different distributions (#132) * Implement support for custom vendors in setup-java * minor improvements * minor refactoring * Add unit tests and e2e tests * Update documentation for setup-java@v2 release * minor improvements * regenerate dist * fix comments * resolve comments * resolve comments * fix tests * Update README.md Co-authored-by: George Adams <george.adams@microsoft.com> * Apply suggestions from code review Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * fix minor nitpicks * handle 4th digit * pull latest main * Update README.md * rename adoptium to adopt * rename adoptium to adopt * rename adoptium to adopt * Update README.md * make java-version and distribution required for action * update readme * fix tests * fix e2e tests Co-authored-by: George Adams <george.adams@microsoft.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * Add "overwrite-settings" input parameter (#136) * add overwrite-settings parameter * fix e2e tests * print debug * fix e2e tests * add comment * remove comment * Add "Contents/Home" postfix on macOS if provider creates it (#139) * Update e2e-versions.yml * Update e2e-versions.yml * implement fix * Update e2e-versions.yml * Update installer.ts * fix filter logic * Update e2e-versions.yml * remove extra logic * Update e2e-versions.yml * Add check-latest flag (#141) * add changes for check-latest * run prerelease script * resolving comments * fixing tests * fix spelling * improve core.info messages * run format * run prerelease * change version to fix test * resolve comment for check-latest * Update README.md * added hosted tool cache section * Apply suggestions from code review Co-authored-by: Maxim Lobanov <v-malob@microsoft.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com> * Avoid "+" sign in Java path in v2-preview (#145) * try to handle _ versions * more logs * more debug * test 1 * more fixes * fix typo * Update e2e-versions.yml * add unit-tests * remove debug info from tests * debug pre-cached versions * change e2e tests to ubuntu-latest * update npm licenses Co-authored-by: George Adams <george.adams@microsoft.com> Co-authored-by: Konrad Pabjan <konradpabjan@github.com> Co-authored-by: Dmitry Shibanov <dmitry-shibanov@github.com>
		
			
				
	
	
		
			160 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			160 lines
		
	
	
		
			5.2 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import io = require('@actions/io');
 | |
| import fs = require('fs');
 | |
| import path = require('path');
 | |
| import os from 'os';
 | |
| 
 | |
| import * as auth from '../src/auth';
 | |
| 
 | |
| const m2Dir = path.join(__dirname, auth.M2_DIR);
 | |
| const settingsFile = path.join(m2Dir, auth.SETTINGS_FILE);
 | |
| 
 | |
| describe('auth tests', () => {
 | |
|   let spyOSHomedir: jest.SpyInstance;
 | |
| 
 | |
|   beforeEach(async () => {
 | |
|     await io.rmRF(m2Dir);
 | |
|     spyOSHomedir = jest.spyOn(os, 'homedir');
 | |
|     spyOSHomedir.mockReturnValue(__dirname);
 | |
|   }, 300000);
 | |
| 
 | |
|   afterAll(async () => {
 | |
|     try {
 | |
|       await io.rmRF(m2Dir);
 | |
|     } catch {
 | |
|       console.log('Failed to remove test directories');
 | |
|     }
 | |
|     jest.resetAllMocks();
 | |
|     jest.clearAllMocks();
 | |
|     jest.restoreAllMocks();
 | |
|   }, 100000);
 | |
| 
 | |
|   it('creates settings.xml in alternate locations', async () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'UNAMI';
 | |
|     const password = 'TOLKIEN';
 | |
| 
 | |
|     const altHome = path.join(__dirname, 'runner', 'settings');
 | |
|     const altSettingsFile = path.join(altHome, auth.SETTINGS_FILE);
 | |
|     await io.rmRF(altHome); // ensure it doesn't already exist
 | |
| 
 | |
|     await auth.createAuthenticationSettings(id, username, password, altHome, true);
 | |
| 
 | |
|     expect(fs.existsSync(m2Dir)).toBe(false);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(false);
 | |
| 
 | |
|     expect(fs.existsSync(altHome)).toBe(true);
 | |
|     expect(fs.existsSync(altSettingsFile)).toBe(true);
 | |
|     expect(fs.readFileSync(altSettingsFile, 'utf-8')).toEqual(
 | |
|       auth.generate(id, username, password)
 | |
|     );
 | |
| 
 | |
|     await io.rmRF(altHome);
 | |
|   }, 100000);
 | |
| 
 | |
|   it('creates settings.xml with minimal configuration', async () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'UNAME';
 | |
|     const password = 'TOKEN';
 | |
| 
 | |
|     await auth.createAuthenticationSettings(id, username, password, m2Dir, true);
 | |
| 
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
|     expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(auth.generate(id, username, password));
 | |
|   }, 100000);
 | |
| 
 | |
|   it('creates settings.xml with additional configuration', async () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'UNAME';
 | |
|     const password = 'TOKEN';
 | |
|     const gpgPassphrase = 'GPG';
 | |
| 
 | |
|     await auth.createAuthenticationSettings(id, username, password, m2Dir, true, gpgPassphrase);
 | |
| 
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
|     expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(
 | |
|       auth.generate(id, username, password, gpgPassphrase)
 | |
|     );
 | |
|   }, 100000);
 | |
| 
 | |
|   it('overwrites existing settings.xml files', async () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'USERNAME';
 | |
|     const password = 'PASSWORD';
 | |
| 
 | |
|     fs.mkdirSync(m2Dir, { recursive: true });
 | |
|     fs.writeFileSync(settingsFile, 'FAKE FILE');
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
| 
 | |
|     await auth.createAuthenticationSettings(id, username, password, m2Dir, true);
 | |
| 
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
|     expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual(auth.generate(id, username, password));
 | |
|   }, 100000);
 | |
| 
 | |
|   it('does not overwrite existing settings.xml files', async () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'USERNAME';
 | |
|     const password = 'PASSWORD';
 | |
| 
 | |
|     fs.mkdirSync(m2Dir, { recursive: true });
 | |
|     fs.writeFileSync(settingsFile, 'FAKE FILE');
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
| 
 | |
|     await auth.createAuthenticationSettings(id, username, password, m2Dir, false);
 | |
| 
 | |
|     expect(fs.existsSync(m2Dir)).toBe(true);
 | |
|     expect(fs.existsSync(settingsFile)).toBe(true);
 | |
|     expect(fs.readFileSync(settingsFile, 'utf-8')).toEqual('FAKE FILE');
 | |
|   }, 100000);
 | |
| 
 | |
|   it('generates valid settings.xml with minimal configuration', () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'USER';
 | |
|     const password = '&<>"\'\'"><&';
 | |
| 
 | |
|     const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 | |
|   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | |
|   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
 | |
|   <servers>
 | |
|     <server>
 | |
|       <id>${id}</id>
 | |
|       <username>\${env.${username}}</username>
 | |
|       <password>\${env.&<>"''"><&}</password>
 | |
|     </server>
 | |
|   </servers>
 | |
| </settings>`;
 | |
| 
 | |
|     expect(auth.generate(id, username, password)).toEqual(expectedSettings);
 | |
|   });
 | |
| 
 | |
|   it('generates valid settings.xml with additional configuration', () => {
 | |
|     const id = 'packages';
 | |
|     const username = 'USER';
 | |
|     const password = '&<>"\'\'"><&';
 | |
|     const gpgPassphrase = 'PASSPHRASE';
 | |
| 
 | |
|     const expectedSettings = `<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
 | |
|   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | |
|   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd">
 | |
|   <servers>
 | |
|     <server>
 | |
|       <id>${id}</id>
 | |
|       <username>\${env.${username}}</username>
 | |
|       <password>\${env.&<>"''"><&}</password>
 | |
|     </server>
 | |
|     <server>
 | |
|       <id>gpg.passphrase</id>
 | |
|       <passphrase>\${env.${gpgPassphrase}}</passphrase>
 | |
|     </server>
 | |
|   </servers>
 | |
| </settings>`;
 | |
| 
 | |
|     expect(auth.generate(id, username, password, gpgPassphrase)).toEqual(expectedSettings);
 | |
|   });
 | |
| });
 |