Read-only mirror — the public repositories of the Forgejo instance, refreshed every 10 minutes. The live instance (fg.dieschoenewolke.de) is reachable only over the VPN; clone here with https://git.dieschoenewolke.de/git/<owner>/<repo>.git.
summaryrefslogtreecommitdiff
path: root/__test__/input-helper.test.ts
diff options
context:
space:
mode:
Diffstat (limited to '__test__/input-helper.test.ts')
-rw-r--r--__test__/input-helper.test.ts120
1 files changed, 120 insertions, 0 deletions
diff --git a/__test__/input-helper.test.ts b/__test__/input-helper.test.ts
new file mode 100644
index 0000000..6010e11
--- /dev/null
+++ b/__test__/input-helper.test.ts
@@ -0,0 +1,120 @@
+import * as assert from 'assert'
+import * as path from 'path'
+import {ISourceSettings} from '../lib/git-source-provider'
+
+const originalGitHubWorkspace = process.env['GITHUB_WORKSPACE']
+const gitHubWorkspace = path.resolve('/checkout-tests/workspace')
+
+// Late bind
+let inputHelper: any
+
+// Mock @actions/core
+let inputs = {} as any
+const mockCore = jest.genMockFromModule('@actions/core') as any
+mockCore.getInput = (name: string) => {
+ return inputs[name]
+}
+
+// Mock @actions/github
+const mockGitHub = jest.genMockFromModule('@actions/github') as any
+mockGitHub.context = {
+ repo: {
+ owner: 'some-owner',
+ repo: 'some-repo'
+ },
+ ref: 'refs/heads/some-ref',
+ sha: '1234567890123456789012345678901234567890'
+}
+
+// Mock ./fs-helper
+const mockFSHelper = jest.genMockFromModule('../lib/fs-helper') as any
+mockFSHelper.directoryExistsSync = (path: string) => path == gitHubWorkspace
+
+describe('input-helper tests', () => {
+ beforeAll(() => {
+ // GitHub workspace
+ process.env['GITHUB_WORKSPACE'] = gitHubWorkspace
+
+ // Mocks
+ jest.setMock('@actions/core', mockCore)
+ jest.setMock('@actions/github', mockGitHub)
+ jest.setMock('../lib/fs-helper', mockFSHelper)
+
+ // Now import
+ inputHelper = require('../lib/input-helper')
+ })
+
+ beforeEach(() => {
+ // Reset inputs
+ inputs = {}
+ })
+
+ afterAll(() => {
+ // Reset GitHub workspace
+ delete process.env['GITHUB_WORKSPACE']
+ if (originalGitHubWorkspace) {
+ process.env['GITHUB_WORKSPACE'] = originalGitHubWorkspace
+ }
+
+ // Reset modules
+ jest.resetModules()
+ })
+
+ it('sets defaults', () => {
+ const settings: ISourceSettings = inputHelper.getInputs()
+ expect(settings).toBeTruthy()
+ expect(settings.accessToken).toBeFalsy()
+ expect(settings.clean).toBe(true)
+ expect(settings.commit).toBeTruthy()
+ expect(settings.commit).toBe('1234567890123456789012345678901234567890')
+ expect(settings.fetchDepth).toBe(1)
+ expect(settings.lfs).toBe(false)
+ expect(settings.ref).toBe('refs/heads/some-ref')
+ expect(settings.repositoryName).toBe('some-repo')
+ expect(settings.repositoryOwner).toBe('some-owner')
+ expect(settings.repositoryPath).toBe(gitHubWorkspace)
+ })
+
+ it('requires qualified repo', () => {
+ inputs.repository = 'some-unqualified-repo'
+ assert.throws(() => {
+ inputHelper.getInputs()
+ }, /Invalid repository 'some-unqualified-repo'/)
+ })
+
+ it('roots path', () => {
+ inputs.path = 'some-directory/some-subdirectory'
+ const settings: ISourceSettings = inputHelper.getInputs()
+ expect(settings.repositoryPath).toBe(
+ path.join(gitHubWorkspace, 'some-directory', 'some-subdirectory')
+ )
+ })
+
+ it('sets correct default ref/sha for other repo', () => {
+ inputs.repository = 'some-owner/some-other-repo'
+ const settings: ISourceSettings = inputHelper.getInputs()
+ expect(settings.ref).toBe('refs/heads/master')
+ expect(settings.commit).toBeFalsy()
+ })
+
+ it('sets ref to empty when explicit sha', () => {
+ inputs.ref = '1111111111222222222233333333334444444444'
+ const settings: ISourceSettings = inputHelper.getInputs()
+ expect(settings.ref).toBeFalsy()
+ expect(settings.commit).toBe('1111111111222222222233333333334444444444')
+ })
+
+ it('sets sha to empty when explicit ref', () => {
+ inputs.ref = 'refs/heads/some-other-ref'
+ const settings: ISourceSettings = inputHelper.getInputs()
+ expect(settings.ref).toBe('refs/heads/some-other-ref')
+ expect(settings.commit).toBeFalsy()
+ })
+
+ it('gives good error message for submodules input', () => {
+ inputs.submodules = 'true'
+ assert.throws(() => {
+ inputHelper.getInputs()
+ }, /The input 'submodules' is not supported/)
+ })
+})