Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 8445ca8

Browse files
committed
Fix overriding request options from @actions/github
1 parent d4560e1 commit 8445ca8

File tree

7 files changed

+82
-42
lines changed

7 files changed

+82
-42
lines changed

.licenses/npm/@actions/github.dep.yml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

__test__/get-retry-options.test.ts

Lines changed: 36 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,66 @@ import {getRetryOptions} from '../src/retry-options'
44

55
describe('getRequestOptions', () => {
66
test('retries disabled if retries == 0', async () => {
7-
const [retryOptions, requestOptions] = getRetryOptions(0, [400, 500, 502])
7+
const [retryOptions, requestOptions] = getRetryOptions(
8+
0,
9+
[400, 500, 502],
10+
[]
11+
)
812

913
expect(retryOptions.enabled).toBe(false)
1014
expect(retryOptions.doNotRetry).toBeFalsy()
1115

12-
expect(requestOptions.retries).toBeFalsy()
16+
expect(requestOptions?.retries).toBeFalsy()
1317
})
1418

1519
test('properties set if retries > 0', async () => {
16-
const [retryOptions, requestOptions] = getRetryOptions(1, [400, 500, 502])
20+
const [retryOptions, requestOptions] = getRetryOptions(
21+
1,
22+
[400, 500, 502],
23+
[]
24+
)
1725

1826
expect(retryOptions.enabled).toBe(true)
1927
expect(retryOptions.doNotRetry).toEqual([400, 500, 502])
2028

21-
expect(requestOptions.retries).toEqual(1)
29+
expect(requestOptions?.retries).toEqual(1)
2230
})
2331

2432
test('properties set if retries > 0', async () => {
25-
const [retryOptions, requestOptions] = getRetryOptions(1, [400, 500, 502])
33+
const [retryOptions, requestOptions] = getRetryOptions(
34+
1,
35+
[400, 500, 502],
36+
[]
37+
)
2638

2739
expect(retryOptions.enabled).toBe(true)
2840
expect(retryOptions.doNotRetry).toEqual([400, 500, 502])
2941

30-
expect(requestOptions.retries).toEqual(1)
42+
expect(requestOptions?.retries).toEqual(1)
3143
})
3244

3345
test('retryOptions.doNotRetry not set if exemptStatusCodes isEmpty', async () => {
34-
const [retryOptions, requestOptions] = getRetryOptions(1, [])
46+
const [retryOptions, requestOptions] = getRetryOptions(1, [], [])
3547

3648
expect(retryOptions.enabled).toBe(true)
3749
expect(retryOptions.doNotRetry).toBeUndefined()
3850

39-
expect(requestOptions.retries).toEqual(1)
51+
expect(requestOptions?.retries).toEqual(1)
52+
})
53+
54+
test('requestOptions does not override defaults from @actions/github', async () => {
55+
const [retryOptions, requestOptions] = getRetryOptions(1, [], {
56+
request: {
57+
agent: 'default-user-agent'
58+
},
59+
foo: 'bar'
60+
})
61+
62+
expect(retryOptions.enabled).toBe(true)
63+
expect(retryOptions.doNotRetry).toBeUndefined()
64+
65+
expect(requestOptions?.retries).toEqual(1)
66+
expect(requestOptions?.agent).toEqual('default-user-agent')
67+
expect(requestOptions?.foo).toBeUndefined() // this should not be in the `options.request` object, but at the same level as `request`
4068
})
4169
})

