Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 7dff1a8

Browse filesBrowse files
authored
Merge pull request actions#293 from luketomlinson/main
Fix overriding request options from @actions/github
2 parents d4560e1 + 8445ca8 commit 7dff1a8
Copy full SHA for 7dff1a8

File tree

7 files changed

+82
-42
lines changed
Filter options

7 files changed

+82
-42
lines changed

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

Copy file name to clipboardExpand all lines: .licenses/npm/@actions/github.dep.yml
+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎__test__/get-retry-options.test.ts

Copy file name to clipboardExpand all lines: __test__/get-retry-options.test.ts
+36-8
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

Copy file name to clipboardExpand all lines: dist/index.js
+14-6
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

Copy file name to clipboardExpand all lines: package-lock.json
+9-9
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎package.json

Copy file name to clipboardExpand all lines: package.json
+2-2
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

Copy file name to clipboardExpand all lines: src/main.ts
+9-8
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

Copy file name to clipboardExpand all lines: src/retry-options.ts
+11-8
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 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.