1
0
mirror of https://github.com/Minionguyjpro/Inno-Setup-Action synced 2026-02-18 09:31:19 +01:00
Files
inno-setup/__tests__/main.test.js
2024-01-02 21:32:12 +01:00

74 lines
2.6 KiB
JavaScript

// main.test.js
const core = require('@actions/core');
const fs = require('fs');
const main = require('../src/main'); // Update the path accordingly
const child_process = require('child_process');
jest.mock('@actions/core');
jest.mock('fs');
jest.mock('child_process');
describe('Inno Setup Action', () => {
beforeEach(() => {
jest.resetAllMocks();
});
it('should execute Inno Setup command on Windows with existing workspace', () => {
process.platform = 'win32';
process.env.GITHUB_WORKSPACE = '/path/to/workspace';
core.getInput.mockReturnValueOnce('options-value').mockReturnValueOnce('path-value');
fs.existsSync.mockReturnValueOnce(true);
fs.readdirSync.mockReturnValueOnce(['file1', 'file2']);
main();
expect(core.getInput).toHaveBeenCalledWith('options');
expect(core.getInput).toHaveBeenCalledWith('path');
expect(fs.existsSync).toHaveBeenCalledWith('/path/to/workspace');
expect(fs.readdirSync).toHaveBeenCalledWith('/path/to/workspace');
expect(child_process.exec).toHaveBeenCalledWith(
'"%PROGRAMFILES(X86)%\\Inno Setup 6\\iscc.exe" options-value "/path/to/workspace\\path-value"',
{ stdio: 'ignore' },
expect.any(Function)
);
});
it('should handle error when executing Inno Setup command', () => {
process.platform = 'win32';
process.env.GITHUB_WORKSPACE = '/path/to/workspace';
core.getInput.mockReturnValueOnce('options-value').mockReturnValueOnce('path-value');
fs.existsSync.mockReturnValueOnce(true);
fs.readdirSync.mockReturnValueOnce(['file1', 'file2']);
const execError = new Error('Command execution failed');
child_process.exec.mockImplementationOnce((command, options, callback) => {
callback(execError, 'stdout-content', 'stderr-content');
});
main();
expect(core.setFailed).toHaveBeenCalledWith('stderr-content');
expect(process.exit).toHaveBeenCalledWith(execError.code || 1);
});
it('should handle repository not cloned error', () => {
process.platform = 'win32';
process.env.GITHUB_WORKSPACE = '/path/to/workspace';
core.getInput.mockReturnValueOnce('options-value').mockReturnValueOnce('path-value');
fs.existsSync.mockReturnValueOnce(false);
main();
expect(core.setFailed).toHaveBeenCalledWith('The repository was not cloned. Please specify the actions/checkout action before this step.');
expect(process.exit).toHaveBeenCalledWith(1);
});
it('should handle unsupported platform error', () => {
process.platform = 'linux';
main();
expect(core.setFailed).toHaveBeenCalledWith('This action is only supported on Windows!');
expect(process.exit).toHaveBeenCalledWith(1);
});
});