1
0
mirror of https://github.com/Minionguyjpro/Inno-Setup-Action synced 2026-02-18 17:41:18 +01:00

Update main.test.js

This commit is contained in:
Minionguyjpro
2024-01-02 20:50:17 +01:00
committed by GitHub
parent 385d740eb0
commit 336373ad21

View File

@@ -1,70 +1,81 @@
// main.test.js
const core = require('@actions/core'); const core = require('@actions/core');
const fs = require('fs');
const { exec } = require('child_process');
// Mock the @actions/core module jest.mock('fs', () => ({
jest.mock('@actions/core'); existsSync: jest.fn(() => true),
readdirSync: jest.fn(() => ['file1', 'file2']),
}));
// ... other imports and setup ... jest.mock('child_process', () => ({
exec: jest.fn((command, options, callback) => {
// Simulate a successful execution
callback(null, 'stdout', 'stderr');
}),
}));
describe('Inno Setup Action', () => {
let originalPlatform;
beforeAll(() => {
// Save the original value of process.platform
originalPlatform = process.platform;
});
describe('Test suite for main.js', () => {
beforeEach(() => { beforeEach(() => {
// Clear mock calls before each test // Reset the mocks before each test
jest.clearAllMocks(); jest.clearAllMocks();
}); });
it('should handle repository not cloned error', async () => { afterAll(() => {
// Mock fs.existsSync to simulate repository not cloned scenario // Restore the original value of process.platform after all tests
fs.existsSync.mockReturnValue(false); Object.defineProperty(process, 'platform', {
value: originalPlatform,
});
});
// Run your function that checks the repository it('should handle Windows platform', async () => {
process.env.GITHUB_WORKSPACE = '/path/to/workspace';
await require('../src/main'); await require('../src/main');
expect(core.setFailed).not.toHaveBeenCalled();
expect(process.exit).not.toHaveBeenCalled();
});
// Verify that the error is set and the process is exited it('should handle missing GitHub workspace', async () => {
process.env.GITHUB_WORKSPACE = '/path/to/nonexistent/workspace';
await require('../src/main');
expect(core.setFailed).toHaveBeenCalledWith('The repository was not cloned. Please specify the actions/checkout action before this step.'); expect(core.setFailed).toHaveBeenCalledWith('The repository was not cloned. Please specify the actions/checkout action before this step.');
expect(process.exit).toHaveBeenCalledWith(1); expect(process.exit).toHaveBeenCalledWith(1);
}); });
it('should handle Windows platform error', async () => { it('should handle Windows platform error', async () => {
// Mock process.platform to simulate non-Windows scenario const exitSpy = jest.spyOn(process, 'exit').mockImplementation((code) => {
// Do nothing
});
Object.defineProperty(process, 'platform', { Object.defineProperty(process, 'platform', {
value: 'linux', value: 'linux',
}); });
// Run your function that checks the platform
await require('../src/main'); await require('../src/main');
// Verify that the error is set and the process is exited
expect(core.setFailed).toHaveBeenCalledWith('This action is only supported on Windows!'); expect(core.setFailed).toHaveBeenCalledWith('This action is only supported on Windows!');
expect(exitSpy).toHaveBeenCalledWith(1);
// Restore the original implementation of process.exit
exitSpy.mockRestore();
});
it('should handle Inno Setup compiler error', async () => {
jest.spyOn(process, 'exit').mockImplementation((code) => {
// Do nothing
});
// Simulate an error during the execution of the Inno Setup compiler
jest.spyOn(require('child_process'), 'exec').mockImplementationOnce((command, options, callback) => {
callback(new Error('Inno Setup compiler error'), 'stdout', 'stderr');
});
await require('../src/main');
expect(core.setFailed).toHaveBeenCalledWith('stderr');
expect(process.exit).toHaveBeenCalledWith(1); expect(process.exit).toHaveBeenCalledWith(1);
}); });
it('should execute Inno Setup compiler command on Windows', async () => {
// Mock fs.existsSync to simulate repository cloned scenario
fs.existsSync.mockReturnValue(true);
// Mock process.platform to simulate Windows scenario
Object.defineProperty(process, 'platform', {
value: 'win32',
});
// Mock child_process.exec to simulate a successful execution
exec.mockImplementation((command, options, callback) => {
callback(null, 'stdout', 'stderr');
});
// Run your function that executes the Inno Setup compiler command
await require('../src/main');
// Verify that the process is not exited and no error is set
expect(core.setFailed).not.toHaveBeenCalled();
expect(process.exit).not.toHaveBeenCalled();
});
afterEach(() => {
// Restore the original environment variables after each test
jest.resetModules();
});
}); });