58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			TypeScript
		
	
	
| import * as core from '@actions/core';
 | |
| import System from './system';
 | |
| 
 | |
| jest.spyOn(core, 'debug').mockImplementation(() => {});
 | |
| const info = jest.spyOn(core, 'info').mockImplementation(() => {});
 | |
| jest.spyOn(core, 'warning').mockImplementation(() => {});
 | |
| jest.spyOn(core, 'error').mockImplementation(() => {});
 | |
| 
 | |
| afterEach(() => {
 | |
|   jest.clearAllMocks();
 | |
| });
 | |
| 
 | |
| describe('System', () => {
 | |
|   describe('run', () => {
 | |
|     it('runs a command successfully', async () => {
 | |
|       await expect(System.run('true')).resolves.not.toBeNull();
 | |
|     });
 | |
| 
 | |
|     it('outputs results', async () => {
 | |
|       await expect(System.run('echo test')).resolves.toStrictEqual('test\n');
 | |
|     });
 | |
| 
 | |
|     it('throws on when error code is not 0', async () => {
 | |
|       await expect(System.run('false')).rejects.toThrowError();
 | |
|     });
 | |
| 
 | |
|     it('throws when no arguments are given', async () => {
 | |
|       await expect(System.run('')).rejects.toThrowError();
 | |
|     });
 | |
| 
 | |
|     it('outputs info', async () => {
 | |
|       await expect(System.run('echo test')).resolves.not.toBeNull();
 | |
|       expect(info).toHaveBeenLastCalledWith('test\n');
 | |
|     });
 | |
| 
 | |
|     it('outputs info only once', async () => {
 | |
|       await expect(System.run('echo 1')).resolves.not.toBeNull();
 | |
|       expect(info).toHaveBeenCalledTimes(1);
 | |
|       expect(info).toHaveBeenLastCalledWith('1\n');
 | |
| 
 | |
|       info.mockClear();
 | |
|       await expect(System.run('echo 2')).resolves.not.toBeNull();
 | |
|       await expect(System.run('echo 3')).resolves.not.toBeNull();
 | |
|       expect(info).toHaveBeenCalledTimes(2);
 | |
|       expect(info).toHaveBeenLastCalledWith('3\n');
 | |
|     });
 | |
| 
 | |
|     it('allows pipes using buffer', async () => {
 | |
|       await expect(
 | |
|         System.run('sh', undefined, {
 | |
|           input: Buffer.from('git tag --list --merged HEAD | grep v[0-9]* | wc -l'),
 | |
|           // eslint-disable-next-line github/no-then
 | |
|         }).then((result) => Number(result)),
 | |
|       ).resolves.not.toBeNaN();
 | |
|     });
 | |
|   });
 | |
| });
 |