496a7ac4eb
AVA stores snapshots in a binary format (`.snap`), which produces no
meaningful diffs and bloats Git history. This replaces AVA with the
built-in `node:test` module, whose snapshot support generates
human-readable text files that are easy to diff and review in pull
requests.
The migration also replaces `@sinonjs/fake-timers` and `execa` with
Node.js built-ins (`node:test` mock timers and `node:child_process`),
removing three dev dependencies total.
- **`tests/index.js`**: Rewritten to use `node:test` with a custom
snapshot serializer that renders strings with actual newlines. Uses
subtests for labeled `stderr`/`stdout` snapshots, and only snapshots
non-empty output.
- **`tests/main-repo-skew.test.js`**: Replace `@sinonjs/fake-timers`
with `mock.timers.enable()` from `node:test`.
- **`tests/README.md`**: Updated documentation to reflect `node --test`
and the new snapshot file.
- **`package.json`**: Remove `ava`, `@sinonjs/fake-timers`, and `execa`
from devDependencies. Update test script to `c8 --100 node --test
tests/index.js`.
- **`tests/index.js.snapshot`**: New text-based snapshot file replacing
binary `tests/snapshots/index.js.snap`.
- **`tests/snapshots/`**: Deleted.
All 22 test scenarios (66 subtests) pass with 100% code coverage.
Closes #344
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
(cherry picked from commit f863ba5554)
275 lines
10 KiB
Plaintext
275 lines
10 KiB
Plaintext
exports[`main-custom-github-api-url.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/create-github-app-token
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /api/v3/repos/actions/create-github-app-token/installation
|
|
POST /api/v3/app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"]}
|
|
`;
|
|
|
|
exports[`main-missing-owner.test.js > stderr 1`] = `
|
|
GITHUB_REPOSITORY_OWNER missing, must be set to '<owner>'
|
|
`;
|
|
|
|
exports[`main-missing-repository.test.js > stderr 1`] = `
|
|
GITHUB_REPOSITORY missing, must be set to '<owner>/<repo>'
|
|
`;
|
|
|
|
exports[`main-private-key-with-escaped-newlines.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are not set. Creating token for this repository (actions/create-github-app-token).
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"]}
|
|
`;
|
|
|
|
exports[`main-proxy-requires-native-support.test.js > stderr 1`] = `
|
|
A proxy environment variable is set, but Node.js native proxy support is not enabled. Set NODE_USE_ENV_PROXY=1 for this action step.
|
|
`;
|
|
|
|
exports[`main-proxy-requires-native-support.test.js > stdout 1`] = `
|
|
::error::A proxy environment variable is set, but Node.js native proxy support is not enabled. Set NODE_USE_ENV_PROXY=1 for this action step.
|
|
`;
|
|
|
|
exports[`main-repo-skew.test.js > stderr 1`] = `
|
|
'Issued at' claim ('iat') must be an Integer representing the time that the assertion was issued.
|
|
[@octokit/auth-app] GitHub API time and system time are different by 30 seconds. Retrying request with the difference accounted for.
|
|
`;
|
|
|
|
exports[`main-repo-skew.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/failed-repo
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/failed-repo/installation
|
|
GET /repos/actions/failed-repo/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["failed-repo"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-fail-response.test.js > stdout 1`] = `
|
|
Input 'repositories' is not set. Creating token for all repositories owned by smockle.
|
|
Failed to create token for "smockle" (attempt 1): GitHub API not available
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /users/smockle/installation
|
|
GET /users/smockle/installation
|
|
POST /app/installations/123456/access_tokens
|
|
null
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-repo-fail-response.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/failed-repo
|
|
Failed to create token for "failed-repo" (attempt 1): GitHub API not available
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/failed-repo/installation
|
|
GET /repos/actions/failed-repo/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["failed-repo"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-repo-set-to-many-newline.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/create-github-app-token
|
|
- actions/toolkit
|
|
- actions/checkout
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token","toolkit","checkout"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-repo-set-to-many.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/create-github-app-token
|
|
- actions/toolkit
|
|
- actions/checkout
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token","toolkit","checkout"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-repo-set-to-one.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are set. Creating token for the following repositories:
|
|
|
|
- actions/create-github-app-token
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-set-repo-unset.test.js > stdout 1`] = `
|
|
Input 'repositories' is not set. Creating token for all repositories owned by actions.
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /users/actions/installation
|
|
POST /app/installations/123456/access_tokens
|
|
null
|
|
`;
|
|
|
|
exports[`main-token-get-owner-unset-repo-set.test.js > stdout 1`] = `
|
|
No 'owner' input provided. Using default owner 'actions' to create token for the following repositories:
|
|
- actions/create-github-app-token
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"]}
|
|
`;
|
|
|
|
exports[`main-token-get-owner-unset-repo-unset.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are not set. Creating token for this repository (actions/create-github-app-token).
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"]}
|
|
`;
|
|
|
|
exports[`main-token-permissions-set.test.js > stdout 1`] = `
|
|
Inputs 'owner' and 'repositories' are not set. Creating token for this repository (actions/create-github-app-token).
|
|
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
|
|
::set-output name=installation-id::123456
|
|
|
|
::set-output name=app-slug::github-actions
|
|
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a
|
|
::save-state name=expiresAt::2016-07-11T22:14:10Z
|
|
--- REQUESTS ---
|
|
GET /repos/actions/create-github-app-token/installation
|
|
POST /app/installations/123456/access_tokens
|
|
{"repositories":["create-github-app-token"],"permissions":{"issues":"write","pull_requests":"read"}}
|
|
`;
|
|
|
|
exports[`post-proxy-requires-native-support.test.js > stderr 1`] = `
|
|
A proxy environment variable is set, but Node.js native proxy support is not enabled. Set NODE_USE_ENV_PROXY=1 for this action step.
|
|
`;
|
|
|
|
exports[`post-proxy-requires-native-support.test.js > stdout 1`] = `
|
|
::error::A proxy environment variable is set, but Node.js native proxy support is not enabled. Set NODE_USE_ENV_PROXY=1 for this action step.
|
|
`;
|
|
|
|
exports[`post-revoke-token-fail-response.test.js > stdout 1`] = `
|
|
::warning::Token revocation failed:
|
|
`;
|
|
|
|
exports[`post-token-expired.test.js > stdout 1`] = `
|
|
Token expired, skipping token revocation
|
|
`;
|
|
|
|
exports[`post-token-set.test.js > stdout 1`] = `
|
|
Token revoked
|
|
`;
|
|
|
|
exports[`post-token-skipped.test.js > stdout 1`] = `
|
|
Token revocation was skipped
|
|
`;
|
|
|
|
exports[`post-token-unset.test.js > stdout 1`] = `
|
|
Token is not set
|
|
`;
|