Permalink
Cannot retrieve contributors at this time
179 lines (155 sloc)
6.47 KB
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
gh-pages/__tests__/get-inputs.test.ts
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// import * as main from '../src/main'; | |
import {Inputs} from '../src/interfaces'; | |
import {showInputs, getInputs} from '../src/get-inputs'; | |
import os from 'os'; | |
import fs from 'fs'; | |
import yaml from 'js-yaml'; | |
beforeEach(() => { | |
jest.resetModules(); | |
process.stdout.write = jest.fn(); | |
const doc = yaml.safeLoad(fs.readFileSync(__dirname + '/../action.yml', 'utf8')); | |
Object.keys(doc.inputs).forEach(name => { | |
const envVar = `INPUT_${name.replace(/ /g, '_').toUpperCase()}`; | |
process.env[envVar] = doc.inputs[name]['default']; | |
}); | |
}); | |
afterEach(() => { | |
const doc = yaml.safeLoad(fs.readFileSync(__dirname + '/../action.yml', 'utf8')); | |
Object.keys(doc.inputs).forEach(name => { | |
const envVar = `INPUT_${name.replace(/ /g, '_').toUpperCase()}`; | |
console.debug(`delete ${envVar}\t${process.env[envVar]}`); | |
delete process.env[envVar]; | |
}); | |
}); | |
// Assert that process.stdout.write calls called only with the given arguments. | |
// cf. https://github.com/actions/toolkit/blob/8b0300129f08728419263b016de8630f1d426d5f/packages/core/__tests__/core.test.ts | |
function assertWriteCalls(calls: string[]): void { | |
expect(process.stdout.write).toHaveBeenCalledTimes(calls.length); | |
for (let i = 0; i < calls.length; i++) { | |
expect(process.stdout.write).toHaveBeenNthCalledWith(i + 1, calls[i]); | |
} | |
} | |
function getInputsLog(authMethod: string, inps: Inputs): string { | |
return `\ | |
[INFO] ${authMethod}: true | |
[INFO] PublishBranch: ${inps.PublishBranch} | |
[INFO] PublishDir: ${inps.PublishDir} | |
[INFO] ExternalRepository: ${inps.ExternalRepository} | |
[INFO] AllowEmptyCommit: ${inps.AllowEmptyCommit} | |
[INFO] KeepFiles: ${inps.KeepFiles} | |
[INFO] ForceOrphan: ${inps.ForceOrphan} | |
[INFO] UserName: ${inps.UserName} | |
[INFO] UserEmail: ${inps.UserEmail} | |
[INFO] CommitMessage: ${inps.CommitMessage} | |
[INFO] FullCommitMessage: ${inps.FullCommitMessage} | |
[INFO] TagName: ${inps.TagName} | |
[INFO] TagMessage: ${inps.TagMessage} | |
[INFO] EnableJekyll (DisableNoJekyll): ${inps.DisableNoJekyll} | |
[INFO] CNAME: ${inps.CNAME} | |
`; | |
} | |
describe('showInputs()', () => { | |
// eslint-disable-next-line jest/expect-expect | |
test('print all inputs DeployKey', () => { | |
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | |
const inps: Inputs = getInputs(); | |
showInputs(inps); | |
const authMethod = 'DeployKey'; | |
const test = getInputsLog(authMethod, inps); | |
assertWriteCalls([`${test}${os.EOL}`]); | |
}); | |
// eslint-disable-next-line jest/expect-expect | |
test('print all inputs GithubToken', () => { | |
delete process.env['INPUT_DEPLOY_KEY']; | |
process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token'; | |
const inps: Inputs = getInputs(); | |
showInputs(inps); | |
const authMethod = 'GithubToken'; | |
const test = getInputsLog(authMethod, inps); | |
assertWriteCalls([`${test}${os.EOL}`]); | |
}); | |
// eslint-disable-next-line jest/expect-expect | |
test('print all inputs PersonalToken', () => { | |
delete process.env['INPUT_DEPLOY_KEY']; | |
delete process.env['INPUT_GITHUB_TOKEN']; | |
process.env['INPUT_PERSONAL_TOKEN'] = 'test_personal_token'; | |
const inps: Inputs = getInputs(); | |
showInputs(inps); | |
const authMethod = 'PersonalToken'; | |
const test = getInputsLog(authMethod, inps); | |
assertWriteCalls([`${test}${os.EOL}`]); | |
}); | |
}); | |
describe('getInputs()', () => { | |
test('get default inputs', () => { | |
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | |
const inps: Inputs = getInputs(); | |
expect(inps.DeployKey).toMatch('test_deploy_key'); | |
expect(inps.GithubToken).toMatch(''); | |
expect(inps.PersonalToken).toMatch(''); | |
expect(inps.PublishBranch).toMatch('gh-pages'); | |
expect(inps.PublishDir).toMatch('public'); | |
expect(inps.ExternalRepository).toMatch(''); | |
expect(inps.AllowEmptyCommit).toBe(false); | |
expect(inps.KeepFiles).toBe(false); | |
expect(inps.ForceOrphan).toBe(false); | |
expect(inps.UserName).toMatch(''); | |
expect(inps.UserEmail).toMatch(''); | |
expect(inps.CommitMessage).toMatch(''); | |
expect(inps.FullCommitMessage).toMatch(''); | |
expect(inps.TagName).toMatch(''); | |
expect(inps.TagMessage).toMatch(''); | |
expect(inps.DisableNoJekyll).toBe(false); | |
expect(inps.CNAME).toMatch(''); | |
}); | |
test('get spec inputs', () => { | |
// process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | |
process.env['INPUT_GITHUB_TOKEN'] = 'test_github_token'; | |
process.env['INPUT_PERSONAL_TOKEN'] = 'test_personal_token'; | |
process.env['INPUT_PUBLISH_BRANCH'] = 'master'; | |
process.env['INPUT_PUBLISH_DIR'] = 'out'; | |
process.env['INPUT_EXTERNAL_REPOSITORY'] = 'user/repo'; | |
process.env['INPUT_ALLOW_EMPTY_COMMIT'] = 'true'; | |
process.env['INPUT_KEEP_FILES'] = 'true'; | |
process.env['INPUT_FORCE_ORPHAN'] = 'true'; | |
process.env['INPUT_USER_NAME'] = 'username'; | |
process.env['INPUT_USER_EMAIL'] = 'github@github.com'; | |
process.env['INPUT_COMMIT_MESSAGE'] = 'feat: Add new feature'; | |
process.env['INPUT_FULL_COMMIT_MESSAGE'] = 'feat: Add new feature'; | |
process.env['INPUT_TAG_NAME'] = 'deploy-v1.2.3'; | |
process.env['INPUT_TAG_MESSAGE'] = 'Deployment v1.2.3'; | |
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true'; | |
process.env['INPUT_CNAME'] = 'github.com'; | |
const inps: Inputs = getInputs(); | |
expect(inps.DeployKey).toMatch(''); | |
expect(inps.GithubToken).toMatch('test_github_token'); | |
expect(inps.PersonalToken).toMatch('test_personal_token'); | |
expect(inps.PublishBranch).toMatch('master'); | |
expect(inps.PublishDir).toMatch('out'); | |
expect(inps.ExternalRepository).toMatch('user/repo'); | |
expect(inps.AllowEmptyCommit).toBe(true); | |
expect(inps.KeepFiles).toBe(true); | |
expect(inps.ForceOrphan).toBe(true); | |
expect(inps.UserName).toMatch('username'); | |
expect(inps.UserEmail).toMatch('github@github.com'); | |
expect(inps.CommitMessage).toMatch('feat: Add new feature'); | |
expect(inps.FullCommitMessage).toMatch('feat: Add new feature'); | |
expect(inps.TagName).toMatch('deploy-v1.2.3'); | |
expect(inps.TagMessage).toMatch('Deployment v1.2.3'); | |
expect(inps.DisableNoJekyll).toBe(true); | |
expect(inps.CNAME).toMatch('github.com'); | |
}); | |
test('get spec inputs enable_jekyll', () => { | |
process.env['INPUT_ENABLE_JEKYLL'] = 'true'; | |
const inps: Inputs = getInputs(); | |
expect(inps.DisableNoJekyll).toBe(true); | |
}); | |
test('throw error enable_jekyll or disable_nojekyll', () => { | |
process.env['INPUT_DEPLOY_KEY'] = 'test_deploy_key'; | |
process.env['INPUT_ENABLE_JEKYLL'] = 'true'; | |
process.env['INPUT_DISABLE_NOJEKYLL'] = 'true'; | |
expect(() => { | |
getInputs(); | |
}).toThrowError('Use either of enable_jekyll or disable_nojekyll'); | |
}); | |
}); |