dist/index.js

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ var __importStar = (this && this.__importStar) || function (mod) {
246246
return result;
247247
};
248248
Object.defineProperty(exports, "__esModule", { value: true });
249-
exports.getOctokitOptions = exports.GitHub = exports.context = void 0;
249+
exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;
250250
const Context = __importStar(__webpack_require__(53));
251251
const Utils = __importStar(__webpack_require__(914));
252252
// octokit + plugins
@@ -255,13 +255,13 @@ const plugin_rest_endpoint_methods_1 = __webpack_require__(45);
255255
const plugin_paginate_rest_1 = __webpack_require__(193);
256256
exports.context = new Context.Context();
257257
const baseUrl = Utils.getApiBaseUrl();
258-
const defaults = {
258+
exports.defaults = {
259259
baseUrl,
260260
request: {
261261
agent: Utils.getProxyAgent(baseUrl)
262262
}
263263
};
264-
exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(defaults);
264+
exports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);
265265
/**
266266
* Convience function to correctly format Octokit Options to pass into the constructor.
267267
*
@@ -13322,6 +13322,9 @@ var exec = __webpack_require__(514);
1332213322
// EXTERNAL MODULE: ./node_modules/@actions/github/lib/github.js
1332313323
var lib_github = __webpack_require__(438);
1332413324

13325+
// EXTERNAL MODULE: ./node_modules/@actions/github/lib/utils.js
13326+
var utils = __webpack_require__(30);
13327+
1332513328
// EXTERNAL MODULE: ./node_modules/@actions/glob/lib/glob.js
1332613329
var glob = __webpack_require__(90);
1332713330

@@ -13340,18 +13343,22 @@ function callAsyncFunction(args, source) {
1334013343

1334113344
// CONCATENATED MODULE: ./src/retry-options.ts
1334213345

13343-
function getRetryOptions(retries, exemptStatusCodes) {
13346+
function getRetryOptions(retries, exemptStatusCodes, defaultOptions) {
1334413347
var _a;
1334513348
if (retries <= 0) {
13346-
return [{ enabled: false }, {}];
13349+
return [{ enabled: false }, defaultOptions.request];
1334713350
}
1334813351
const retryOptions = {
1334913352
enabled: true
1335013353
};
1335113354
if (exemptStatusCodes.length > 0) {
1335213355
retryOptions.doNotRetry = exemptStatusCodes;
1335313356
}
13357+
// The GitHub type has some defaults for `options.request`
13358+
// see: https://github.com/actions/toolkit/blob/4fbc5c941a57249b19562015edbd72add14be93d/packages/github/src/utils.ts#L15
13359+
// We pass these in here so they are not overidden.
1335413360
const requestOptions = {
13361+
...defaultOptions.request,
1335513362
retries
1335613363
};
1335713364
Object(core.debug)(`GitHub client configured with: (retries: ${requestOptions.retries}, retry-exempt-status-code: ${(_a = retryOptions === null || retryOptions === void 0 ? void 0 : retryOptions.doNotRetry) !== null && _a !== void 0 ? _a : 'octokit default: [400, 401, 403, 404, 422]'})`);
@@ -13401,6 +13408,7 @@ const wrapRequire = new Proxy(require, {
1340113408

1340213409

1340313410

13411+
1340413412
process.on('unhandledRejection', handleError);
1340513413
main().catch(handleError);
1340613414
async function main() {
@@ -13410,7 +13418,7 @@ async function main() {
1341013418
const previews = Object(core.getInput)('previews');
1341113419
const retries = parseInt(Object(core.getInput)('retries'));
1341213420
const exemptStatusCodes = parseNumberArray(Object(core.getInput)('retry-exempt-status-codes'));
13413-
const [retryOpts, requestOpts] = getRetryOptions(retries, exemptStatusCodes);
13421+
const [retryOpts, requestOpts] = getRetryOptions(retries, exemptStatusCodes, utils.defaults);
1341413422
const opts = {};
1341513423
if (debug === 'true')
1341613424
opts.log = console;

package-lock.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "github-script",
33
"description": "A GitHub action for executing a simple script",
4-
"version": "6.3.0",
4+
"version": "6.3.1",
55
"author": "GitHub",
66
"license": "MIT",
77
"main": "dist/index.js",
@@ -55,4 +55,4 @@
5555
"ts-jest": "^27.0.5",
5656
"typescript": "^4.3.5"
5757
}
58-
}
58+
}

src/main.ts

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,13 @@
11
import * as core from '@actions/core'
22
import * as exec from '@actions/exec'
33
import {context, getOctokit} from '@actions/github'
4+
import {defaults as defaultGitHubOptions} from '@actions/github/lib/utils'
45
import * as glob from '@actions/glob'
56
import * as io from '@actions/io'
67
import {retry} from '@octokit/plugin-retry'
8+
import {RequestRequestOptions} from '@octokit/types'
79
import {callAsyncFunction} from './async-function'
8-
import {
9-
getRetryOptions,
10-
parseNumberArray,
11-
RequestOptions,
12-
RetryOptions
13-
} from './retry-options'
10+
import {getRetryOptions, parseNumberArray, RetryOptions} from './retry-options'
1411
import {wrapRequire} from './wrap-require'
1512

1613
process.on('unhandledRejection', handleError)
@@ -21,7 +18,7 @@ type Options = {
2118
userAgent?: string
2219
previews?: string[]
2320
retry?: RetryOptions
24-
request?: RequestOptions
21+
request?: RequestRequestOptions
2522
}
2623

2724
async function main(): Promise<void> {
@@ -33,7 +30,11 @@ async function main(): Promise<void> {
3330
const exemptStatusCodes = parseNumberArray(
3431
core.getInput('retry-exempt-status-codes')
3532
)
36-
const [retryOpts, requestOpts] = getRetryOptions(retries, exemptStatusCodes)
33+
const [retryOpts, requestOpts] = getRetryOptions(
34+
retries,
35+
exemptStatusCodes,
36+
defaultGitHubOptions
37+
)
3738

3839
const opts: Options = {}
3940
if (debug === 'true') opts.log = console

src/retry-options.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
import * as core from '@actions/core'
2+
import {OctokitOptions} from '@octokit/core/dist-types/types'
3+
import {RequestRequestOptions} from '@octokit/types'
24

35
export type RetryOptions = {
46
doNotRetry?: number[]
57
enabled?: boolean
68
}
79

8-
export type RequestOptions = {
9-
retries?: number
10-
}
11-
1210
export function getRetryOptions(
1311
retries: number,
14-
exemptStatusCodes: number[]
15-
): [RetryOptions, RequestOptions] {
12+
exemptStatusCodes: number[],
13+
defaultOptions: OctokitOptions
14+
): [RetryOptions, RequestRequestOptions | undefined] {
1615
if (retries <= 0) {
17-
return [{enabled: false}, {}]
16+
return [{enabled: false}, defaultOptions.request]
1817
}
1918

2019
const retryOptions: RetryOptions = {
@@ -25,7 +24,11 @@ export function getRetryOptions(
2524
retryOptions.doNotRetry = exemptStatusCodes
2625
}
2726

28-
const requestOptions: RequestOptions = {
27+
// The GitHub type has some defaults for `options.request`
28+
// see: https://github.com/actions/toolkit/blob/4fbc5c941a57249b19562015edbd72add14be93d/packages/github/src/utils.ts#L15
29+
// We pass these in here so they are not overidden.
30+
const requestOptions: RequestRequestOptions = {
31+
...defaultOptions.request,
2932
retries
3033
}
3134

0 commit comments

Comments
 (0)