Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overdue fixes #35

Merged
merged 8 commits into from Oct 13, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
11 changes: 4 additions & 7 deletions .eslintrc.json
@@ -1,13 +1,14 @@
{
"plugins": ["jest", "@typescript-eslint"],
"extends": ["plugin:github/es6"],
"extends": ["plugin:github/recommended"],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 9,
"sourceType": "module",
"project": "./tsconfig.json"
},
"rules": {
"i18n-text/no-en": "off",
"eslint-comments/no-use": "off",
"import/no-namespace": "off",
"no-unused-vars": "off",
Expand All @@ -16,13 +17,11 @@
"@typescript-eslint/no-require-imports": "error",
"@typescript-eslint/array-type": "error",
"@typescript-eslint/await-thenable": "error",
"@typescript-eslint/ban-ts-ignore": "error",
"@typescript-eslint/ban-ts-comment": "error",
"camelcase": "off",
"@typescript-eslint/camelcase": "error",
"@typescript-eslint/class-name-casing": "error",
"@typescript-eslint/consistent-type-assertions": "error",
"@typescript-eslint/explicit-function-return-type": ["error", {"allowExpressions": true}],
"@typescript-eslint/func-call-spacing": ["error", "never"],
"@typescript-eslint/generic-type-naming": ["error", "^[A-Z][A-Za-z]*$"],
"@typescript-eslint/no-array-constructor": "error",
"@typescript-eslint/no-empty-interface": "error",
"@typescript-eslint/no-explicit-any": "error",
Expand All @@ -32,15 +31,13 @@
"@typescript-eslint/no-misused-new": "error",
"@typescript-eslint/no-namespace": "error",
"@typescript-eslint/no-non-null-assertion": "warn",
"@typescript-eslint/no-object-literal-type-assertion": "error",
"@typescript-eslint/no-unnecessary-qualifier": "error",
"@typescript-eslint/no-unnecessary-type-assertion": "error",
"@typescript-eslint/no-useless-constructor": "error",
"@typescript-eslint/no-var-requires": "error",
"@typescript-eslint/prefer-for-of": "warn",
"@typescript-eslint/prefer-function-type": "warn",
"@typescript-eslint/prefer-includes": "error",
"@typescript-eslint/prefer-interface": "error",
"@typescript-eslint/prefer-string-starts-ends-with": "error",
"@typescript-eslint/promise-function-async": "error",
"@typescript-eslint/require-array-sort-compare": "error",
Expand Down
26 changes: 16 additions & 10 deletions .github/workflows/test.yml
Expand Up @@ -4,21 +4,27 @@ on: # rebuild any PRs and main branch changes
push:
branches:
- master
- 'releases/*'
- "releases/*"

jobs:
build: # make sure build/ci work properly
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- run: |
npm install
npm run all
- uses: actions/checkout@v3
- run: |
npm ci
npm run all
test: # make sure the action works on a clean machine without building
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: ./
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: build
- uses: actions/checkout@v3
- uses: ./
id: wait-for-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
checkName: build
ref: ${{ github.event.pull_request.head.sha || github.sha }}

- name: Fail if build did not succeed
if: steps.wait-for-build.outputs.conclusion != 'success'
run: exit 1
1 change: 1 addition & 0 deletions .nvmrc
@@ -0,0 +1 @@
v16
3 changes: 1 addition & 2 deletions .prettierrc.json
Expand Up @@ -6,6 +6,5 @@
"singleQuote": true,
"trailingComma": "none",
"bracketSpacing": false,
"arrowParens": "avoid",
"parser": "typescript"
"arrowParens": "avoid"
}
21 changes: 10 additions & 11 deletions README.md
Expand Up @@ -11,7 +11,7 @@ A GitHub Action that allows you to wait for another GitHub check to complete. Th
```yaml
steps:
- name: Wait for build to succeed
uses: fountainhead/action-wait-for-check@v1.0.0
uses: fountainhead/action-wait-for-check@v1.1.0
id: wait-for-build
with:
token: ${{ secrets.GITHUB_TOKEN }}
Expand All @@ -31,44 +31,43 @@ This Action accepts the following configuration parameters via `with:`
- `token`

**Required**

The GitHub token to use for making API requests. Typically, this would be set to `${{ secrets.GITHUB_TOKEN }}`.

- `checkName`

**Required**

The name of the GitHub check to wait for. For example, `build` or `deploy`.

**IMPORTANT**: If the check you're referencing is provided by another GitHub Actions workflow, make sure that you reference the name of a _Job_ within that workflow, and _not_ the name the _Workflow_ itself.

- `ref`

**Default: `github.sha`**

The Git ref of the commit you want to poll for a passing check.

*PROTIP: You may want to use `github.pull_request.head.sha` when working with Pull Requests.*


_PROTIP: You may want to use `github.event.pull_request.head.sha` when working with Pull Requests._

- `repo`

**Default: `github.repo.repo`**

The name of the Repository you want to poll for a passing check.

- `owner`

**Default: `github.repo.owner`**

The name of the Repository's owner you want to poll for a passing check.

- `timeoutSeconds`

**Default: `600`**

The number of seconds to wait for the check to complete. If the check does not complete within this amount of time, this Action will emit a `conclusion` value of `timed_out`.

- `intervalSeconds`

**Default: `10`**
Expand Down
16 changes: 9 additions & 7 deletions __tests__/poll.test.ts
@@ -1,8 +1,10 @@
import {poll} from '../src/poll'

const client = {
checks: {
listForRef: jest.fn()
rest: {
checks: {
listForRef: jest.fn()
}
}
}

Expand All @@ -19,7 +21,7 @@ const run = () =>
})

test('returns conclusion of completed check', async () => {
client.checks.listForRef.mockResolvedValue({
client.rest.checks.listForRef.mockResolvedValue({
data: {
check_runs: [
{
Expand All @@ -38,7 +40,7 @@ test('returns conclusion of completed check', async () => {
const result = await run()

expect(result).toBe('success')
expect(client.checks.listForRef).toHaveBeenCalledWith({
expect(client.rest.checks.listForRef).toHaveBeenCalledWith({
owner: 'testOrg',
repo: 'testRepo',
ref: 'abcd',
Expand All @@ -47,7 +49,7 @@ test('returns conclusion of completed check', async () => {
})

test('polls until check is completed', async () => {
client.checks.listForRef
client.rest.checks.listForRef
.mockResolvedValueOnce({
data: {
check_runs: [
Expand Down Expand Up @@ -83,11 +85,11 @@ test('polls until check is completed', async () => {
const result = await run()

expect(result).toBe('failure')
expect(client.checks.listForRef).toHaveBeenCalledTimes(3)
expect(client.rest.checks.listForRef).toHaveBeenCalledTimes(3)
})

test(`returns 'timed_out' if exceeding deadline`, async () => {
client.checks.listForRef.mockResolvedValue({
client.rest.checks.listForRef.mockResolvedValue({
data: {
check_runs: [
{
Expand Down
2 changes: 1 addition & 1 deletion action.yml
Expand Up @@ -22,5 +22,5 @@ inputs:
intervalSeconds:
description: 'The number of seconds to wait before each poll of the GitHub API.'
runs:
using: 'node12'
using: 'node16'
main: 'dist/index.js'