49 lines
1.5 KiB
JavaScript
49 lines
1.5 KiB
JavaScript
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');
|
|
});
|
|
});
|
|
});
|