99 lines
3.1 KiB
TypeScript
99 lines
3.1 KiB
TypeScript
import * as main from '../src/main';
|
|
import * as io from '@actions/io';
|
|
import path from 'path';
|
|
import nock from 'nock';
|
|
import {Tool, Action} from '../src/constants';
|
|
import {FetchError} from 'node-fetch';
|
|
import jsonTestBrew from './data/brew.json';
|
|
// import jsonTestGithub from './data/github.json';
|
|
|
|
jest.setTimeout(30000);
|
|
|
|
describe('Integration testing run()', () => {
|
|
beforeEach(() => {
|
|
jest.resetModules();
|
|
});
|
|
|
|
afterEach(async () => {
|
|
const workDir = path.join(`${process.env.HOME}`, Action.WorkDirName);
|
|
await io.rmRF(workDir);
|
|
|
|
delete process.env['INPUT_HUGO-VERSION'];
|
|
nock.cleanAll();
|
|
});
|
|
|
|
test('succeed in installing a custom version', async () => {
|
|
const testVersion = Tool.TestVersionSpec;
|
|
process.env['INPUT_HUGO-VERSION'] = testVersion;
|
|
const result: main.ActionResult = await main.run();
|
|
expect(result.exitcode).toBe(0);
|
|
expect(result.output).toMatch(`Hugo Static Site Generator v${testVersion}`);
|
|
});
|
|
|
|
test('succeed in installing a custom extended version', async () => {
|
|
const testVersion = Tool.TestVersionSpec;
|
|
process.env['INPUT_HUGO-VERSION'] = testVersion;
|
|
process.env['INPUT_EXTENDED'] = 'true';
|
|
const result: main.ActionResult = await main.run();
|
|
expect(result.exitcode).toBe(0);
|
|
expect(result.output).toMatch(`Hugo Static Site Generator v${testVersion}`);
|
|
expect(result.output).toMatch(`extended`);
|
|
});
|
|
|
|
test('succeed in installing the latest version', async () => {
|
|
const testVersion = 'latest';
|
|
process.env['INPUT_HUGO-VERSION'] = testVersion;
|
|
nock('https://formulae.brew.sh')
|
|
.get(`/api/formula/${Tool.Repo}.json`)
|
|
.reply(200, jsonTestBrew);
|
|
const result: main.ActionResult = await main.run();
|
|
expect(result.exitcode).toBe(0);
|
|
expect(result.output).toMatch(
|
|
`Hugo Static Site Generator v${Tool.TestVersionLatest}`
|
|
);
|
|
});
|
|
|
|
test('succeed in installing the latest extended version', async () => {
|
|
const testVersion = 'latest';
|
|
process.env['INPUT_HUGO-VERSION'] = testVersion;
|
|
process.env['INPUT_EXTENDED'] = 'true';
|
|
nock('https://formulae.brew.sh')
|
|
.get(`/api/formula/${Tool.Repo}.json`)
|
|
.reply(200, jsonTestBrew);
|
|
const result: main.ActionResult = await main.run();
|
|
expect(result.exitcode).toBe(0);
|
|
expect(result.output).toMatch(
|
|
`Hugo Static Site Generator v${Tool.TestVersionLatest}`
|
|
);
|
|
expect(result.output).toMatch(`extended`);
|
|
});
|
|
|
|
test('fail to install the latest version due to 404 of brew', async () => {
|
|
process.env['INPUT_HUGO-VERSION'] = 'latest';
|
|
nock('https://formulae.brew.sh')
|
|
.get(`/api/formula/${Tool.Repo}.json`)
|
|
.reply(404);
|
|
|
|
await expect(main.run()).rejects.toThrowError(FetchError);
|
|
});
|
|
});
|
|
|
|
describe('showVersion()', () => {
|
|
let result: main.ActionResult = {
|
|
exitcode: 0,
|
|
output: ''
|
|
};
|
|
|
|
test('return version', async () => {
|
|
result = await main.showVersion('git', ['--version']);
|
|
expect(result.exitcode).toBe(0);
|
|
expect(result.output).toMatch(/git version/);
|
|
});
|
|
|
|
test('return not found', async () => {
|
|
await expect(
|
|
main.showVersion('gitgit', ['--version'])
|
|
).rejects.toThrowError(Error);
|
|
});
|
|
});
|