From e578215a93f41faaf300edc2d75d4a949584a01c Mon Sep 17 00:00:00 2001 From: Martyn Janes Date: Thu, 19 Dec 2019 12:13:15 +0100 Subject: [PATCH] Debug info --- dist/index.js | 38 +++-------------- src/tangle-release.js | 38 +++-------------- tests/tangle-release.test.js | 79 +++++------------------------------- 3 files changed, 20 insertions(+), 135 deletions(-) diff --git a/dist/index.js b/dist/index.js index ed9030c..96a9468 100644 --- a/dist/index.js +++ b/dist/index.js @@ -10352,43 +10352,15 @@ module.exports = set; /***/ (function(module, __unusedexports, __webpack_require__) { const core = __webpack_require__(470); -const { GitHub } = __webpack_require__(469); -const fs = __webpack_require__(747); +const { context } = __webpack_require__(469); async function run() { try { - // Get authenticated GitHub client (Ocktokit): https://github.com/actions/toolkit/tree/master/packages/github#usage - const github = new GitHub(process.env.GITHUB_TOKEN); + // Get owner and repo from context of payload that triggered the action + const { owner, repo } = context.repo; - // Get the inputs from the workflow file: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs - const uploadUrl = core.getInput('upload_url', { required: true }); - const assetPath = core.getInput('asset_path', { required: true }); - const assetName = core.getInput('asset_name', { required: true }); - const assetContentType = core.getInput('asset_content_type', { required: true }); - - // Determine content-length for header to upload asset - const contentLength = filePath => fs.statSync(filePath).size; - - // Setup headers for API call, see Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-upload-release-asset for more information - const headers = { 'content-type': assetContentType, 'content-length': contentLength(assetPath) }; - - // Upload a release asset - // API Documentation: https://developer.github.com/v3/repos/releases/#upload-a-release-asset - // Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-upload-release-asset - const uploadAssetResponse = await github.repos.uploadReleaseAsset({ - url: uploadUrl, - headers, - name: assetName, - file: fs.readFileSync(assetPath) - }); - - // Get the browser_download_url for the uploaded release asset from the response - const { - data: { browser_download_url: browserDownloadUrl } - } = uploadAssetResponse; - - // Set the output variable for use by other actions: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs - core.setOutput('browser_download_url', browserDownloadUrl); + core.debug(JSON.stringify(owner)); + core.debug(JSON.stringify(repo)); } catch (error) { core.setFailed(error.message); } diff --git a/src/tangle-release.js b/src/tangle-release.js index 411bdcf..3e3f9bd 100644 --- a/src/tangle-release.js +++ b/src/tangle-release.js @@ -1,41 +1,13 @@ const core = require('@actions/core'); -const { GitHub } = require('@actions/github'); -const fs = require('fs'); +const { context } = require('@actions/github'); async function run() { try { - // Get authenticated GitHub client (Ocktokit): https://github.com/actions/toolkit/tree/master/packages/github#usage - const github = new GitHub(process.env.GITHUB_TOKEN); + // Get owner and repo from context of payload that triggered the action + const { owner, repo } = context.repo; - // Get the inputs from the workflow file: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs - const uploadUrl = core.getInput('upload_url', { required: true }); - const assetPath = core.getInput('asset_path', { required: true }); - const assetName = core.getInput('asset_name', { required: true }); - const assetContentType = core.getInput('asset_content_type', { required: true }); - - // Determine content-length for header to upload asset - const contentLength = filePath => fs.statSync(filePath).size; - - // Setup headers for API call, see Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-upload-release-asset for more information - const headers = { 'content-type': assetContentType, 'content-length': contentLength(assetPath) }; - - // Upload a release asset - // API Documentation: https://developer.github.com/v3/repos/releases/#upload-a-release-asset - // Octokit Documentation: https://octokit.github.io/rest.js/#octokit-routes-repos-upload-release-asset - const uploadAssetResponse = await github.repos.uploadReleaseAsset({ - url: uploadUrl, - headers, - name: assetName, - file: fs.readFileSync(assetPath) - }); - - // Get the browser_download_url for the uploaded release asset from the response - const { - data: { browser_download_url: browserDownloadUrl } - } = uploadAssetResponse; - - // Set the output variable for use by other actions: https://github.com/actions/toolkit/tree/master/packages/core#inputsoutputs - core.setOutput('browser_download_url', browserDownloadUrl); + core.debug(JSON.stringify(owner)); + core.debug(JSON.stringify(repo)); } catch (error) { core.setFailed(error.message); } diff --git a/tests/tangle-release.test.js b/tests/tangle-release.test.js index b826dcd..166c8cd 100644 --- a/tests/tangle-release.test.js +++ b/tests/tangle-release.test.js @@ -1,31 +1,23 @@ jest.mock('@actions/core'); jest.mock('@actions/github'); -jest.mock('fs'); const core = require('@actions/core'); const { GitHub, context } = require('@actions/github'); -const fs = require('fs'); -const run = require('../src/tangle-release'); +const run = require('../src/tangle-release.js'); /* eslint-disable no-undef */ -describe('Upload Release Asset', () => { - let uploadReleaseAsset; - let content; +describe('Tangle Release', () => { + let tangleRelease; beforeEach(() => { - uploadReleaseAsset = jest.fn().mockReturnValueOnce({ + tangleRelease = jest.fn().mockReturnValueOnce({ data: { - browser_download_url: 'browserDownloadUrl' + id: 'releaseId', + html_url: 'htmlUrl', + upload_url: 'uploadUrl' } }); - fs.statSync = jest.fn().mockReturnValueOnce({ - size: 527 - }); - - content = Buffer.from('test content'); - fs.readFileSync = jest.fn().mockReturnValueOnce(content); - context.repo = { owner: 'owner', repo: 'repo' @@ -33,67 +25,16 @@ describe('Upload Release Asset', () => { const github = { repos: { - uploadReleaseAsset + tangleRelease } }; GitHub.mockImplementation(() => github); }); - test('Upload release asset endpoint is called', async () => { - core.getInput = jest - .fn() - .mockReturnValueOnce('upload_url') - .mockReturnValueOnce('asset_path') - .mockReturnValueOnce('asset_name') - .mockReturnValueOnce('asset_content_type'); + test('Test 1', async () => { + core.getInput = jest.fn(); await run(); - - expect(uploadReleaseAsset).toHaveBeenCalledWith({ - url: 'upload_url', - headers: { 'content-type': 'asset_content_type', 'content-length': 527 }, - name: 'asset_name', - file: content - }); - }); - - test('Output is set', async () => { - core.getInput = jest - .fn() - .mockReturnValueOnce('upload_url') - .mockReturnValueOnce('asset_path') - .mockReturnValueOnce('asset_name') - .mockReturnValueOnce('asset_content_type'); - - core.setOutput = jest.fn(); - - await run(); - - expect(core.setOutput).toHaveBeenNthCalledWith(1, 'browser_download_url', 'browserDownloadUrl'); - }); - - test('Action fails elegantly', async () => { - core.getInput = jest - .fn() - .mockReturnValueOnce('upload_url') - .mockReturnValueOnce('asset_path') - .mockReturnValueOnce('asset_name') - .mockReturnValueOnce('asset_content_type'); - - uploadReleaseAsset.mockRestore(); - uploadReleaseAsset.mockImplementation(() => { - throw new Error('Error uploading release asset'); - }); - - core.setOutput = jest.fn(); - - core.setFailed = jest.fn(); - - await run(); - - expect(uploadReleaseAsset).toHaveBeenCalled(); - expect(core.setFailed).toHaveBeenCalledWith('Error uploading release asset'); - expect(core.setOutput).toHaveBeenCalledTimes(0); }); });