Merge pull request #586 from C0ZEN/feature/split-pr-and-issue-options
feat(options): remove common options between the issues and PRs
This commit is contained in:
commit
db699ab3b1
40
.github/workflows/stale.yml
vendored
40
.github/workflows/stale.yml
vendored
@ -1,19 +1,21 @@
|
|||||||
name: 'Stale issue handler'
|
name: 'Stale issue handler'
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '0 0 * * *'
|
- cron: '0 0 * * *'
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
stale:
|
stale:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@main
|
- uses: actions/stale@main
|
||||||
id: stale
|
id: stale
|
||||||
with:
|
with:
|
||||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days'
|
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days'
|
||||||
days-before-stale: 30
|
days-before-issue-stale: 30
|
||||||
days-before-close: 5
|
days-before-pr-stale: 30
|
||||||
exempt-issue-labels: 'blocked,must,should,keep'
|
days-before-issue-close: 5
|
||||||
- name: Print outputs
|
days-before-pr-close: 5
|
||||||
run: echo ${{ join(steps.stale.outputs.*, ',') }}
|
exempt-issue-labels: 'blocked,must,should,keep'
|
||||||
|
- name: Print outputs
|
||||||
|
run: echo ${{ join(steps.stale.outputs.*, ',') }}
|
||||||
|
677
README.md
677
README.md
@ -28,58 +28,52 @@ You can find more information about the required permissions under the correspon
|
|||||||
|
|
||||||
Every argument is optional.
|
Every argument is optional.
|
||||||
|
|
||||||
| Input | Description | Default |
|
| Input | Description | Default |
|
||||||
| ------------------------------------------------------------------- | --------------------------------------------------------------------------- | --------------------- |
|
| ------------------------------------------------------------------- | ----------------------------------------------------------------------- | --------------------- |
|
||||||
| [repo-token](#repo-token) | PAT for GitHub API authentication | `${{ github.token }}` |
|
| Common options | | |
|
||||||
| [days-before-stale](#days-before-stale) | Idle number of days before marking issues/PRs stale | `60` |
|
| [repo-token](#repo-token) | PAT for GitHub API authentication | `${{ github.token }}` |
|
||||||
| [days-before-issue-stale](#days-before-issue-stale) | Override [days-before-stale](#days-before-stale) for issues only | |
|
| [operations-per-run](#operations-per-run) | Max number of operations per run | `30` |
|
||||||
| [days-before-pr-stale](#days-before-pr-stale) | Override [days-before-stale](#days-before-stale) for PRs only | |
|
| [labels-to-add-when-unstale](#labels-to-add-when-unstale) | Add specified labels from issues/PRs when they become unstale | |
|
||||||
| [days-before-close](#days-before-close) | Idle number of days before closing stale issues/PRs | `7` |
|
| [labels-to-remove-when-unstale](#labels-to-remove-when-unstale) | Remove specified labels from issues/PRs when they become unstale | |
|
||||||
| [days-before-issue-close](#days-before-issue-close) | Override [days-before-close](#days-before-close) for issues only | |
|
| [debug-only](#debug-only) | Dry-run | `false` |
|
||||||
| [days-before-pr-close](#days-before-pr-close) | Override [days-before-close](#days-before-close) for PRs only | |
|
| [ascending](#ascending) | Order to get issues/PRs | `false` |
|
||||||
| [stale-issue-message](#stale-issue-message) | Comment on the staled issues | |
|
| [start-date](#start-date) | Skip stale action for issues/PRs created before it | |
|
||||||
| [stale-pr-message](#stale-pr-message) | Comment on the staled PRs | |
|
| [delete-branch](#delete-branch) | Delete branch after closing a stale PR | `false` |
|
||||||
| [close-issue-message](#close-issue-message) | Comment on the staled issues while closed | |
|
| [enable-statistics](#enable-statistics) | Display statistics in the logs | `true` |
|
||||||
| [close-pr-message](#close-pr-message) | Comment on the staled PRs while closed | |
|
| Issue options | | |
|
||||||
| [stale-issue-label](#stale-issue-label) | Label to apply on staled issues | `Stale` |
|
| [days-before-issue-stale](#days-before-issue-stale) | Idle number of days before marking issues stale | `60` |
|
||||||
| [close-issue-label](#close-issue-label) | Label to apply on closed issues | |
|
| [days-before-issue-close](#days-before-issue-close) | Idle number of days before closing stale issues | `7` |
|
||||||
| [stale-pr-label](#stale-pr-label) | Label to apply on staled PRs | `Stale` |
|
| [stale-issue-message](#stale-issue-message) | Comment on the staled issues | |
|
||||||
| [close-pr-label](#close-pr-label) | Label to apply on closed PRs | |
|
| [close-issue-message](#close-issue-message) | Comment on the staled issues while closed | |
|
||||||
| [exempt-issue-labels](#exempt-issue-labels) | Labels on issues exempted from stale | |
|
| [stale-issue-label](#stale-issue-label) | Label to apply on staled issues | `Stale` |
|
||||||
| [exempt-pr-labels](#exempt-pr-labels) | Labels on PRs exempted from stale | |
|
| [close-issue-label](#close-issue-label) | Label to apply on closed issues | |
|
||||||
| [only-labels](#only-labels) | Only issues/PRs with ALL these labels are checked | |
|
| [exempt-issue-labels](#exempt-issue-labels) | Labels on issues exempted from stale | |
|
||||||
| [only-issue-labels](#only-issue-labels) | Override [only-labels](#only-labels) for issues only | |
|
| [only-issue-labels](#only-issue-labels) | Only issues with ALL these labels are checked | |
|
||||||
| [only-pr-labels](#only-pr-labels) | Override [only-labels](#only-labels) for PRs only | |
|
| [any-of-issue-labels](#any-of-issue-labels) | Only issues with ANY of these labels are checked | |
|
||||||
| [any-of-labels](#any-of-labels) | Only issues/PRs with ANY of these labels are checked | |
|
| [remove-issue-stale-when-updated](#remove-issue-stale-when-updated) | Remove stale label from issues on updates/comments | `true` |
|
||||||
| [any-of-issue-labels](#any-of-issue-labels) | Override [any-of-labels](#any-of-labels) for issues only | |
|
| [exempt-issue-milestones](#exempt-issue-milestones) | Milestones on issues exempted from stale | |
|
||||||
| [any-of-pr-labels](#any-of-pr-labels) | Override [any-of-labels](#any-of-labels) for PRs only | |
|
| [exempt-all-issue-milestones](#exempt-all-issue-milestones) | Exempt all issues with milestones from stale | `false` |
|
||||||
| [operations-per-run](#operations-per-run) | Max number of operations per run | `30` |
|
| [exempt-issue-assignees](#exempt-issue-assignees) | Assignees on issues exempted from stale | |
|
||||||
| [remove-stale-when-updated](#remove-stale-when-updated) | Remove stale label from issues/PRs on updates | `true` |
|
| [exempt-all-issue-assignees](#exempt-all-issue-assignees) | Exempt all issues with assignees from stale | `false` |
|
||||||
| [remove-issue-stale-when-updated](#remove-issue-stale-when-updated) | Remove stale label from issues on updates/comments | |
|
| [ignore-issue-updates](#ignore-issue-updates) | Any update (update/comment) can reset the stale idle time on the issues | `false` |
|
||||||
| [remove-pr-stale-when-updated](#remove-pr-stale-when-updated) | Remove stale label from PRs on updates/comments | |
|
| Pull request options | | |
|
||||||
| [labels-to-add-when-unstale](#labels-to-add-when-unstale) | Add specified labels from issues/PRs when they become unstale | |
|
| [days-before-pr-stale](#days-before-pr-stale) | Idle number of days before marking PRs stale | `60` |
|
||||||
| [labels-to-remove-when-unstale](#labels-to-remove-when-unstale) | Remove specified labels from issues/PRs when they become unstale | |
|
| [days-before-pr-close](#days-before-pr-close) | Idle number of days before closing stale PRs | `7` |
|
||||||
| [debug-only](#debug-only) | Dry-run | `false` |
|
| [stale-pr-message](#stale-pr-message) | Comment on the staled PRs | |
|
||||||
| [ascending](#ascending) | Order to get issues/PRs | `false` |
|
| [close-pr-message](#close-pr-message) | Comment on the staled PRs while closed | |
|
||||||
| [start-date](#start-date) | Skip stale action for issues/PRs created before it | |
|
| [stale-pr-label](#stale-pr-label) | Label to apply on staled PRs | `Stale` |
|
||||||
| [delete-branch](#delete-branch) | Delete branch after closing a stale PR | `false` |
|
| [close-pr-label](#close-pr-label) | Label to apply on closed PRs | |
|
||||||
| [exempt-milestones](#exempt-milestones) | Milestones on issues/PRs exempted from stale | |
|
| [exempt-pr-labels](#exempt-pr-labels) | Labels on PRs exempted from stale | |
|
||||||
| [exempt-issue-milestones](#exempt-issue-milestones) | Override [exempt-milestones](#exempt-milestones) for issues only | |
|
| [only-pr-labels](#only-pr-labels) | Only PRs with ALL these labels are checked | |
|
||||||
| [exempt-pr-milestones](#exempt-pr-milestones) | Override [exempt-milestones](#exempt-milestones) for PRs only | |
|
| [any-of-pr-labels](#any-of-pr-labels) | Only PRs with ANY of these labels are checked | |
|
||||||
| [exempt-all-milestones](#exempt-all-milestones) | Exempt all issues/PRs with milestones from stale | `false` |
|
| [remove-pr-stale-when-updated](#remove-pr-stale-when-updated) | Remove stale label from PRs on updates/comments | `true` |
|
||||||
| [exempt-all-issue-milestones](#exempt-all-issue-milestones) | Override [exempt-all-milestones](#exempt-all-milestones) for issues only | |
|
| [delete-branch](#delete-branch) | Delete branch after closing a stale PR | `false` |
|
||||||
| [exempt-all-pr-milestones](#exempt-all-pr-milestones) | Override [exempt-all-milestones](#exempt-all-milestones) for PRs only | |
|
| [exempt-pr-milestones](#exempt-pr-milestones) | Milestones on PRs exempted from stale | |
|
||||||
| [exempt-assignees](#exempt-assignees) | Assignees on issues/PRs exempted from stale | |
|
| [exempt-all-pr-milestones](#exempt-all-pr-milestones) | Exempt all PRs with milestones from stale | `false` |
|
||||||
| [exempt-issue-assignees](#exempt-issue-assignees) | Override [exempt-assignees](#exempt-assignees) for issues only | |
|
| [exempt-pr-assignees](#exempt-pr-assignees) | Assignees on PRs exempted from stale | |
|
||||||
| [exempt-pr-assignees](#exempt-pr-assignees) | Override [exempt-assignees](#exempt-assignees) for PRs only | |
|
| [exempt-all-pr-assignees](#exempt-all-pr-assignees) | Exempt all PRs with assignees from stale | `false` |
|
||||||
| [exempt-all-assignees](#exempt-all-assignees) | Exempt all issues/PRs with assignees from stale | `false` |
|
| [exempt-draft-pr](#exempt-draft-pr) | Skip the stale action for draft PRs | `false` |
|
||||||
| [exempt-all-issue-assignees](#exempt-all-issue-assignees) | Override [exempt-all-assignees](#exempt-all-assignees) for issues only | |
|
| [ignore-pr-updates](#ignore-pr-updates) | Any update (update/comment) can reset the stale idle time on the PRs | `false` |
|
||||||
| [exempt-all-pr-assignees](#exempt-all-pr-assignees) | Override [exempt-all-assignees](#exempt-all-assignees) for PRs only | |
|
|
||||||
| [exempt-draft-pr](#exempt-draft-pr) | Skip the stale action for draft PRs | `false` |
|
|
||||||
| [enable-statistics](#enable-statistics) | Display statistics in the logs | `true` |
|
|
||||||
| [ignore-updates](#ignore-updates) | Any update (update/comment) can reset the stale idle time on the issues/PRs | `false` |
|
|
||||||
| [ignore-issue-updates](#ignore-issue-updates) | Override [ignore-updates](#ignore-updates) for issues only | |
|
|
||||||
| [ignore-pr-updates](#ignore-pr-updates) | Override [ignore-updates](#ignore-updates) for PRs only | |
|
|
||||||
|
|
||||||
### List of output options
|
### List of output options
|
||||||
|
|
||||||
@ -97,208 +91,6 @@ Under the hood, it uses the [@actions/github](https://www.npmjs.com/package/@act
|
|||||||
|
|
||||||
Default value: `${{ github.token }}`
|
Default value: `${{ github.token }}`
|
||||||
|
|
||||||
#### days-before-stale
|
|
||||||
|
|
||||||
The idle number of days before marking the issues or the pull requests as stale (by adding a label).
|
|
||||||
The issues or the pull requests will be marked as stale if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
|
||||||
It means that any updates made, or any comments added to the issues or to the pull requests will restart the counter of days before marking as stale.
|
|
||||||
However, if you wish to ignore this behaviour so that the creation date (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`) only matters, you can disable the [ignore-updates](#ignore-updates) option.
|
|
||||||
|
|
||||||
If set to a negative number like `-1`, no issues or pull requests will be marked as stale automatically.
|
|
||||||
In that case, you can still add the stale label manually to mark as stale.
|
|
||||||
|
|
||||||
The label used to stale is defined by these two options:
|
|
||||||
|
|
||||||
- [stale-issue-label](#stale-issue-label)
|
|
||||||
- [stale-pr-label](#stale-pr-label)
|
|
||||||
|
|
||||||
A comment can also be added to notify about the stale and is defined by these two options:
|
|
||||||
|
|
||||||
- [stale-issue-message](#stale-issue-message)
|
|
||||||
- [stale-pr-message](#stale-pr-message)
|
|
||||||
|
|
||||||
You can fine tune which issues or pull requests should be marked as stale based on the milestones, the assignees, the creation date and the missing/present labels from these options:
|
|
||||||
|
|
||||||
- [exempt-issue-labels](#exempt-issue-labels)
|
|
||||||
- [exempt-pr-labels](#exempt-pr-labels)
|
|
||||||
- [only-labels](#only-labels)
|
|
||||||
- [any-of-labels](#any-of-labels)
|
|
||||||
- [start-date](#start-date)
|
|
||||||
- [exempt-milestones](#exempt-milestones)
|
|
||||||
- [exempt-all-milestones](#exempt-all-milestones)
|
|
||||||
- [exempt-assignees](#exempt-assignees)
|
|
||||||
- [exempt-all-assignees](#exempt-all-assignees)
|
|
||||||
- [ignore-updates](#ignore-updates)
|
|
||||||
|
|
||||||
Default value: `60`
|
|
||||||
|
|
||||||
#### days-before-issue-stale
|
|
||||||
|
|
||||||
Useful to override [days-before-stale](#days-before-stale) but only for the idle number of days before marking the issues as stale.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### days-before-pr-stale
|
|
||||||
|
|
||||||
Useful to override [days-before-stale](#days-before-stale) but only for the idle number of days before marking the pull requests as stale.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### days-before-close
|
|
||||||
|
|
||||||
The idle number of days before closing the stale issues or the stale pull requests (due to the stale label).
|
|
||||||
The issues or the pull requests will be closed if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
|
||||||
Since adding the stale label will alter the last update date, we can calculate the number of days from this date.
|
|
||||||
|
|
||||||
If set to a negative number like `-1`, the issues or the pull requests will never be closed automatically.
|
|
||||||
|
|
||||||
The label used to stale is defined by these two options:
|
|
||||||
|
|
||||||
- [stale-issue-label](#stale-issue-label)
|
|
||||||
- [stale-pr-label](#stale-pr-label)
|
|
||||||
|
|
||||||
Default value: `7`
|
|
||||||
|
|
||||||
#### days-before-issue-close
|
|
||||||
|
|
||||||
Override [days-before-close](#days-before-close) but only for the idle number of days before closing the stale issues.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### days-before-pr-close
|
|
||||||
|
|
||||||
Override [days-before-close](#days-before-close) but only for the idle number of days before closing the stale pull requests.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### stale-issue-message
|
|
||||||
|
|
||||||
The message that will be added as a comment to the issues when the stale workflow marks it automatically as stale with a label.
|
|
||||||
|
|
||||||
You can skip the comment sending by passing an empty string.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `issues: write`
|
|
||||||
|
|
||||||
#### stale-pr-message
|
|
||||||
|
|
||||||
The message that will be added as a comment to the pull requests when the stale workflow marks it automatically as stale with a label.
|
|
||||||
|
|
||||||
You can skip the comment sending by passing an empty string.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `pull-requests: write`
|
|
||||||
|
|
||||||
#### close-issue-message
|
|
||||||
|
|
||||||
The message that will be added as a comment to the issues when the stale workflow closes it automatically after being stale for too long.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `issues: write`
|
|
||||||
|
|
||||||
#### close-pr-message
|
|
||||||
|
|
||||||
The message that will be added as a comment to the pull requests when the stale workflow closes it automatically after being stale for too long.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `pull-requests: write`
|
|
||||||
|
|
||||||
#### stale-issue-label
|
|
||||||
|
|
||||||
The label that will be added to the issues when automatically marked as stale.
|
|
||||||
If you wish to speedup the stale workflow for the issues, you can add this label manually to mark as stale.
|
|
||||||
|
|
||||||
Default value: `Stale`
|
|
||||||
Required Permission: `issues: write`
|
|
||||||
|
|
||||||
#### close-issue-label
|
|
||||||
|
|
||||||
The label that will be added to the issues when closed automatically.
|
|
||||||
It will be automatically removed if the issues are no longer closed nor locked.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `issues: write`
|
|
||||||
|
|
||||||
#### stale-pr-label
|
|
||||||
|
|
||||||
The label that will be added to the pull requests when automatically marked as stale.
|
|
||||||
If you wish to speedup the stale workflow for the pull requests, you can add this label manually to mark as stale.
|
|
||||||
|
|
||||||
Default value: `Stale`
|
|
||||||
Required Permission: `pull-requests: write`
|
|
||||||
|
|
||||||
#### close-pr-label
|
|
||||||
|
|
||||||
The label that will be added to the pull requests when closed automatically.
|
|
||||||
It will be automatically removed if the pull requests are no longer closed nor locked.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `pull-requests: write`
|
|
||||||
|
|
||||||
#### exempt-issue-labels
|
|
||||||
|
|
||||||
The label(s) that can exempt to automatically mark as stale the issues.
|
|
||||||
It can be a comma separated list of labels (e.g: `question,bug`).
|
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### exempt-pr-labels
|
|
||||||
|
|
||||||
The label(s) that can exempt to automatically mark as stale the pull requests.
|
|
||||||
It can be a comma separated list of labels (e.g: `need-help,WIP`).
|
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### only-labels
|
|
||||||
|
|
||||||
An allow-list of label(s) to only process the issues or the pull requests that contain all these label(s).
|
|
||||||
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
|
||||||
|
|
||||||
If you wish to only check that the issues or the pull requests contain one of these label(s), use instead [any-of-labels](#any-of-labels).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### only-issue-labels
|
|
||||||
|
|
||||||
Override [only-labels](#only-labels) but only to process the issues that contain all these label(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### only-pr-labels
|
|
||||||
|
|
||||||
Override [only-labels](#only-labels) but only to process the pull requests that contain all these label(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### any-of-labels
|
|
||||||
|
|
||||||
An allow-list of label(s) to only process the issues or the pull requests that contain one of these label(s).
|
|
||||||
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
|
||||||
|
|
||||||
If you wish to only check that the issues or the pull requests contain all these label(s), use instead [only-labels](#only-labels).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### any-of-issue-labels
|
|
||||||
|
|
||||||
Override [any-of-labels](#any-of-labels) but only to process the issues that contain one of these label(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### any-of-pr-labels
|
|
||||||
|
|
||||||
Override [any-of-labels](#any-of-labels) but only to process the pull requests that contain one of these label(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### operations-per-run
|
#### operations-per-run
|
||||||
|
|
||||||
_Context:_
|
_Context:_
|
||||||
@ -320,26 +112,6 @@ Only the [actor](#repo-token) and the batch of issues (100 per batch) will consu
|
|||||||
|
|
||||||
Default value: `30`
|
Default value: `30`
|
||||||
|
|
||||||
#### remove-stale-when-updated
|
|
||||||
|
|
||||||
Automatically remove the stale label when the issues or the pull requests are updated (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) or commented.
|
|
||||||
|
|
||||||
Default value: `true`
|
|
||||||
Required Permission: `issues: write` and `pull-requests: write`
|
|
||||||
|
|
||||||
#### remove-issue-stale-when-updated
|
|
||||||
|
|
||||||
Override [remove-stale-when-updated](#remove-stale-when-updated) but only to automatically remove the stale label when the issues are updated (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) or commented.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
Required Permission: `issues: write`
|
|
||||||
|
|
||||||
#### remove-pr-stale-when-updated
|
|
||||||
|
|
||||||
Override [remove-stale-when-updated](#remove-stale-when-updated) but only to automatically remove the stale label when the pull requests are updated (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) or commented.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### labels-to-add-when-unstale
|
#### labels-to-add-when-unstale
|
||||||
|
|
||||||
A comma delimited list of labels to add when a stale issue or pull request receives activity and has the [stale-issue-label](#stale-issue-label) or [stale-pr-label](#stale-pr-label) removed from it.
|
A comma delimited list of labels to add when a stale issue or pull request receives activity and has the [stale-issue-label](#stale-issue-label) or [stale-pr-label](#stale-pr-label) removed from it.
|
||||||
@ -391,87 +163,309 @@ If set to `true`, the stale workflow will automatically delete the GitHub branch
|
|||||||
Default value: `false`
|
Default value: `false`
|
||||||
Required Permission: `pull-requests: write`
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
#### exempt-milestones
|
#### enable-statistics
|
||||||
|
|
||||||
A white-list of milestone(s) to only process the issues or the pull requests that does not contain one of these milestone(s).
|
Collects and display statistics at the end of the stale workflow logs to get a summary of what happened during the run.
|
||||||
|
This option is only useful if the debug output secret `ACTIONS_STEP_DEBUG` is set to `true` in your repository to display the logs.
|
||||||
|
|
||||||
|
Default value: `true`
|
||||||
|
|
||||||
|
#### days-before-issue-stale
|
||||||
|
|
||||||
|
The idle number of days before marking the issues as stale (by adding a label).
|
||||||
|
The issues will be marked as stale if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
||||||
|
It means that any updates made, or any comments added to the issues will restart the counter of days before marking as stale.
|
||||||
|
However, if you wish to ignore this behaviour so that the creation date (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`) only matters, you can disable the [ignore-issue-updates](#ignore-issue-updates) option.
|
||||||
|
|
||||||
|
If set to a negative number like `-1`, no issues will be marked as stale automatically.
|
||||||
|
In that case, you can still add the stale label manually to mark as stale.
|
||||||
|
|
||||||
|
The label used to stale is defined by this option: [stale-pr-label](#stale-pr-label)
|
||||||
|
|
||||||
|
A comment can also be added to notify about the stale and is defined by this option: [stale-pr-message](#stale-pr-message)
|
||||||
|
|
||||||
|
You can fine tune which issues should be marked as stale based on the milestones, the assignees, the creation date and the missing/present labels from these options:
|
||||||
|
|
||||||
|
- [exempt-issue-labels](#exempt-issue-labels)
|
||||||
|
- [only-issue-labels](#only-issue-labels)
|
||||||
|
- [any-of-issue-labels](#any-of-issue-labels)
|
||||||
|
- [start-date](#start-date)
|
||||||
|
- [exempt-issue-milestones](#exempt-issue-milestones)
|
||||||
|
- [exempt-all-issue-milestones](#exempt-all-issue-milestones)
|
||||||
|
- [exempt-issue-assignees](#exempt-issue-assignees)
|
||||||
|
- [exempt-all-issue-assignees](#exempt-all-issue-assignees)
|
||||||
|
- [ignore-issue-updates](#ignore-issue-updates)
|
||||||
|
|
||||||
|
Default value: `60`
|
||||||
|
|
||||||
|
#### days-before-issue-close
|
||||||
|
|
||||||
|
The idle number of days before closing the stale issues (due to the stale label).
|
||||||
|
The issues will be closed if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
||||||
|
Since adding the stale label will alter the last update date, we can calculate the number of days from this date.
|
||||||
|
|
||||||
|
If set to a negative number like `-1`, the issues will never be closed automatically.
|
||||||
|
|
||||||
|
The label used to stale is defined by this option: [stale-issue-label](#stale-issue-label)
|
||||||
|
|
||||||
|
Default value: `7`
|
||||||
|
|
||||||
|
#### stale-issue-message
|
||||||
|
|
||||||
|
The message that will be added as a comment to the issues when the stale workflow marks it automatically as stale with a label.
|
||||||
|
|
||||||
|
You can skip the comment sending by passing an empty string.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `issues: write`
|
||||||
|
|
||||||
|
#### close-issue-message
|
||||||
|
|
||||||
|
The message that will be added as a comment to the issues when the stale workflow closes it automatically after being stale for too long.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `issues: write`
|
||||||
|
|
||||||
|
#### stale-issue-label
|
||||||
|
|
||||||
|
The label that will be added to the issues when automatically marked as stale.
|
||||||
|
If you wish to speedup the stale workflow for the issues, you can add this label manually to mark as stale.
|
||||||
|
|
||||||
|
Default value: `Stale`
|
||||||
|
Required Permission: `issues: write`
|
||||||
|
|
||||||
|
#### close-issue-label
|
||||||
|
|
||||||
|
The label that will be added to the issues when closed automatically.
|
||||||
|
It will be automatically removed if the issues are no longer closed nor locked.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `issues: write`
|
||||||
|
|
||||||
|
#### exempt-issue-labels
|
||||||
|
|
||||||
|
The label(s) that can exempt to automatically mark as stale the issues.
|
||||||
|
It can be a comma separated list of labels (e.g: `question,bug`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### only-issue-labels
|
||||||
|
|
||||||
|
An allow-list of label(s) to only process the issues that contain all these label(s).
|
||||||
|
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
If you wish to only check that the issues contain one of these label(s), use instead [any-of-issue-labels](#any-of-issue-labels).
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### any-of-issue-labels
|
||||||
|
|
||||||
|
An allow-list of label(s) to only process the issues that contain one of these label(s).
|
||||||
|
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
If you wish to only check that the issues or the pull requests contain all these label(s), use instead [only-issue-labels](#only-issue-labels).
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### remove-issue-stale-when-updated
|
||||||
|
|
||||||
|
Automatically remove the stale label when the issues are updated (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) or commented.
|
||||||
|
|
||||||
|
Default value: `true`
|
||||||
|
Required Permission: `issues: write`
|
||||||
|
|
||||||
|
#### exempt-issue-milestones
|
||||||
|
|
||||||
|
A white-list of milestone(s) to only process the issues that does not contain one of these milestone(s).
|
||||||
It can be a comma separated list of milestones (e.g: `V1,next`).
|
It can be a comma separated list of milestones (e.g: `V1,next`).
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
Default value: unset
|
Default value: unset
|
||||||
|
|
||||||
#### exempt-issue-milestones
|
#### exempt-all-issue-milestones
|
||||||
|
|
||||||
Override [exempt-milestones](#exempt-milestones) but only to process the issues that does not contain one of these milestone(s).
|
If set to `true`, the issues with a milestone will not be marked as stale automatically.
|
||||||
|
|
||||||
Default value: unset
|
Priority over [exempt-issue-milestones](#exempt-issue-milestones).
|
||||||
|
|
||||||
#### exempt-pr-milestones
|
|
||||||
|
|
||||||
Override [exempt-milestones](#exempt-milestones) but only to process the pull requests that does not contain one of these milestone(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### exempt-all-milestones
|
|
||||||
|
|
||||||
If set to `true`, the issues or the pull requests with a milestone will not be marked as stale automatically.
|
|
||||||
|
|
||||||
Priority over [exempt-milestones](#exempt-milestones).
|
|
||||||
|
|
||||||
Default value: `false`
|
Default value: `false`
|
||||||
|
|
||||||
#### exempt-all-issue-milestones
|
#### exempt-issue-assignees
|
||||||
|
|
||||||
Override [exempt-all-milestones](#exempt-all-milestones) but only to exempt the issues with a milestone to be marked as stale automatically.
|
An allow-list of assignee(s) to only process the issues that does not contain one of these assignee(s).
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### exempt-all-pr-milestones
|
|
||||||
|
|
||||||
Override [exempt-all-milestones](#exempt-all-milestones) but only to exempt the pull requests with a milestone to be marked as stale automatically.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### exempt-assignees
|
|
||||||
|
|
||||||
An allow-list of assignee(s) to only process the issues or the pull requests that does not contain one of these assignee(s).
|
|
||||||
It can be a comma separated list of assignees (e.g: `marco,polo`).
|
It can be a comma separated list of assignees (e.g: `marco,polo`).
|
||||||
|
|
||||||
If unset (or an empty string), this option will not alter the stale workflow.
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
Default value: unset
|
Default value: unset
|
||||||
|
|
||||||
#### exempt-issue-assignees
|
#### exempt-all-issue-assignees
|
||||||
|
|
||||||
Override [exempt-assignees](#exempt-assignees) but only to process the issues that does not contain one of these assignee(s).
|
If set to `true`, the issues with an assignee will not be marked as stale automatically.
|
||||||
|
|
||||||
Default value: unset
|
Priority over [exempt-issue-assignees](#exempt-issue-assignees).
|
||||||
|
|
||||||
#### exempt-pr-assignees
|
|
||||||
|
|
||||||
Override [exempt-assignees](#exempt-assignees) but only to process the pull requests that does not contain one of these assignee(s).
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### exempt-all-assignees
|
|
||||||
|
|
||||||
If set to `true`, the issues or the pull requests with an assignee will not be marked as stale automatically.
|
|
||||||
|
|
||||||
Priority over [exempt-assignees](#exempt-assignees).
|
|
||||||
|
|
||||||
Default value: `false`
|
Default value: `false`
|
||||||
|
|
||||||
#### exempt-all-issue-assignees
|
#### ignore-issue-updates
|
||||||
|
|
||||||
Override [exempt-all-assignees](#exempt-all-assignees) but only to exempt the issues with an assignee to be marked as stale automatically.
|
The option [days-before-issue-stale](#days-before-issue-stale) will define the number of days before considering the issues or the pull requests as stale.
|
||||||
|
In most cases, the purpose of this action is to only stale when necessary so if any update occurs or if a comment is added to them, the counter will restart.
|
||||||
|
Nonetheless, if you don't care about this, and you prefer to stick to this number of days no matter the update, you can enable this option.
|
||||||
|
Instead of comparing the number of days based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`, it will be based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`.
|
||||||
|
|
||||||
|
Default value: `false`
|
||||||
|
|
||||||
|
#### days-before-pr-stale
|
||||||
|
|
||||||
|
The idle number of days before marking the pull requests as stale (by adding a label).
|
||||||
|
The pull requests will be marked as stale if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
||||||
|
It means that any updates made, or any comments added to the pull requests will restart the counter of days before marking as stale.
|
||||||
|
However, if you wish to ignore this behaviour so that the creation date (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`) only matters, you can disable the [ignore-pr-updates](#ignore-pr-updates) option.
|
||||||
|
|
||||||
|
If set to a negative number like `-1`, no pull requests will be marked as stale automatically.
|
||||||
|
In that case, you can still add the stale label manually to mark as stale.
|
||||||
|
|
||||||
|
The label used to stale is defined by this option: [stale-pr-label](#stale-pr-label)
|
||||||
|
|
||||||
|
A comment can also be added to notify about the stale and is defined by this option: [stale-pr-message](#stale-pr-message)
|
||||||
|
|
||||||
|
You can fine tune which pull requests should be marked as stale based on the milestones, the assignees, the creation date and the missing/present labels from these options:
|
||||||
|
|
||||||
|
- [exempt-pr-labels](#exempt-pr-labels)
|
||||||
|
- [only-pr-labels](#only-pr-labels)
|
||||||
|
- [any-of-pr-labels](#any-of-pr-labels)
|
||||||
|
- [start-date](#start-date)
|
||||||
|
- [exempt-pr-milestones](#exempt-pr-milestones)
|
||||||
|
- [exempt-all-pr-milestones](#exempt-all-pr-milestones)
|
||||||
|
- [exempt-pr-assignees](#exempt-pr-assignees)
|
||||||
|
- [exempt-all-pr-assignees](#exempt-all-pr-assignees)
|
||||||
|
- [ignore-pr-updates](#ignore-pr-updates)
|
||||||
|
|
||||||
|
Default value: `60`
|
||||||
|
|
||||||
|
#### days-before-pr-close
|
||||||
|
|
||||||
|
The idle number of days before closing the stale pull requests (due to the stale label).
|
||||||
|
The pull requests will be closed if the last update (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) is older than the idle number of days.
|
||||||
|
Since adding the stale label will alter the last update date, we can calculate the number of days from this date.
|
||||||
|
|
||||||
|
If set to a negative number like `-1`, the pull requests will never be closed automatically.
|
||||||
|
|
||||||
|
The label used to stale is defined by this option: [stale-pr-label](#stale-pr-label)
|
||||||
|
|
||||||
|
Default value: `7`
|
||||||
|
|
||||||
|
#### stale-pr-message
|
||||||
|
|
||||||
|
The message that will be added as a comment to the pull requests when the stale workflow marks it automatically as stale with a label.
|
||||||
|
|
||||||
|
You can skip the comment sending by passing an empty string.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
|
#### close-pr-message
|
||||||
|
|
||||||
|
The message that will be added as a comment to the pull requests when the stale workflow closes it automatically after being stale for too long.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
|
#### stale-pr-label
|
||||||
|
|
||||||
|
The label that will be added to the pull requests when automatically marked as stale.
|
||||||
|
If you wish to speedup the stale workflow for the pull requests, you can add this label manually to mark as stale.
|
||||||
|
|
||||||
|
Default value: `Stale`
|
||||||
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
|
#### close-pr-label
|
||||||
|
|
||||||
|
The label that will be added to the pull requests when closed automatically.
|
||||||
|
It will be automatically removed if the pull requests are no longer closed nor locked.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
|
#### exempt-pr-labels
|
||||||
|
|
||||||
|
The label(s) that can exempt to automatically mark as stale the pull requests.
|
||||||
|
It can be a comma separated list of labels (e.g: `need-help,WIP`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### only-pr-labels
|
||||||
|
|
||||||
|
An allow-list of label(s) to only process the pull requests that contain all these label(s).
|
||||||
|
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
If you wish to only check that the pull requests contain one of these label(s), use instead [any-of-pr-labels](#any-of-pr-labels).
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### any-of-pr-labels
|
||||||
|
|
||||||
|
An allow-list of label(s) to only process the pull requests that contain one of these label(s).
|
||||||
|
It can be a comma separated list of labels (e.g: `answered,needs-rebase`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
If you wish to only check that the issues or the pull requests contain all these label(s), use instead [only-pr-labels](#only-pr-labels).
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### remove-pr-stale-when-updated
|
||||||
|
|
||||||
|
Automatically remove the stale label when the pull requests are updated (based on [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`) or commented.
|
||||||
|
|
||||||
|
Default value: `true`
|
||||||
|
Required Permission: `pull-requests: write`
|
||||||
|
|
||||||
|
#### exempt-pr-milestones
|
||||||
|
|
||||||
|
A white-list of milestone(s) to only process the pull requests that does not contain one of these milestone(s).
|
||||||
|
It can be a comma separated list of milestones (e.g: `V1,next`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
|
Default value: unset
|
||||||
|
|
||||||
|
#### exempt-all-pr-milestones
|
||||||
|
|
||||||
|
If set to `true`, the pull requests with a milestone will not be marked as stale automatically.
|
||||||
|
|
||||||
|
Priority over [exempt-pr-milestones](#exempt-pr-milestones).
|
||||||
|
|
||||||
|
Default value: `false`
|
||||||
|
|
||||||
|
#### exempt-pr-assignees
|
||||||
|
|
||||||
|
An allow-list of assignee(s) to only process the pull requests that does not contain one of these assignee(s).
|
||||||
|
It can be a comma separated list of assignees (e.g: `marco,polo`).
|
||||||
|
|
||||||
|
If unset (or an empty string), this option will not alter the stale workflow.
|
||||||
|
|
||||||
Default value: unset
|
Default value: unset
|
||||||
|
|
||||||
#### exempt-all-pr-assignees
|
#### exempt-all-pr-assignees
|
||||||
|
|
||||||
Override [exempt-all-assignees](#exempt-all-assignees) but only to exempt the pull requests with an assignee to be marked as stale automatically.
|
If set to `true`, the pull requests with an assignee will not be marked as stale automatically.
|
||||||
|
|
||||||
Default value: unset
|
Priority over [exempt-pr-assignees](#exempt-pr-assignees).
|
||||||
|
|
||||||
|
Default value: `false`
|
||||||
|
|
||||||
#### exempt-draft-pr
|
#### exempt-draft-pr
|
||||||
|
|
||||||
@ -481,34 +475,14 @@ If set to `true`, the pull requests currently in draft will not be marked as sta
|
|||||||
Default value: `false`
|
Default value: `false`
|
||||||
Required Permission: `pull-requests: read`
|
Required Permission: `pull-requests: read`
|
||||||
|
|
||||||
#### enable-statistics
|
#### ignore-pr-updates
|
||||||
|
|
||||||
Collects and display statistics at the end of the stale workflow logs to get a summary of what happened during the run.
|
|
||||||
This option is only useful if the debug output secret `ACTIONS_STEP_DEBUG` is set to `true` in your repository to display the logs.
|
|
||||||
|
|
||||||
Default value: `true`
|
|
||||||
|
|
||||||
#### ignore-updates
|
|
||||||
|
|
||||||
The option [days-before-stale](#days-before-stale) will define the number of days before considering the issues or the pull requests as stale.
|
|
||||||
In most cases, the purpose of this action is to only stale when necessary so if any update occurs or if a comment is added to them, the counter will restart.
|
In most cases, the purpose of this action is to only stale when necessary so if any update occurs or if a comment is added to them, the counter will restart.
|
||||||
Nonetheless, if you don't care about this, and you prefer to stick to this number of days no matter the update, you can enable this option.
|
Nonetheless, if you don't care about this, and you prefer to stick to this number of days no matter the update, you can enable this option.
|
||||||
Instead of comparing the number of days based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`, it will be based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`.
|
Instead of comparing the number of days based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `updated_at`, it will be based on the [GitHub issue](https://docs.github.com/en/rest/reference/issues) field `created_at`.
|
||||||
|
|
||||||
Default value: `false`
|
Default value: `false`
|
||||||
|
|
||||||
#### ignore-issue-updates
|
|
||||||
|
|
||||||
Useful to override [ignore-updates](#ignore-updates) but only to ignore the updates for the issues.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
#### ignore-pr-updates
|
|
||||||
|
|
||||||
Useful to override [ignore-updates](#ignore-updates) but only to ignore the updates for the pull requests.
|
|
||||||
|
|
||||||
Default value: unset
|
|
||||||
|
|
||||||
### Usage
|
### Usage
|
||||||
|
|
||||||
See also [action.yml](./action.yml) for a comprehensive list of all the options.
|
See also [action.yml](./action.yml) for a comprehensive list of all the options.
|
||||||
@ -547,7 +521,8 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
stale-issue-message: 'This issue is stale because it has been open 30 days with no activity. Remove stale label or comment or this will be closed in 5 days.'
|
||||||
days-before-stale: 30
|
days-before-stale: 30
|
||||||
days-before-close: 5
|
days-before-issue-close: 5
|
||||||
|
days-before-pr-close: 5
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure different stale timeouts but never close a PR:
|
Configure different stale timeouts but never close a PR:
|
||||||
@ -568,7 +543,7 @@ jobs:
|
|||||||
stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
|
stale-pr-message: 'This PR is stale because it has been open 45 days with no activity. Remove stale label or comment or this will be closed in 10 days.'
|
||||||
close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
|
close-issue-message: 'This issue was closed because it has been stalled for 5 days with no activity.'
|
||||||
days-before-stale: 30
|
days-before-stale: 30
|
||||||
days-before-close: 5
|
days-before-issue-close: 5
|
||||||
days-before-pr-close: -1
|
days-before-pr-close: -1
|
||||||
```
|
```
|
||||||
|
|
||||||
@ -616,7 +591,8 @@ jobs:
|
|||||||
exempt-issue-labels: 'awaiting-approval,work-in-progress'
|
exempt-issue-labels: 'awaiting-approval,work-in-progress'
|
||||||
stale-pr-label: 'no-pr-activity'
|
stale-pr-label: 'no-pr-activity'
|
||||||
exempt-pr-labels: 'awaiting-approval,work-in-progress'
|
exempt-pr-labels: 'awaiting-approval,work-in-progress'
|
||||||
only-labels: 'awaiting-feedback,awaiting-answers'
|
only-issue-labels: 'awaiting-feedback,awaiting-answers'
|
||||||
|
only-pr-labels: 'awaiting-feedback,awaiting-answers'
|
||||||
```
|
```
|
||||||
|
|
||||||
Configure the stale action to only stale issue/PR created after the 18th april 2020:
|
Configure the stale action to only stale issue/PR created after the 18th april 2020:
|
||||||
@ -685,8 +661,9 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v4
|
- uses: actions/stale@v4
|
||||||
with:
|
with:
|
||||||
any-of-labels: 'needs-more-info,needs-demo'
|
any-of-issue-labels: 'needs-more-info,needs-demo'
|
||||||
# You can opt for 'only-labels' instead if your use-case requires all labels
|
any-of-pr-labels: 'needs-more-info,needs-demo'
|
||||||
|
# You can opt for 'only-issue-labels' and 'only-pr-labels' instead if your use-case requires all labels
|
||||||
# to be present in the issue/PR
|
# to be present in the issue/PR
|
||||||
```
|
```
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,10 +8,8 @@ interface ITestData {
|
|||||||
id: number;
|
id: number;
|
||||||
isPullRequest: boolean;
|
isPullRequest: boolean;
|
||||||
assignees: string[];
|
assignees: string[];
|
||||||
exemptAllAssignees: boolean;
|
exemptAllIssueAssignees: boolean;
|
||||||
exemptAllIssueAssignees: boolean | undefined;
|
exemptAllPrAssignees: boolean;
|
||||||
exemptAllPrAssignees: boolean | undefined;
|
|
||||||
exemptAssignees: string;
|
|
||||||
exemptIssueAssignees: string;
|
exemptIssueAssignees: string;
|
||||||
exemptPrAssignees: string;
|
exemptPrAssignees: string;
|
||||||
shouldStale: boolean;
|
shouldStale: boolean;
|
||||||
@ -59,337 +57,333 @@ describe('assignees options', (): void => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
describe.each`
|
describe.each`
|
||||||
id | isPullRequest | assignees | exemptAllAssignees | exemptAllIssueAssignees | exemptAllPrAssignees | exemptAssignees | exemptIssueAssignees | exemptPrAssignees | shouldStale | description
|
id | isPullRequest | assignees | exemptAllIssueAssignees | exemptAllPrAssignees | exemptIssueAssignees | exemptPrAssignees | shouldStale | description
|
||||||
${100} | ${false} | ${[]} | ${false} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee'}
|
${100} | ${false} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee'}
|
||||||
${101} | ${false} | ${[]} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllAssignees is enabled'}
|
${101} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllAssignees is enabled'}
|
||||||
${102} | ${false} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllIssueAssignees is enabled'}
|
${102} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllIssueAssignees is enabled'}
|
||||||
${103} | ${false} | ${[]} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllPrAssignees is enabled'}
|
${103} | ${false} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and only exemptAllPrAssignees is enabled'}
|
||||||
${104} | ${false} | ${[]} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
${104} | ${false} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
||||||
${105} | ${false} | ${[]} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
${105} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
||||||
${106} | ${false} | ${[]} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
${106} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
||||||
${107} | ${false} | ${[]} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
${107} | ${false} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
||||||
${108} | ${false} | ${[]} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
${108} | ${false} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
||||||
${109} | ${false} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
${109} | ${false} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the issue does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
||||||
${200} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${200} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${201} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
${201} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
||||||
${202} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllAssignees is enabled'}
|
${202} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllAssignees is enabled'}
|
||||||
${203} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllIssueAssignees is enabled'}
|
${203} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and only exemptAllIssueAssignees is enabled'}
|
||||||
${204} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and only exemptAllPrAssignees is enabled'}
|
${204} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and only exemptAllPrAssignees is enabled'}
|
||||||
${205} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
${205} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
||||||
${206} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
${206} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
||||||
${207} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
${207} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
||||||
${208} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
${208} | ${false} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
||||||
${209} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
${209} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
||||||
${210} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
${210} | ${false} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
||||||
${211} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${211} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${212} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
${212} | ${false} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
||||||
${213} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${213} | ${false} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${300} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${300} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${301} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${301} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${302} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'}
|
${302} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${303} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${303} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${304} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${304} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${305} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'}
|
${305} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${306} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${306} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${307} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${307} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${308} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${308} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${309} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'}
|
${309} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${310} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${310} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${311} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${311} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${312} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${312} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${313} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${313} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${400} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${400} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${401} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${401} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${402} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'}
|
${402} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${403} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${403} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${404} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${404} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${405} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'}
|
${405} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${406} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${406} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${407} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${407} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${408} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${408} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${409} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'}
|
${409} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${410} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${410} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${411} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${411} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${412} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${412} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${413} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${413} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${500} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${500} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${501} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${501} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${502} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${502} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${503} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${503} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${504} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${504} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${505} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${505} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${506} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${506} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${507} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${507} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${508} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${508} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${509} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${509} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${510} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${510} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${511} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${511} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${512} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${512} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${513} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${513} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${600} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${600} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${601} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${601} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${602} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${602} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${603} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${603} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${604} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${604} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${605} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${605} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${606} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${606} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${607} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${607} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${608} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${608} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${609} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${609} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${610} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${610} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${611} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${611} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${612} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${612} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${613} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${613} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${700} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${700} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${701} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${701} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${702} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${702} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${703} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${703} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${704} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${704} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${705} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${705} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${706} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${706} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${707} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${707} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${708} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${708} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${709} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${709} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${710} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${710} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${711} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${711} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${712} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${712} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${713} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${713} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${800} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${800} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${801} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${801} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${802} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${802} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${803} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${803} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${804} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${804} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${805} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${805} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${806} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${806} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${807} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${807} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${808} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${808} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${809} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${809} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${810} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${810} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${811} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${811} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${812} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${812} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${813} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${813} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${900} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${900} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${901} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${901} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${902} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${902} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${903} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${903} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${904} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${904} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${905} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${905} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${906} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${906} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${907} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${907} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${908} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${908} | ${false} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${909} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${909} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${910} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${910} | ${false} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${911} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${911} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${912} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${912} | ${false} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${913} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${913} | ${false} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${true} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1000} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1000} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1001} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1001} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1002} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1002} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${1003} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1003} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${1004} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1004} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${1005} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1005} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1006} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1006} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1007} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1007} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${1008} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1008} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${1009} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1009} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1010} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1010} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1011} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1011} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1012} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1012} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1013} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${1013} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1100} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1100} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1101} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1101} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1102} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1102} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled'}
|
||||||
${1103} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1103} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${1104} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1104} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${1105} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1105} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1106} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1106} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1107} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1107} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${1108} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1108} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${1109} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1109} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1110} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1110} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1111} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1111} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1112} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1112} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1113} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${1113} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1200} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1200} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1201} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1201} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1202} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1202} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1203} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1203} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1204} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1204} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1205} | ${false} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1205} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1206} | ${false} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1206} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1207} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1207} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1208} | ${false} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1208} | ${false} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1209} | ${false} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1209} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1210} | ${false} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1210} | ${false} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1211} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1211} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1212} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1212} | ${false} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${1213} | ${false} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${1213} | ${false} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the issue has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${1300} | ${true} | ${[]} | ${false} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee'}
|
${1300} | ${true} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee'}
|
||||||
${1301} | ${true} | ${[]} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllAssignees is enabled'}
|
${1301} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllAssignees is enabled'}
|
||||||
${1302} | ${true} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllIssueAssignees is enabled'}
|
${1302} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllIssueAssignees is enabled'}
|
||||||
${1303} | ${true} | ${[]} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllPrAssignees is enabled'}
|
${1303} | ${true} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and only exemptAllPrAssignees is enabled'}
|
||||||
${1304} | ${true} | ${[]} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
${1304} | ${true} | ${[]} | ${false} | ${true} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
||||||
${1305} | ${true} | ${[]} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
${1305} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
||||||
${1306} | ${true} | ${[]} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
${1306} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
||||||
${1307} | ${true} | ${[]} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
${1307} | ${true} | ${[]} | ${true} | ${true} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
||||||
${1308} | ${true} | ${[]} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
${1308} | ${true} | ${[]} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
||||||
${1309} | ${true} | ${[]} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
${1309} | ${true} | ${[]} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request does not have an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
||||||
${1400} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${1400} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${1401} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
${1401} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
||||||
${1402} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllAssignees is enabled'}
|
${1402} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllAssignees is enabled'}
|
||||||
${1403} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and only exemptAllIssueAssignees is enabled'}
|
${1403} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and only exemptAllIssueAssignees is enabled'}
|
||||||
${1404} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllPrAssignees is enabled'}
|
${1404} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and only exemptAllPrAssignees is enabled'}
|
||||||
${1405} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
${1405} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is disabled'}
|
||||||
${1406} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
${1406} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllIssueAssignees is enabled'}
|
||||||
${1407} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
${1407} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is disabled'}
|
||||||
${1408} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
${1408} | ${true} | ${['assignee']} | ${true} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAllPrAssignees is enabled'}
|
||||||
${1409} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
${1409} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is disabled'}
|
||||||
${1410} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
${1410} | ${true} | ${['assignee']} | ${true} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllIssueAssignees is enabled'}
|
||||||
${1411} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${1411} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${1412} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${''} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
${1412} | ${true} | ${['assignee']} | ${false} | ${true} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is enabled'}
|
||||||
${1413} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${''} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
${1413} | ${true} | ${['assignee']} | ${false} | ${false} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled and exemptAllPrAssignees is disabled'}
|
||||||
${1500} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${1500} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1501} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${1501} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1502} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has a different assignee'}
|
${1502} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${1503} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${1503} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${1504} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${1504} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${1505} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'}
|
${1505} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1506} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${1506} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1507} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${1507} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${1508} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has a different assignee'}
|
${1508} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${1509} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has a different assignee'}
|
${1509} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1510} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has a different assignee'}
|
${1510} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1511} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${1511} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1513} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has a different assignee'}
|
${1513} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1600} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${1600} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1601} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${1601} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1602} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees has the same assignee'}
|
${1602} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${1603} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${1603} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${1604} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${1604} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${1605} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'}
|
${1605} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1606} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${1606} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1607} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${1607} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${1608} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${1608} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${1609} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees has the same assignee'}
|
${1609} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${1610} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees has the same assignee'}
|
${1610} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${1611} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${1611} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1612} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees has the same assignee'}
|
${1612} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${1613} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees has the same assignee'}
|
${1613} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${1701} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1701} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1702} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1702} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1703} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1703} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1704} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1704} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1705} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1705} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1706} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1706} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1707} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1707} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1708} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1708} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1709} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1709} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1710} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1710} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1711} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'bad'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptIssueAssignees has a different assignee'}
|
${1711} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has a different assignee'}
|
||||||
${1800} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1800} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1801} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1801} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1802} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1802} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1803} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1803} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1804} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1804} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1805} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1805} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1806} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1806} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1807} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1807} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1808} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1808} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1809} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1809} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1810} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${'assignee'} | ${''} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptIssueAssignees has the same assignee'}
|
${1810} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptIssueAssignees has the same assignee'}
|
||||||
${1900} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1900} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1901} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1901} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1902} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1902} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1903} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1903} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1904} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1904} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${1905} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1905} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1906} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1906} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${1907} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1907} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1908} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1908} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${1909} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1909} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1910} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1910} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has a different assignee'}
|
||||||
${1911} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptAssignees and exemptPrAssignees has a different assignee'}
|
${1911} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has a different assignee'}
|
||||||
${2000} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2000} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${2001} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2001} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${2002} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2002} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${2003} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2003} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2004} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2004} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2005} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2005} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${2006} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2006} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${2007} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2007} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2008} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2008} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2009} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2009} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2010} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'bad'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has a different assignee and exemptPrAssignees has the same assignee'}
|
${2010} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2100} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2100} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2101} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2101} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${2102} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2102} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${2103} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2103} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${2104} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2104} | ${true} | ${['assignee']} | ${false} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2105} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2105} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2106} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2106} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${2107} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2107} | ${true} | ${['assignee']} | ${true} | ${true} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${2108} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2108} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2109} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2109} | ${true} | ${['assignee']} | ${true} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2110} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'bad'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has a different assignee'}
|
${2110} | ${true} | ${['assignee']} | ${false} | ${false} | ${'bad'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2200} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2200} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2201} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2201} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2202} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2202} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${2203} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2203} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${2204} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2204} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${2205} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2205} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2206} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2206} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2207} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2207} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${2208} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2208} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${2209} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2209} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2210} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2210} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2311} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2311} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2312} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2312} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2313} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${'assignee'} | ${''} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptIssueAssignees has the same assignee'}
|
${2313} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2300} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2300} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled'}
|
||||||
${2301} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2301} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2302} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2302} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled'}
|
||||||
${2303} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2303} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled'}
|
||||||
${2304} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2304} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled'}
|
||||||
${2305} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2305} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2306} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2306} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2307} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2307} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled'}
|
||||||
${2308} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2308} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled'}
|
||||||
${2309} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2309} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled'}
|
||||||
${2310} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2310} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'bad'} | ${true} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled'}
|
||||||
${2311} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has a different assignee'}
|
${2311} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'bad'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled'}
|
||||||
${2400} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2400} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${2401} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2401} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2402} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2402} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2403} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2403} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2404} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2404} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2405} | ${true} | ${['assignee']} | ${true} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2405} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${2406} | ${true} | ${['assignee']} | ${true} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2406} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2407} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2407} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${2408} | ${true} | ${['assignee']} | ${true} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2408} | ${true} | ${['assignee']} | ${true} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is enabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2409} | ${true} | ${['assignee']} | ${false} | ${false} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2409} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${2410} | ${true} | ${['assignee']} | ${false} | ${true} | ${undefined} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2410} | ${true} | ${['assignee']} | ${true} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllIssueAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2411} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2411} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
${2412} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${true} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2412} | ${true} | ${['assignee']} | ${false} | ${true} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is enabled and exemptPrAssignees has the same assignee'}
|
||||||
${2413} | ${true} | ${['assignee']} | ${false} | ${undefined} | ${false} | ${'assignee'} | ${''} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled, exemptAssignees has the same assignee and exemptPrAssignees has the same assignee'}
|
${2413} | ${true} | ${['assignee']} | ${false} | ${false} | ${'assignee'} | ${'assignee'} | ${false} | ${'when the pull request has an assignee and exemptAllAssignees is disabled, exemptAllPrAssignees is disabled and exemptPrAssignees has the same assignee'}
|
||||||
`(
|
`(
|
||||||
'$description',
|
'$description',
|
||||||
({
|
({
|
||||||
id,
|
id,
|
||||||
isPullRequest,
|
isPullRequest,
|
||||||
assignees,
|
assignees,
|
||||||
exemptAllAssignees,
|
|
||||||
exemptAllIssueAssignees,
|
exemptAllIssueAssignees,
|
||||||
exemptAllPrAssignees,
|
exemptAllPrAssignees,
|
||||||
exemptAssignees,
|
|
||||||
exemptIssueAssignees,
|
exemptIssueAssignees,
|
||||||
exemptPrAssignees,
|
exemptPrAssignees,
|
||||||
shouldStale
|
shouldStale
|
||||||
}: ITestData): void => {
|
}: ITestData): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
opts.exemptAllAssignees = exemptAllAssignees;
|
|
||||||
opts.exemptAllIssueAssignees = exemptAllIssueAssignees;
|
opts.exemptAllIssueAssignees = exemptAllIssueAssignees;
|
||||||
opts.exemptAllPrAssignees = exemptAllPrAssignees;
|
opts.exemptAllPrAssignees = exemptAllPrAssignees;
|
||||||
opts.exemptAssignees = exemptAssignees;
|
|
||||||
opts.exemptIssueAssignees = exemptIssueAssignees;
|
opts.exemptIssueAssignees = exemptIssueAssignees;
|
||||||
opts.exemptPrAssignees = exemptPrAssignees;
|
opts.exemptPrAssignees = exemptPrAssignees;
|
||||||
setTestIssueList(isPullRequest, assignees, id);
|
setTestIssueList(isPullRequest, assignees, id);
|
||||||
|
@ -6,12 +6,10 @@ export const DefaultProcessorOptions: IIssuesProcessorOptions = Object.freeze({
|
|||||||
stalePrMessage: 'This PR is stale',
|
stalePrMessage: 'This PR is stale',
|
||||||
closeIssueMessage: 'This issue is being closed',
|
closeIssueMessage: 'This issue is being closed',
|
||||||
closePrMessage: 'This PR is being closed',
|
closePrMessage: 'This PR is being closed',
|
||||||
daysBeforeStale: 1,
|
daysBeforeIssueStale: 1,
|
||||||
daysBeforeIssueStale: NaN,
|
daysBeforePrStale: 1,
|
||||||
daysBeforePrStale: NaN,
|
daysBeforeIssueClose: 30,
|
||||||
daysBeforeClose: 30,
|
daysBeforePrClose: 30,
|
||||||
daysBeforeIssueClose: NaN,
|
|
||||||
daysBeforePrClose: NaN,
|
|
||||||
staleIssueLabel: 'Stale',
|
staleIssueLabel: 'Stale',
|
||||||
closeIssueLabel: '',
|
closeIssueLabel: '',
|
||||||
exemptIssueLabels: '',
|
exemptIssueLabels: '',
|
||||||
@ -26,29 +24,24 @@ export const DefaultProcessorOptions: IIssuesProcessorOptions = Object.freeze({
|
|||||||
anyOfPrLabels: '',
|
anyOfPrLabels: '',
|
||||||
operationsPerRun: 100,
|
operationsPerRun: 100,
|
||||||
debugOnly: true,
|
debugOnly: true,
|
||||||
removeStaleWhenUpdated: false,
|
removeIssueStaleWhenUpdated: false,
|
||||||
removeIssueStaleWhenUpdated: undefined,
|
removePrStaleWhenUpdated: false,
|
||||||
removePrStaleWhenUpdated: undefined,
|
|
||||||
ascending: false,
|
ascending: false,
|
||||||
deleteBranch: false,
|
deleteBranch: false,
|
||||||
startDate: '',
|
startDate: '',
|
||||||
exemptMilestones: '',
|
|
||||||
exemptIssueMilestones: '',
|
exemptIssueMilestones: '',
|
||||||
exemptPrMilestones: '',
|
exemptPrMilestones: '',
|
||||||
exemptAllMilestones: false,
|
exemptAllIssueMilestones: false,
|
||||||
exemptAllIssueMilestones: undefined,
|
exemptAllPrMilestones: false,
|
||||||
exemptAllPrMilestones: undefined,
|
|
||||||
exemptAssignees: '',
|
exemptAssignees: '',
|
||||||
exemptIssueAssignees: '',
|
exemptIssueAssignees: '',
|
||||||
exemptPrAssignees: '',
|
exemptPrAssignees: '',
|
||||||
exemptAllAssignees: false,
|
exemptAllIssueAssignees: false,
|
||||||
exemptAllIssueAssignees: undefined,
|
exemptAllPrAssignees: false,
|
||||||
exemptAllPrAssignees: undefined,
|
|
||||||
enableStatistics: true,
|
enableStatistics: true,
|
||||||
labelsToRemoveWhenUnstale: '',
|
labelsToRemoveWhenUnstale: '',
|
||||||
labelsToAddWhenUnstale: '',
|
labelsToAddWhenUnstale: '',
|
||||||
ignoreUpdates: false,
|
ignoreIssueUpdates: false,
|
||||||
ignoreIssueUpdates: undefined,
|
ignorePrUpdates: false,
|
||||||
ignorePrUpdates: undefined,
|
|
||||||
exemptDraftPr: false
|
exemptDraftPr: false
|
||||||
});
|
});
|
||||||
|
@ -9,7 +9,7 @@ import {generateIssue} from './functions/generate-issue';
|
|||||||
test('processing an issue with no label will make it stale and close it, if it is old enough only if days-before-close is set to 0', async () => {
|
test('processing an issue with no label will make it stale and close it, if it is old enough only if days-before-close is set to 0', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0
|
daysBeforeIssueClose: 0
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
||||||
@ -33,7 +33,7 @@ test('processing an issue with no label and a start date as ECMAScript epoch in
|
|||||||
const january2000 = 946681200000;
|
const january2000 = 946681200000;
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2000.toString()
|
startDate: january2000.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -64,7 +64,7 @@ test('processing an issue with no label and a start date as ECMAScript epoch in
|
|||||||
const january2021 = 1609455600000;
|
const january2021 = 1609455600000;
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2021.toString()
|
startDate: january2021.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -95,7 +95,7 @@ test('processing an issue with no label and a start date as ECMAScript epoch in
|
|||||||
const january2000 = 946681200000000;
|
const january2000 = 946681200000000;
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2000.toString()
|
startDate: january2000.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -126,7 +126,7 @@ test('processing an issue with no label and a start date as ECMAScript epoch in
|
|||||||
const january2021 = 1609455600000;
|
const january2021 = 1609455600000;
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2021.toString()
|
startDate: january2021.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -157,7 +157,7 @@ test('processing an issue with no label and a start date as ISO 8601 being befor
|
|||||||
const january2000 = '2000-01-01T00:00:00Z';
|
const january2000 = '2000-01-01T00:00:00Z';
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2000.toString()
|
startDate: january2000.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -188,7 +188,7 @@ test('processing an issue with no label and a start date as ISO 8601 being after
|
|||||||
const january2021 = '2021-01-01T00:00:00Z';
|
const january2021 = '2021-01-01T00:00:00Z';
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2021.toString()
|
startDate: january2021.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -219,7 +219,7 @@ test('processing an issue with no label and a start date as RFC 2822 being befor
|
|||||||
const january2000 = 'January 1, 2000 00:00:00';
|
const january2000 = 'January 1, 2000 00:00:00';
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2000.toString()
|
startDate: january2000.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -250,7 +250,7 @@ test('processing an issue with no label and a start date as RFC 2822 being after
|
|||||||
const january2021 = 'January 1, 2021 00:00:00';
|
const january2021 = 'January 1, 2021 00:00:00';
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
startDate: january2021.toString()
|
startDate: january2021.toString()
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -279,7 +279,6 @@ test('processing an issue with no label and a start date as RFC 2822 being after
|
|||||||
test('processing an issue with no label will make it stale and close it, if it is old enough only if days-before-close is set to > 0 and days-before-issue-close is set to 0', async () => {
|
test('processing an issue with no label will make it stale and close it, if it is old enough only if days-before-close is set to > 0 and days-before-issue-close is set to 0', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 1,
|
|
||||||
daysBeforeIssueClose: 0
|
daysBeforeIssueClose: 0
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -300,33 +299,10 @@ test('processing an issue with no label will make it stale and close it, if it i
|
|||||||
expect(processor.deletedBranchIssues).toHaveLength(0);
|
expect(processor.deletedBranchIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('processing an issue with no label will make it stale and not close it, if it is old enough only if days-before-close is set to > 0 and days-before-issue-close is set to > 0', async () => {
|
|
||||||
const opts: IIssuesProcessorOptions = {
|
|
||||||
...DefaultProcessorOptions,
|
|
||||||
daysBeforeClose: 1,
|
|
||||||
daysBeforeIssueClose: 1
|
|
||||||
};
|
|
||||||
const TestIssueList: Issue[] = [
|
|
||||||
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
|
||||||
];
|
|
||||||
const processor = new IssuesProcessorMock(
|
|
||||||
opts,
|
|
||||||
async p => (p === 1 ? TestIssueList : []),
|
|
||||||
async () => [],
|
|
||||||
async () => new Date().toDateString()
|
|
||||||
);
|
|
||||||
|
|
||||||
// process our fake issue list
|
|
||||||
await processor.processIssues(1);
|
|
||||||
|
|
||||||
expect(processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(processor.closedIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('processing an issue with no label will make it stale and not close it if days-before-close is set to > 0', async () => {
|
test('processing an issue with no label will make it stale and not close it if days-before-close is set to > 0', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 15
|
daysBeforeIssueClose: 15
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
||||||
@ -348,7 +324,6 @@ test('processing an issue with no label will make it stale and not close it if d
|
|||||||
test('processing an issue with no label will make it stale and not close it if days-before-close is set to -1 and days-before-issue-close is set to > 0', async () => {
|
test('processing an issue with no label will make it stale and not close it if days-before-close is set to -1 and days-before-issue-close is set to > 0', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: -1,
|
|
||||||
daysBeforeIssueClose: 15
|
daysBeforeIssueClose: 15
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -372,7 +347,7 @@ test('processing an issue with no label will not make it stale if days-before-st
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
staleIssueMessage: '',
|
staleIssueMessage: '',
|
||||||
daysBeforeStale: -1
|
daysBeforeIssueStale: -1
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
generateIssue(opts, 1, 'An issue with no label', '2020-01-01T17:00:00Z')
|
||||||
@ -395,7 +370,6 @@ test('processing an issue with no label will not make it stale if days-before-st
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
staleIssueMessage: '',
|
staleIssueMessage: '',
|
||||||
daysBeforeStale: -1,
|
|
||||||
daysBeforeIssueStale: -1
|
daysBeforeIssueStale: -1
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -445,7 +419,7 @@ test('processing an issue with no label will make it stale but not close it', as
|
|||||||
test('processing a stale issue will close it', async () => {
|
test('processing a stale issue will close it', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 30
|
daysBeforeIssueClose: 30
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -535,7 +509,7 @@ test('processing a stale issue containing a slash in the label will close it', a
|
|||||||
test('processing a stale issue will close it when days-before-issue-stale override days-before-stale', async () => {
|
test('processing a stale issue will close it when days-before-issue-stale override days-before-stale', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 30,
|
daysBeforeIssueClose: 30,
|
||||||
daysBeforeIssueStale: 30
|
daysBeforeIssueStale: 30
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -566,7 +540,7 @@ test('processing a stale issue will close it when days-before-issue-stale overri
|
|||||||
test('processing a stale PR will close it', async () => {
|
test('processing a stale PR will close it', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 30
|
daysBeforePrClose: 30
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -596,7 +570,6 @@ test('processing a stale PR will close it', async () => {
|
|||||||
test('processing a stale PR will close it when days-before-pr-stale override days-before-stale', async () => {
|
test('processing a stale PR will close it when days-before-pr-stale override days-before-stale', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeClose: 30,
|
|
||||||
daysBeforePrClose: 30
|
daysBeforePrClose: 30
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -625,9 +598,10 @@ test('processing a stale PR will close it when days-before-pr-stale override day
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('processing a stale issue will close it even if configured not to mark as stale', async () => {
|
test('processing a stale issue will close it even if configured not to mark as stale', async () => {
|
||||||
const opts = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: -1,
|
daysBeforeIssueStale: -1,
|
||||||
|
daysBeforePrStale: -1,
|
||||||
staleIssueMessage: ''
|
staleIssueMessage: ''
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -656,10 +630,10 @@ test('processing a stale issue will close it even if configured not to mark as s
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('processing a stale issue will close it even if configured not to mark as stale when days-before-issue-stale override days-before-stale', async () => {
|
test('processing a stale issue will close it even if configured not to mark as stale when days-before-issue-stale override days-before-stale', async () => {
|
||||||
const opts = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 0,
|
|
||||||
daysBeforeIssueStale: -1,
|
daysBeforeIssueStale: -1,
|
||||||
|
daysBeforePrStale: 0,
|
||||||
staleIssueMessage: ''
|
staleIssueMessage: ''
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -688,9 +662,10 @@ test('processing a stale issue will close it even if configured not to mark as s
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('processing a stale PR will close it even if configured not to mark as stale', async () => {
|
test('processing a stale PR will close it even if configured not to mark as stale', async () => {
|
||||||
const opts = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: -1,
|
daysBeforeIssueStale: -1,
|
||||||
|
daysBeforePrStale: -1,
|
||||||
stalePrMessage: ''
|
stalePrMessage: ''
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -719,9 +694,9 @@ test('processing a stale PR will close it even if configured not to mark as stal
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('processing a stale PR will close it even if configured not to mark as stale when days-before-pr-stale override days-before-stale', async () => {
|
test('processing a stale PR will close it even if configured not to mark as stale when days-before-pr-stale override days-before-stale', async () => {
|
||||||
const opts = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 0,
|
daysBeforeIssueStale: 0,
|
||||||
daysBeforePrStale: -1,
|
daysBeforePrStale: -1,
|
||||||
stalePrMessage: ''
|
stalePrMessage: ''
|
||||||
};
|
};
|
||||||
@ -965,7 +940,7 @@ test('stale locked prs will not be closed', async () => {
|
|||||||
|
|
||||||
test('exempt issue labels will not be marked stale', async () => {
|
test('exempt issue labels will not be marked stale', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptIssueLabels = 'Exempt';
|
opts.exemptIssueLabels = 'Exempt';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -994,7 +969,7 @@ test('exempt issue labels will not be marked stale', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('exempt issue labels will not be marked stale (multi issue label with spaces)', async () => {
|
test('exempt issue labels will not be marked stale (multi issue label with spaces)', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptIssueLabels = 'Exempt, Cool, None';
|
opts.exemptIssueLabels = 'Exempt, Cool, None';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1022,7 +997,7 @@ test('exempt issue labels will not be marked stale (multi issue label with space
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('exempt issue labels will not be marked stale (multi issue label)', async () => {
|
test('exempt issue labels will not be marked stale (multi issue label)', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptIssueLabels = 'Exempt,Cool,None';
|
opts.exemptIssueLabels = 'Exempt,Cool,None';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1051,7 +1026,7 @@ test('exempt issue labels will not be marked stale (multi issue label)', async (
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('exempt pr labels will not be marked stale', async () => {
|
test('exempt pr labels will not be marked stale', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptIssueLabels = 'Cool';
|
opts.exemptIssueLabels = 'Cool';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1096,7 +1071,7 @@ test('exempt pr labels will not be marked stale', async () => {
|
|||||||
|
|
||||||
test('exempt issue labels will not be marked stale and will remove the existing stale label', async () => {
|
test('exempt issue labels will not be marked stale and will remove the existing stale label', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptIssueLabels = 'Exempt';
|
opts.exemptIssueLabels = 'Exempt';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1133,8 +1108,9 @@ test('exempt issue labels will not be marked stale and will remove the existing
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale issues should not be closed if days is set to -1', async () => {
|
test('stale issues should not be closed if days is set to -1', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeClose = -1;
|
opts.daysBeforeIssueClose = -1;
|
||||||
|
opts.daysBeforePrClose = -1;
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1179,7 +1155,11 @@ test('stale issues should not be closed if days is set to -1', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale label should be removed if a comment was added to a stale issue', async () => {
|
test('stale label should be removed if a comment was added to a stale issue', async () => {
|
||||||
const opts = {...DefaultProcessorOptions, removeStaleWhenUpdated: true};
|
const opts: IIssuesProcessorOptions = {
|
||||||
|
...DefaultProcessorOptions,
|
||||||
|
removeIssueStaleWhenUpdated: true,
|
||||||
|
removePrStaleWhenUpdated: true
|
||||||
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1216,9 +1196,10 @@ test('stale label should be removed if a comment was added to a stale issue', as
|
|||||||
|
|
||||||
test('when the option "labelsToAddWhenUnstale" is set, the labels should be added when unstale', async () => {
|
test('when the option "labelsToAddWhenUnstale" is set, the labels should be added when unstale', async () => {
|
||||||
expect.assertions(4);
|
expect.assertions(4);
|
||||||
const opts = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
removeStaleWhenUpdated: true,
|
removeIssueStaleWhenUpdated: true,
|
||||||
|
removePrStaleWhenUpdated: true,
|
||||||
labelsToAddWhenUnstale: 'test'
|
labelsToAddWhenUnstale: 'test'
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -1259,7 +1240,11 @@ test('when the option "labelsToAddWhenUnstale" is set, the labels should be adde
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale label should not be removed if a comment was added by the bot (and the issue should be closed)', async () => {
|
test('stale label should not be removed if a comment was added by the bot (and the issue should be closed)', async () => {
|
||||||
const opts = {...DefaultProcessorOptions, removeStaleWhenUpdated: true};
|
const opts: IIssuesProcessorOptions = {
|
||||||
|
...DefaultProcessorOptions,
|
||||||
|
removeIssueStaleWhenUpdated: true,
|
||||||
|
removePrStaleWhenUpdated: true
|
||||||
|
};
|
||||||
github.context.actor = 'abot';
|
github.context.actor = 'abot';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1298,7 +1283,8 @@ test('stale label should not be removed if a comment was added by the bot (and t
|
|||||||
test('stale label containing a space should be removed if a comment was added to a stale issue', async () => {
|
test('stale label containing a space should be removed if a comment was added to a stale issue', async () => {
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
removeStaleWhenUpdated: true,
|
removeIssueStaleWhenUpdated: true,
|
||||||
|
removePrStaleWhenUpdated: true,
|
||||||
staleIssueLabel: 'stat: stale'
|
staleIssueLabel: 'stat: stale'
|
||||||
};
|
};
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -1328,9 +1314,9 @@ test('stale label containing a space should be removed if a comment was added to
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale issues should not be closed until after the closed number of days', async () => {
|
test('stale issues should not be closed until after the closed number of days', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 1; // closes after 6 days
|
opts.daysBeforeIssueClose = 1; // closes after 6 days
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 5);
|
lastUpdate.setDate(lastUpdate.getDate() - 5);
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -1359,9 +1345,9 @@ test('stale issues should not be closed until after the closed number of days',
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale issues should be closed if the closed nubmer of days (additive) is also passed', async () => {
|
test('stale issues should be closed if the closed nubmer of days (additive) is also passed', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 1; // closes after 6 days
|
opts.daysBeforeIssueClose = 1; // closes after 6 days
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 7);
|
lastUpdate.setDate(lastUpdate.getDate() - 7);
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -1391,9 +1377,9 @@ test('stale issues should be closed if the closed nubmer of days (additive) is a
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('stale issues should not be closed until after the closed number of days (long)', async () => {
|
test('stale issues should not be closed until after the closed number of days (long)', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 20; // closes after 25 days
|
opts.daysBeforeIssueClose = 20; // closes after 25 days
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
@ -1422,9 +1408,9 @@ test('stale issues should not be closed until after the closed number of days (l
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('skips stale message on issues when stale-issue-message is empty', async () => {
|
test('skips stale message on issues when stale-issue-message is empty', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 20; // closes after 25 days
|
opts.daysBeforeIssueClose = 20; // closes after 25 days
|
||||||
opts.staleIssueMessage = '';
|
opts.staleIssueMessage = '';
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
||||||
@ -1466,9 +1452,9 @@ test('skips stale message on issues when stale-issue-message is empty', async ()
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('send stale message on issues when stale-issue-message is not empty', async () => {
|
test('send stale message on issues when stale-issue-message is not empty', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 20; // closes after 25 days
|
opts.daysBeforeIssueClose = 20; // closes after 25 days
|
||||||
opts.staleIssueMessage = 'dummy issue message';
|
opts.staleIssueMessage = 'dummy issue message';
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
||||||
@ -1510,9 +1496,9 @@ test('send stale message on issues when stale-issue-message is not empty', async
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('skips stale message on prs when stale-pr-message is empty', async () => {
|
test('skips stale message on prs when stale-pr-message is empty', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 20; // closes after 25 days
|
opts.daysBeforeIssueClose = 20; // closes after 25 days
|
||||||
opts.stalePrMessage = '';
|
opts.stalePrMessage = '';
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
||||||
@ -1554,9 +1540,9 @@ test('skips stale message on prs when stale-pr-message is empty', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('send stale message on prs when stale-pr-message is not empty', async () => {
|
test('send stale message on prs when stale-pr-message is not empty', async () => {
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.daysBeforeStale = 5; // stale after 5 days
|
opts.daysBeforeIssueStale = 5; // stale after 5 days
|
||||||
opts.daysBeforeClose = 20; // closes after 25 days
|
opts.daysBeforeIssueClose = 20; // closes after 25 days
|
||||||
opts.stalePrMessage = 'dummy pr message';
|
opts.stalePrMessage = 'dummy pr message';
|
||||||
const lastUpdate = new Date();
|
const lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
lastUpdate.setDate(lastUpdate.getDate() - 10);
|
||||||
@ -1598,7 +1584,10 @@ test('send stale message on prs when stale-pr-message is not empty', async () =>
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('git branch is deleted when option is enabled', async () => {
|
test('git branch is deleted when option is enabled', async () => {
|
||||||
const opts = {...DefaultProcessorOptions, deleteBranch: true};
|
const opts: IIssuesProcessorOptions = {
|
||||||
|
...DefaultProcessorOptions,
|
||||||
|
deleteBranch: true
|
||||||
|
};
|
||||||
const isPullRequest = true;
|
const isPullRequest = true;
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1627,7 +1616,10 @@ test('git branch is deleted when option is enabled', async () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
test('git branch is not deleted when issue is not pull request', async () => {
|
test('git branch is not deleted when issue is not pull request', async () => {
|
||||||
const opts = {...DefaultProcessorOptions, deleteBranch: true};
|
const opts: IIssuesProcessorOptions = {
|
||||||
|
...DefaultProcessorOptions,
|
||||||
|
deleteBranch: true
|
||||||
|
};
|
||||||
const isPullRequest = false;
|
const isPullRequest = false;
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
@ -1688,8 +1680,8 @@ test('an issue without a milestone will be marked as stale', async () => {
|
|||||||
|
|
||||||
test('an issue without an exempted milestone will be marked as stale', async () => {
|
test('an issue without an exempted milestone will be marked as stale', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptMilestones = 'Milestone1';
|
opts.exemptIssueMilestones = 'Milestone1';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1721,8 +1713,8 @@ test('an issue without an exempted milestone will be marked as stale', async ()
|
|||||||
|
|
||||||
test('an issue with an exempted milestone will not be marked as stale', async () => {
|
test('an issue with an exempted milestone will not be marked as stale', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptMilestones = 'Milestone1';
|
opts.exemptIssueMilestones = 'Milestone1';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1754,8 +1746,8 @@ test('an issue with an exempted milestone will not be marked as stale', async ()
|
|||||||
|
|
||||||
test('an issue with an exempted milestone will not be marked as stale (multi milestones with spaces)', async () => {
|
test('an issue with an exempted milestone will not be marked as stale (multi milestones with spaces)', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptMilestones = 'Milestone1, Milestone2';
|
opts.exemptIssueMilestones = 'Milestone1, Milestone2';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1787,8 +1779,8 @@ test('an issue with an exempted milestone will not be marked as stale (multi mil
|
|||||||
|
|
||||||
test('an issue with an exempted milestone will not be marked as stale (multi milestones without spaces)', async () => {
|
test('an issue with an exempted milestone will not be marked as stale (multi milestones without spaces)', async () => {
|
||||||
expect.assertions(3);
|
expect.assertions(3);
|
||||||
const opts = {...DefaultProcessorOptions};
|
const opts: IIssuesProcessorOptions = {...DefaultProcessorOptions};
|
||||||
opts.exemptMilestones = 'Milestone1,Milestone2';
|
opts.exemptIssueMilestones = 'Milestone1,Milestone2';
|
||||||
const TestIssueList: Issue[] = [
|
const TestIssueList: Issue[] = [
|
||||||
generateIssue(
|
generateIssue(
|
||||||
opts,
|
opts,
|
||||||
@ -1818,113 +1810,10 @@ test('an issue with an exempted milestone will not be marked as stale (multi mil
|
|||||||
expect(processor.removedLabelIssues.length).toStrictEqual(0);
|
expect(processor.removedLabelIssues.length).toStrictEqual(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('an issue with an exempted milestone but without an exempted issue milestone will not be marked as stale', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
const opts = {...DefaultProcessorOptions};
|
|
||||||
opts.exemptMilestones = 'Milestone1';
|
|
||||||
opts.exemptIssueMilestones = '';
|
|
||||||
const TestIssueList: Issue[] = [
|
|
||||||
generateIssue(
|
|
||||||
opts,
|
|
||||||
1,
|
|
||||||
'My first issue',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
false,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
'Milestone1'
|
|
||||||
)
|
|
||||||
];
|
|
||||||
const processor = new IssuesProcessorMock(
|
|
||||||
opts,
|
|
||||||
async p => (p === 1 ? TestIssueList : []),
|
|
||||||
async () => [],
|
|
||||||
async () => new Date().toDateString()
|
|
||||||
);
|
|
||||||
|
|
||||||
// process our fake issue list
|
|
||||||
await processor.processIssues(1);
|
|
||||||
|
|
||||||
expect(processor.staleIssues.length).toStrictEqual(0);
|
|
||||||
expect(processor.closedIssues.length).toStrictEqual(0);
|
|
||||||
expect(processor.removedLabelIssues.length).toStrictEqual(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('an issue with an exempted milestone but with another exempted issue milestone will be marked as stale', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
const opts = {...DefaultProcessorOptions};
|
|
||||||
opts.exemptMilestones = 'Milestone1';
|
|
||||||
opts.exemptIssueMilestones = 'Milestone2';
|
|
||||||
const TestIssueList: Issue[] = [
|
|
||||||
generateIssue(
|
|
||||||
opts,
|
|
||||||
1,
|
|
||||||
'My first issue',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
false,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
'Milestone1'
|
|
||||||
)
|
|
||||||
];
|
|
||||||
const processor = new IssuesProcessorMock(
|
|
||||||
opts,
|
|
||||||
async p => (p === 1 ? TestIssueList : []),
|
|
||||||
async () => [],
|
|
||||||
async () => new Date().toDateString()
|
|
||||||
);
|
|
||||||
|
|
||||||
// process our fake issue list
|
|
||||||
await processor.processIssues(1);
|
|
||||||
|
|
||||||
expect(processor.staleIssues.length).toStrictEqual(1);
|
|
||||||
expect(processor.closedIssues.length).toStrictEqual(0);
|
|
||||||
expect(processor.removedLabelIssues.length).toStrictEqual(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('an issue with an exempted milestone and with an exempted issue milestone will not be marked as stale', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
const opts = {...DefaultProcessorOptions};
|
|
||||||
opts.exemptMilestones = 'Milestone1';
|
|
||||||
opts.exemptIssueMilestones = 'Milestone1';
|
|
||||||
const TestIssueList: Issue[] = [
|
|
||||||
generateIssue(
|
|
||||||
opts,
|
|
||||||
1,
|
|
||||||
'My first issue',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
'2020-01-01T17:00:00Z',
|
|
||||||
false,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
undefined,
|
|
||||||
'Milestone1'
|
|
||||||
)
|
|
||||||
];
|
|
||||||
const processor = new IssuesProcessorMock(
|
|
||||||
opts,
|
|
||||||
async p => (p === 1 ? TestIssueList : []),
|
|
||||||
async () => [],
|
|
||||||
async () => new Date().toDateString()
|
|
||||||
);
|
|
||||||
|
|
||||||
// process our fake issue list
|
|
||||||
await processor.processIssues(1);
|
|
||||||
|
|
||||||
expect(processor.staleIssues.length).toStrictEqual(0);
|
|
||||||
expect(processor.closedIssues.length).toStrictEqual(0);
|
|
||||||
expect(processor.removedLabelIssues.length).toStrictEqual(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('processing an issue opened since 2 days and with the option "daysBeforeIssueStale" at 3 will not make it stale', async () => {
|
test('processing an issue opened since 2 days and with the option "daysBeforeIssueStale" at 3 will not make it stale', async () => {
|
||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
|
||||||
daysBeforeIssueStale: 3
|
daysBeforeIssueStale: 3
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -1950,7 +1839,6 @@ test('processing an issue opened since 2 days and with the option "daysBeforeIss
|
|||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
|
||||||
daysBeforeIssueStale: 2
|
daysBeforeIssueStale: 2
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -1976,7 +1864,6 @@ test('processing an issue opened since 2 days and with the option "daysBeforeIss
|
|||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
|
||||||
daysBeforeIssueStale: 1
|
daysBeforeIssueStale: 1
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -2002,7 +1889,7 @@ test('processing a pull request opened since 2 days and with the option "daysBef
|
|||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
daysBeforeIssueStale: 10,
|
||||||
daysBeforePrStale: 3
|
daysBeforePrStale: 3
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -2035,7 +1922,7 @@ test('processing a pull request opened since 2 days and with the option "daysBef
|
|||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
daysBeforeIssueStale: 10,
|
||||||
daysBeforePrStale: 2
|
daysBeforePrStale: 2
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -2068,7 +1955,7 @@ test('processing a pull request opened since 2 days and with the option "daysBef
|
|||||||
expect.assertions(2);
|
expect.assertions(2);
|
||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
daysBeforeStale: 10,
|
daysBeforeIssueStale: 10,
|
||||||
daysBeforePrStale: 1
|
daysBeforePrStale: 1
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -2207,10 +2094,11 @@ test('processing an issue stale since less than the daysBeforeStale with a stale
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
staleIssueLabel: 'stale-label',
|
staleIssueLabel: 'stale-label',
|
||||||
daysBeforeStale: 30,
|
daysBeforeIssueStale: 30,
|
||||||
daysBeforeClose: 7,
|
daysBeforeIssueClose: 7,
|
||||||
closeIssueMessage: 'close message',
|
closeIssueMessage: 'close message',
|
||||||
removeStaleWhenUpdated: false
|
removeIssueStaleWhenUpdated: false,
|
||||||
|
removePrStaleWhenUpdated: false
|
||||||
};
|
};
|
||||||
const now: Date = new Date();
|
const now: Date = new Date();
|
||||||
const updatedAt: Date = new Date(now.setDate(now.getDate() - 9));
|
const updatedAt: Date = new Date(now.setDate(now.getDate() - 9));
|
||||||
@ -2248,10 +2136,11 @@ test('processing an issue stale since less than the daysBeforeStale without a st
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
staleIssueLabel: 'stale-label',
|
staleIssueLabel: 'stale-label',
|
||||||
daysBeforeStale: 30,
|
daysBeforeIssueStale: 30,
|
||||||
daysBeforeClose: 7,
|
daysBeforeIssueClose: 7,
|
||||||
closeIssueMessage: 'close message',
|
closeIssueMessage: 'close message',
|
||||||
removeStaleWhenUpdated: false
|
removeIssueStaleWhenUpdated: false,
|
||||||
|
removePrStaleWhenUpdated: false
|
||||||
};
|
};
|
||||||
const now: Date = new Date();
|
const now: Date = new Date();
|
||||||
const updatedAt: Date = new Date(now.setDate(now.getDate() - 9));
|
const updatedAt: Date = new Date(now.setDate(now.getDate() - 9));
|
||||||
@ -2288,7 +2177,7 @@ test('processing a pull request to be stale with the "stalePrMessage" option set
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
stalePrMessage: 'This PR is stale',
|
stalePrMessage: 'This PR is stale',
|
||||||
daysBeforeStale: 10,
|
daysBeforeIssueStale: 10,
|
||||||
daysBeforePrStale: 1
|
daysBeforePrStale: 1
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
@ -2323,7 +2212,7 @@ test('processing a pull request to be stale with the "stalePrMessage" option set
|
|||||||
const opts: IIssuesProcessorOptions = {
|
const opts: IIssuesProcessorOptions = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
stalePrMessage: '',
|
stalePrMessage: '',
|
||||||
daysBeforeStale: 10,
|
daysBeforeIssueStale: 10,
|
||||||
daysBeforePrStale: 1
|
daysBeforePrStale: 1
|
||||||
};
|
};
|
||||||
const issueDate = new Date();
|
const issueDate = new Date();
|
||||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,555 +1,263 @@
|
|||||||
import {Issue} from '../src/classes/issue';
|
import {Issue} from '../src/classes/issue';
|
||||||
import {IIssue} from '../src/interfaces/issue';
|
import {IIssue} from '../src/interfaces/issue';
|
||||||
import {IIssuesProcessorOptions} from '../src/interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../src/interfaces/issues-processor-options';
|
||||||
import {ILabel} from '../src/interfaces/label';
|
import {ILabel} from '../src/interfaces/label';
|
||||||
import {IssuesProcessorMock} from './classes/issues-processor-mock';
|
import {IssuesProcessorMock} from './classes/issues-processor-mock';
|
||||||
import {DefaultProcessorOptions} from './constants/default-processor-options';
|
import {DefaultProcessorOptions} from './constants/default-processor-options';
|
||||||
import {generateIssue} from './functions/generate-issue';
|
import {generateIssue} from './functions/generate-issue';
|
||||||
|
|
||||||
let issuesProcessorBuilder: IssuesProcessorBuilder;
|
let issuesProcessorBuilder: IssuesProcessorBuilder;
|
||||||
let issuesProcessor: IssuesProcessorMock;
|
let issuesProcessor: IssuesProcessorMock;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @description
|
* @description
|
||||||
* Assuming there is a comment on the issue
|
* Assuming there is a comment on the issue
|
||||||
*/
|
*/
|
||||||
describe('remove-stale-when-updated option', (): void => {
|
describe('remove-issue-stale-when-updated option', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issuesProcessorBuilder = new IssuesProcessorBuilder();
|
issuesProcessorBuilder = new IssuesProcessorBuilder();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the option "remove-stale-when-updated" is disabled', (): void => {
|
describe('when the option "remove-issue-stale-when-updated" is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issuesProcessorBuilder.keepStaleWhenUpdated();
|
issuesProcessorBuilder.keepIssueStaleWhenUpdated();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
||||||
expect.assertions(1);
|
expect.assertions(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
await issuesProcessor.processIssues();
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
||||||
expect.assertions(1);
|
expect.assertions(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
await issuesProcessor.processIssues();
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the option "remove-stale-when-updated" is enabled', (): void => {
|
describe('when the option "remove-issue-stale-when-updated" is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issuesProcessorBuilder.removeStaleWhenUpdated();
|
issuesProcessorBuilder.removeIssueStaleWhenUpdated();
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
test('should remove the stale label on the issue', async (): Promise<void> => {
|
||||||
expect.assertions(1);
|
expect.assertions(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
await issuesProcessor.processIssues();
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
});
|
});
|
||||||
|
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
||||||
expect.assertions(1);
|
expect.assertions(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
await issuesProcessor.processIssues();
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('remove-issue-stale-when-updated option', (): void => {
|
describe('remove-pr-stale-when-updated option', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issuesProcessorBuilder = new IssuesProcessorBuilder();
|
issuesProcessorBuilder = new IssuesProcessorBuilder();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the option "remove-stale-when-updated" is disabled', (): void => {
|
describe('when the option "remove-pr-stale-when-updated" is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issuesProcessorBuilder.keepStaleWhenUpdated();
|
issuesProcessorBuilder.keepPrStaleWhenUpdated();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the option "remove-issue-stale-when-updated" is unset', (): void => {
|
test('should remove the stale label on the issue', async (): Promise<void> => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
issuesProcessorBuilder.unsetIssueStaleWhenUpdated();
|
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
||||||
});
|
|
||||||
|
await issuesProcessor.processIssues();
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
});
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
||||||
|
expect.assertions(1);
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
||||||
});
|
|
||||||
|
await issuesProcessor.processIssues();
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
});
|
||||||
|
});
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
describe('when the option "remove-pr-stale-when-updated" is enabled', (): void => {
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
beforeEach((): void => {
|
||||||
});
|
issuesProcessorBuilder.removePrStaleWhenUpdated();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the option "remove-issue-stale-when-updated" is disabled', (): void => {
|
test('should remove the stale label on the issue', async (): Promise<void> => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
issuesProcessorBuilder.keepIssueStaleWhenUpdated();
|
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
||||||
});
|
|
||||||
|
await issuesProcessor.processIssues();
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
});
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
||||||
|
expect.assertions(1);
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
||||||
});
|
|
||||||
|
await issuesProcessor.processIssues();
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
});
|
||||||
|
});
|
||||||
await issuesProcessor.processIssues();
|
});
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
class IssuesProcessorBuilder {
|
||||||
});
|
private _options: IIssuesProcessorOptions = {
|
||||||
});
|
...DefaultProcessorOptions,
|
||||||
|
removeIssueStaleWhenUpdated: true,
|
||||||
describe('when the option "remove-issue-stale-when-updated" is enabled', (): void => {
|
removePrStaleWhenUpdated: true
|
||||||
beforeEach((): void => {
|
};
|
||||||
issuesProcessorBuilder.removeIssueStaleWhenUpdated();
|
private _issues: Issue[] = [];
|
||||||
});
|
|
||||||
|
keepIssueStaleWhenUpdated(): IssuesProcessorBuilder {
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
this._options.removeIssueStaleWhenUpdated = false;
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
return this;
|
||||||
|
}
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
removeIssueStaleWhenUpdated(): IssuesProcessorBuilder {
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
this._options.removeIssueStaleWhenUpdated = true;
|
||||||
});
|
|
||||||
|
return this;
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
}
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
keepPrStaleWhenUpdated(): IssuesProcessorBuilder {
|
||||||
|
this._options.removePrStaleWhenUpdated = false;
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
return this;
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
}
|
||||||
});
|
|
||||||
});
|
removePrStaleWhenUpdated(): IssuesProcessorBuilder {
|
||||||
});
|
this._options.removePrStaleWhenUpdated = true;
|
||||||
|
|
||||||
describe('when the option "remove-stale-when-updated" is enabled', (): void => {
|
return this;
|
||||||
beforeEach((): void => {
|
}
|
||||||
issuesProcessorBuilder.removeStaleWhenUpdated();
|
|
||||||
});
|
issuesOrPrs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
||||||
|
this._issues = issues.map(
|
||||||
describe('when the option "remove-issue-stale-when-updated" is unset', (): void => {
|
(issue: Readonly<Partial<IIssue>>, index: Readonly<number>): Issue =>
|
||||||
beforeEach((): void => {
|
generateIssue(
|
||||||
issuesProcessorBuilder.unsetIssueStaleWhenUpdated();
|
this._options,
|
||||||
});
|
index,
|
||||||
|
issue.title ?? 'dummy-title',
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
issue.updated_at ?? new Date().toDateString(),
|
||||||
expect.assertions(1);
|
issue.created_at ?? new Date().toDateString(),
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
!!issue.pull_request,
|
||||||
|
issue.labels ? issue.labels.map(label => label.name) : []
|
||||||
await issuesProcessor.processIssues();
|
)
|
||||||
|
);
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
return this;
|
||||||
|
}
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
issues(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
this.issuesOrPrs(
|
||||||
|
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
||||||
await issuesProcessor.processIssues();
|
return {
|
||||||
|
...issue,
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
pull_request: null
|
||||||
});
|
};
|
||||||
});
|
})
|
||||||
|
);
|
||||||
describe('when the option "remove-issue-stale-when-updated" is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
return this;
|
||||||
issuesProcessorBuilder.keepIssueStaleWhenUpdated();
|
}
|
||||||
});
|
|
||||||
|
staleIssues(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
this.issues(
|
||||||
expect.assertions(1);
|
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
return {
|
||||||
|
...issue,
|
||||||
await issuesProcessor.processIssues();
|
updated_at: '2020-01-01T17:00:00Z',
|
||||||
|
created_at: '2020-01-01T17:00:00Z',
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
labels: issue.labels?.map((label: Readonly<ILabel>): ILabel => {
|
||||||
});
|
return {
|
||||||
|
...label,
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
name: 'Stale'
|
||||||
expect.assertions(1);
|
};
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
}) ?? [
|
||||||
|
{
|
||||||
await issuesProcessor.processIssues();
|
name: 'Stale'
|
||||||
|
}
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
]
|
||||||
});
|
};
|
||||||
});
|
})
|
||||||
|
);
|
||||||
describe('when the option "remove-issue-stale-when-updated" is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
return this;
|
||||||
issuesProcessorBuilder.removeIssueStaleWhenUpdated();
|
}
|
||||||
});
|
|
||||||
|
prs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
this.issuesOrPrs(
|
||||||
expect.assertions(1);
|
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
return {
|
||||||
|
...issue,
|
||||||
await issuesProcessor.processIssues();
|
pull_request: {key: 'value'}
|
||||||
|
};
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
})
|
||||||
});
|
);
|
||||||
|
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
return this;
|
||||||
expect.assertions(1);
|
}
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
stalePrs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
||||||
await issuesProcessor.processIssues();
|
this.prs(
|
||||||
|
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
return {
|
||||||
});
|
...issue,
|
||||||
});
|
updated_at: '2020-01-01T17:00:00Z',
|
||||||
});
|
created_at: '2020-01-01T17:00:00Z',
|
||||||
});
|
labels: issue.labels?.map((label: Readonly<ILabel>): ILabel => {
|
||||||
|
return {
|
||||||
describe('remove-pr-stale-when-updated option', (): void => {
|
...label,
|
||||||
beforeEach((): void => {
|
name: 'Stale'
|
||||||
issuesProcessorBuilder = new IssuesProcessorBuilder();
|
};
|
||||||
});
|
}) ?? [
|
||||||
|
{
|
||||||
describe('when the option "remove-stale-when-updated" is disabled', (): void => {
|
name: 'Stale'
|
||||||
beforeEach((): void => {
|
}
|
||||||
issuesProcessorBuilder.keepStaleWhenUpdated();
|
]
|
||||||
});
|
};
|
||||||
|
})
|
||||||
describe('when the option "remove-pr-stale-when-updated" is unset', (): void => {
|
);
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.unsetPrStaleWhenUpdated();
|
return this;
|
||||||
});
|
}
|
||||||
|
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
build(): IssuesProcessorMock {
|
||||||
expect.assertions(1);
|
return new IssuesProcessorMock(
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
this._options,
|
||||||
|
async p => (p === 1 ? this._issues : []),
|
||||||
await issuesProcessor.processIssues();
|
async () => [
|
||||||
|
{
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
user: {
|
||||||
});
|
login: 'notme',
|
||||||
|
type: 'User'
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
},
|
||||||
expect.assertions(1);
|
body: 'body'
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
}
|
||||||
|
],
|
||||||
await issuesProcessor.processIssues();
|
async () => new Date().toDateString()
|
||||||
|
);
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
}
|
||||||
});
|
}
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-pr-stale-when-updated" is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.keepPrStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-pr-stale-when-updated" is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.removePrStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should not remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-stale-when-updated" is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.removeStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-pr-stale-when-updated" is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.unsetPrStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-pr-stale-when-updated" is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.keepPrStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should not remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the option "remove-pr-stale-when-updated" is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
issuesProcessorBuilder.removePrStaleWhenUpdated();
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the issue', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.staleIssues([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
test('should remove the stale label on the pull request', async (): Promise<void> => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issuesProcessor = issuesProcessorBuilder.stalePrs([{}]).build();
|
|
||||||
|
|
||||||
await issuesProcessor.processIssues();
|
|
||||||
|
|
||||||
expect(issuesProcessor.removedLabelIssues).toHaveLength(1);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
class IssuesProcessorBuilder {
|
|
||||||
private _options: IIssuesProcessorOptions = {
|
|
||||||
...DefaultProcessorOptions
|
|
||||||
};
|
|
||||||
private _issues: Issue[] = [];
|
|
||||||
|
|
||||||
keepStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removeStaleWhenUpdated = false;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
removeStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removeStaleWhenUpdated = true;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsetIssueStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
delete this._options.removeIssueStaleWhenUpdated;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
keepIssueStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removeIssueStaleWhenUpdated = false;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
removeIssueStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removeIssueStaleWhenUpdated = true;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
unsetPrStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
delete this._options.removePrStaleWhenUpdated;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
keepPrStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removePrStaleWhenUpdated = false;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
removePrStaleWhenUpdated(): IssuesProcessorBuilder {
|
|
||||||
this._options.removePrStaleWhenUpdated = true;
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
issuesOrPrs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
|
||||||
this._issues = issues.map(
|
|
||||||
(issue: Readonly<Partial<IIssue>>, index: Readonly<number>): Issue =>
|
|
||||||
generateIssue(
|
|
||||||
this._options,
|
|
||||||
index,
|
|
||||||
issue.title ?? 'dummy-title',
|
|
||||||
issue.updated_at ?? new Date().toDateString(),
|
|
||||||
issue.created_at ?? new Date().toDateString(),
|
|
||||||
!!issue.pull_request,
|
|
||||||
issue.labels ? issue.labels.map(label => label.name) : []
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
issues(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
|
||||||
this.issuesOrPrs(
|
|
||||||
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
|
||||||
return {
|
|
||||||
...issue,
|
|
||||||
pull_request: null
|
|
||||||
};
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
staleIssues(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
|
||||||
this.issues(
|
|
||||||
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
|
||||||
return {
|
|
||||||
...issue,
|
|
||||||
updated_at: '2020-01-01T17:00:00Z',
|
|
||||||
created_at: '2020-01-01T17:00:00Z',
|
|
||||||
labels: issue.labels?.map((label: Readonly<ILabel>): ILabel => {
|
|
||||||
return {
|
|
||||||
...label,
|
|
||||||
name: 'Stale'
|
|
||||||
};
|
|
||||||
}) ?? [
|
|
||||||
{
|
|
||||||
name: 'Stale'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
prs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
|
||||||
this.issuesOrPrs(
|
|
||||||
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
|
||||||
return {
|
|
||||||
...issue,
|
|
||||||
pull_request: {key: 'value'}
|
|
||||||
};
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
stalePrs(issues: Partial<IIssue>[]): IssuesProcessorBuilder {
|
|
||||||
this.prs(
|
|
||||||
issues.map((issue: Readonly<Partial<IIssue>>): Partial<IIssue> => {
|
|
||||||
return {
|
|
||||||
...issue,
|
|
||||||
updated_at: '2020-01-01T17:00:00Z',
|
|
||||||
created_at: '2020-01-01T17:00:00Z',
|
|
||||||
labels: issue.labels?.map((label: Readonly<ILabel>): ILabel => {
|
|
||||||
return {
|
|
||||||
...label,
|
|
||||||
name: 'Stale'
|
|
||||||
};
|
|
||||||
}) ?? [
|
|
||||||
{
|
|
||||||
name: 'Stale'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
};
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
build(): IssuesProcessorMock {
|
|
||||||
return new IssuesProcessorMock(
|
|
||||||
this._options,
|
|
||||||
async p => (p === 1 ? this._issues : []),
|
|
||||||
async () => [
|
|
||||||
{
|
|
||||||
user: {
|
|
||||||
login: 'notme',
|
|
||||||
type: 'User'
|
|
||||||
},
|
|
||||||
body: 'body'
|
|
||||||
}
|
|
||||||
],
|
|
||||||
async () => new Date().toDateString()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -17,9 +17,25 @@ describe('ignore-updates options', (): void => {
|
|||||||
sut.toIssue().staleIn(10).created(20).updated(5);
|
sut.toIssue().staleIn(10).created(20).updated(5);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is disabled', (): void => {
|
describe('when the ignore issue updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.staleOnUpdates();
|
sut.ignoreIssueUpdates();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should stale the issue', async () => {
|
||||||
|
expect.assertions(3);
|
||||||
|
|
||||||
|
await sut.test();
|
||||||
|
|
||||||
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the ignore issue updates option is disabled', (): void => {
|
||||||
|
beforeEach((): void => {
|
||||||
|
sut.staleOnIssueUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not stale the issue', async () => {
|
it('should not stale the issue', async () => {
|
||||||
@ -31,59 +47,11 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.ignoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore issue updates option is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.staleOnIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore issue updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is enabled', (): void => {
|
describe('when the ignore issue updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreUpdates();
|
sut.ignoreIssueUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
it('should stale the issue', async () => {
|
||||||
@ -95,53 +63,21 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is enabled', (): void => {
|
describe('when the ignore issue updates option is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreIssueUpdates();
|
sut.staleOnIssueUpdates();
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is disabled', (): void => {
|
it('should not stale the issue', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.staleOnIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the issue', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore issue updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -151,9 +87,9 @@ describe('ignore-updates options', (): void => {
|
|||||||
sut.toIssue().staleIn(10).created(20).updated(15);
|
sut.toIssue().staleIn(10).created(20).updated(15);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is disabled', (): void => {
|
describe('when the ignore issue updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.staleOnUpdates();
|
sut.ignoreIssueUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
it('should stale the issue', async () => {
|
||||||
@ -165,59 +101,11 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.ignoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore issue updates option is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.staleOnIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore issue updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is enabled', (): void => {
|
describe('when the ignore issue updates option is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreUpdates();
|
sut.staleOnIssueUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
it('should stale the issue', async () => {
|
||||||
@ -229,53 +117,37 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is enabled', (): void => {
|
describe('when the ignore issue updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreIssueUpdates();
|
sut.ignoreIssueUpdates();
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is disabled', (): void => {
|
it('should stale the issue', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.staleOnIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
describe('when the ignore issue updates option is disabled', (): void => {
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
beforeEach((): void => {
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
sut.staleOnIssueUpdates();
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore issue updates option is unset', (): void => {
|
it('should stale the issue', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.unsetIgnoreIssueUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the issue', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -285,9 +157,25 @@ describe('ignore-updates options', (): void => {
|
|||||||
sut.toPullRequest().staleIn(10).created(20).updated(5);
|
sut.toPullRequest().staleIn(10).created(20).updated(5);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is disabled', (): void => {
|
describe('when the ignore pull request updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.staleOnUpdates();
|
sut.ignorePullRequestUpdates();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should stale the pull request', async () => {
|
||||||
|
expect.assertions(3);
|
||||||
|
|
||||||
|
await sut.test();
|
||||||
|
|
||||||
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('when the ignore pull request updates option is disabled', (): void => {
|
||||||
|
beforeEach((): void => {
|
||||||
|
sut.staleOnPullRequestUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should not stale the pull request', async () => {
|
it('should not stale the pull request', async () => {
|
||||||
@ -299,59 +187,11 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.ignorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.staleOnPullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is enabled', (): void => {
|
describe('when the ignore pull request updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreUpdates();
|
sut.ignorePullRequestUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
it('should stale the pull request', async () => {
|
||||||
@ -363,53 +203,21 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is enabled', (): void => {
|
describe('when the ignore pull request updates option is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignorePullRequestUpdates();
|
sut.staleOnPullRequestUpdates();
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is disabled', (): void => {
|
it('should not stale the pull request', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.staleOnPullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should not stale the pull request', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.staleIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -419,9 +227,9 @@ describe('ignore-updates options', (): void => {
|
|||||||
sut.toPullRequest().staleIn(10).created(20).updated(15);
|
sut.toPullRequest().staleIn(10).created(20).updated(15);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is disabled', (): void => {
|
describe('when the ignore pull request updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.staleOnUpdates();
|
sut.ignorePullRequestUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
it('should stale the pull request', async () => {
|
||||||
@ -433,59 +241,11 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is enabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.ignorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is disabled', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.staleOnPullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is unset', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
sut.unsetIgnorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore updates option is enabled', (): void => {
|
describe('when the ignore pull request updates option is disabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignoreUpdates();
|
sut.staleOnPullRequestUpdates();
|
||||||
});
|
});
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
it('should stale the pull request', async () => {
|
||||||
@ -497,53 +257,37 @@ describe('ignore-updates options', (): void => {
|
|||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is enabled', (): void => {
|
describe('when the ignore pull request updates option is enabled', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
sut.ignorePullRequestUpdates();
|
sut.ignorePullRequestUpdates();
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is disabled', (): void => {
|
it('should stale the pull request', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.staleOnPullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
describe('when the ignore pull request updates option is disabled', (): void => {
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
beforeEach((): void => {
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
sut.staleOnPullRequestUpdates();
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the ignore pull request updates option is unset', (): void => {
|
it('should stale the pull request', async () => {
|
||||||
beforeEach((): void => {
|
expect.assertions(3);
|
||||||
sut.unsetIgnorePullRequestUpdates();
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should stale the pull request', async () => {
|
await sut.test();
|
||||||
expect.assertions(3);
|
|
||||||
|
|
||||||
await sut.test();
|
expect(sut.processor.staleIssues).toHaveLength(1);
|
||||||
|
expect(sut.processor.closedIssues).toHaveLength(0);
|
||||||
expect(sut.processor.staleIssues).toHaveLength(1);
|
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
||||||
expect(sut.processor.closedIssues).toHaveLength(0);
|
|
||||||
expect(sut.processor.removedLabelIssues).toHaveLength(0);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
@ -594,22 +338,6 @@ class SUT {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
ignoreUpdates(): SUT {
|
|
||||||
this._updateOptions({
|
|
||||||
ignoreUpdates: true
|
|
||||||
});
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
staleOnUpdates(): SUT {
|
|
||||||
this._updateOptions({
|
|
||||||
ignoreUpdates: false
|
|
||||||
});
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
ignoreIssueUpdates(): SUT {
|
ignoreIssueUpdates(): SUT {
|
||||||
this._updateOptions({
|
this._updateOptions({
|
||||||
ignoreIssueUpdates: true
|
ignoreIssueUpdates: true
|
||||||
@ -626,14 +354,6 @@ class SUT {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsetIgnoreIssueUpdates(): SUT {
|
|
||||||
this._updateOptions({
|
|
||||||
ignoreIssueUpdates: undefined
|
|
||||||
});
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
ignorePullRequestUpdates(): SUT {
|
ignorePullRequestUpdates(): SUT {
|
||||||
this._updateOptions({
|
this._updateOptions({
|
||||||
ignorePrUpdates: true
|
ignorePrUpdates: true
|
||||||
@ -650,14 +370,6 @@ class SUT {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsetIgnorePullRequestUpdates(): SUT {
|
|
||||||
this._updateOptions({
|
|
||||||
ignorePrUpdates: undefined
|
|
||||||
});
|
|
||||||
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
async test(): Promise<number> {
|
async test(): Promise<number> {
|
||||||
return this._setTestIssueList()._setProcessor();
|
return this._setTestIssueList()._setProcessor();
|
||||||
}
|
}
|
||||||
|
96
action.yml
96
action.yml
@ -18,25 +18,21 @@ inputs:
|
|||||||
close-pr-message:
|
close-pr-message:
|
||||||
description: 'The message to post on the pull request when closing it. If none provided, will not comment when closing a pull requests.'
|
description: 'The message to post on the pull request when closing it. If none provided, will not comment when closing a pull requests.'
|
||||||
required: false
|
required: false
|
||||||
days-before-stale:
|
|
||||||
description: 'The number of days old an issue or a pull request can be before marking it stale. Set to -1 to never mark issues or pull requests as stale automatically.'
|
|
||||||
required: false
|
|
||||||
default: '60'
|
|
||||||
days-before-issue-stale:
|
days-before-issue-stale:
|
||||||
description: 'The number of days old an issue can be before marking it stale. Set to -1 to never mark issues as stale automatically. Override "days-before-stale" option regarding only the issues.'
|
description: 'The number of days old an issue can be before marking it stale. Set to -1 to never mark issues or pull requests as stale automatically.'
|
||||||
|
default: '60'
|
||||||
required: false
|
required: false
|
||||||
days-before-pr-stale:
|
days-before-pr-stale:
|
||||||
description: 'The number of days old a pull request can be before marking it stale. Set to -1 to never mark pull requests as stale automatically. Override "days-before-stale" option regarding only the pull requests.'
|
description: 'The number of days old a pull request can be before marking it stale. Set to -1 to never mark issues or pull requests as stale automatically.'
|
||||||
|
default: '60'
|
||||||
required: false
|
required: false
|
||||||
days-before-close:
|
|
||||||
description: 'The number of days to wait to close an issue or a pull request after it being marked stale. Set to -1 to never close stale issues or pull requests.'
|
|
||||||
required: false
|
|
||||||
default: '7'
|
|
||||||
days-before-issue-close:
|
days-before-issue-close:
|
||||||
description: 'The number of days to wait to close an issue after it being marked stale. Set to -1 to never close stale issues. Override "days-before-close" option regarding only the issues.'
|
description: 'The number of days to wait to close an issue after it being marked stale. Set to -1 to never close stale issues or pull requests.'
|
||||||
|
default: '7'
|
||||||
required: false
|
required: false
|
||||||
days-before-pr-close:
|
days-before-pr-close:
|
||||||
description: 'The number of days to wait to close a pull request after it being marked stale. Set to -1 to never close stale pull requests. Override "days-before-close" option regarding only the pull requests.'
|
description: 'The number of days to wait to close a pull request after it being marked stale. Set to -1 to never close stale issues or pull requests.'
|
||||||
|
default: '7'
|
||||||
required: false
|
required: false
|
||||||
stale-issue-label:
|
stale-issue-label:
|
||||||
description: 'The label to apply when an issue is stale.'
|
description: 'The label to apply when an issue is stale.'
|
||||||
@ -60,44 +56,28 @@ inputs:
|
|||||||
description: 'The labels that mean a pull request is exempt from being marked as stale. Separate multiple labels with commas (eg. "label1,label2").'
|
description: 'The labels that mean a pull request is exempt from being marked as stale. Separate multiple labels with commas (eg. "label1,label2").'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-milestones:
|
|
||||||
description: 'The milestones that mean an issue or a pull request is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2").'
|
|
||||||
default: ''
|
|
||||||
required: false
|
|
||||||
exempt-issue-milestones:
|
exempt-issue-milestones:
|
||||||
description: 'The milestones that mean an issue is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2"). Override "exempt-milestones" option regarding only the issues.'
|
description: 'The milestones that mean an issue is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2").'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-pr-milestones:
|
exempt-pr-milestones:
|
||||||
description: 'The milestones that mean a pull request is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2"). Override "exempt-milestones" option regarding only the pull requests.'
|
description: 'The milestones that mean a pull request is exempt from being marked as stale. Separate multiple milestones with commas (eg. "milestone1,milestone2").'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-all-milestones:
|
|
||||||
description: 'Exempt all issues and pull requests with milestones from being marked as stale. Default to false.'
|
|
||||||
default: 'false'
|
|
||||||
required: false
|
|
||||||
exempt-all-issue-milestones:
|
exempt-all-issue-milestones:
|
||||||
description: 'Exempt all issues with milestones from being marked as stale. Override "exempt-all-milestones" option regarding only the issues.'
|
description: 'Exempt all issues with milestones from being marked as stale. Default to false.'
|
||||||
default: ''
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
exempt-all-pr-milestones:
|
exempt-all-pr-milestones:
|
||||||
description: 'Exempt all pull requests with milestones from being marked as stale. Override "exempt-all-milestones" option regarding only the pull requests.'
|
description: 'Exempt all pull requests with milestones from being marked as stale. Default to false.'
|
||||||
default: ''
|
default: 'false'
|
||||||
required: false
|
|
||||||
only-labels:
|
|
||||||
description: 'Only issues or pull requests with all of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.'
|
|
||||||
default: ''
|
|
||||||
required: false
|
|
||||||
any-of-labels:
|
|
||||||
description: 'Only issues or pull requests with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.'
|
|
||||||
default: ''
|
|
||||||
required: false
|
required: false
|
||||||
any-of-issue-labels:
|
any-of-issue-labels:
|
||||||
description: 'Only issues with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels. Override "any-of-labels" option regarding only the issues.'
|
description: 'Only issues with all of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
any-of-pr-labels:
|
any-of-pr-labels:
|
||||||
description: 'Only pull requests with at least one of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels. Override "any-of-labels" option regarding only the pull requests.'
|
description: 'Only pull requests with all of these labels are checked if stale. Defaults to `` (disabled) and can be a comma-separated list of labels.'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
only-issue-labels:
|
only-issue-labels:
|
||||||
@ -112,17 +92,13 @@ inputs:
|
|||||||
description: 'The maximum number of operations per run, used to control rate limiting (GitHub API CRUD related).'
|
description: 'The maximum number of operations per run, used to control rate limiting (GitHub API CRUD related).'
|
||||||
default: '30'
|
default: '30'
|
||||||
required: false
|
required: false
|
||||||
remove-stale-when-updated:
|
remove-issue-stale-when-updated:
|
||||||
description: 'Remove stale labels from issues and pull requests when they are updated or commented on.'
|
description: 'Remove stale labels from issues when they are updated or commented on.'
|
||||||
default: 'true'
|
default: 'true'
|
||||||
required: false
|
required: false
|
||||||
remove-issue-stale-when-updated:
|
|
||||||
description: 'Remove stale labels from issues when they are updated or commented on. Override "remove-stale-when-updated" option regarding only the issues.'
|
|
||||||
default: ''
|
|
||||||
required: false
|
|
||||||
remove-pr-stale-when-updated:
|
remove-pr-stale-when-updated:
|
||||||
description: 'Remove stale labels from pull requests when they are updated or commented on. Override "remove-stale-when-updated" option regarding only the pull requests.'
|
description: 'Remove stale labels from pull requests when they are updated or commented on.'
|
||||||
default: ''
|
default: 'true'
|
||||||
required: false
|
required: false
|
||||||
debug-only:
|
debug-only:
|
||||||
description: 'Run the processor in debug mode without actually performing any operations on live issues.'
|
description: 'Run the processor in debug mode without actually performing any operations on live issues.'
|
||||||
@ -140,29 +116,21 @@ inputs:
|
|||||||
description: 'The date used to skip the stale action on issue/pull request created before it (ISO 8601 or RFC 2822).'
|
description: 'The date used to skip the stale action on issue/pull request created before it (ISO 8601 or RFC 2822).'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-assignees:
|
|
||||||
description: 'The assignees which exempt an issue or a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2").'
|
|
||||||
default: ''
|
|
||||||
required: false
|
|
||||||
exempt-issue-assignees:
|
exempt-issue-assignees:
|
||||||
description: 'The assignees which exempt an issue from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2"). Override "exempt-assignees" option regarding only the issues.'
|
description: 'The assignees which exempt an issue from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2").'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-pr-assignees:
|
exempt-pr-assignees:
|
||||||
description: 'The assignees which exempt a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2"). Override "exempt-assignees" option regarding only the pull requests.'
|
description: 'The assignees which exempt a pull request from being marked as stale. Separate multiple assignees with commas (eg. "user1,user2").'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
exempt-all-assignees:
|
|
||||||
description: 'Exempt all issues and pull requests with assignees from being marked as stale. Default to false.'
|
|
||||||
default: 'false'
|
|
||||||
required: false
|
|
||||||
exempt-all-issue-assignees:
|
exempt-all-issue-assignees:
|
||||||
description: 'Exempt all issues with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the issues.'
|
description: 'Exempt all issues with assignees from being marked as stale. Default to false.'
|
||||||
default: ''
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
exempt-all-pr-assignees:
|
exempt-all-pr-assignees:
|
||||||
description: 'Exempt all pull requests with assignees from being marked as stale. Override "exempt-all-assignees" option regarding only the pull requests.'
|
description: 'Exempt all pull requests with assignees from being marked as stale. Default to false.'
|
||||||
default: ''
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
exempt-draft-pr:
|
exempt-draft-pr:
|
||||||
description: 'Exempt draft pull requests from being marked as stale. Default to false.'
|
description: 'Exempt draft pull requests from being marked as stale. Default to false.'
|
||||||
@ -180,17 +148,13 @@ inputs:
|
|||||||
description: 'A comma delimited list of labels to remove when a stale issue or pull request receives activity and has the stale-issue-label or stale-pr-label removed from it.'
|
description: 'A comma delimited list of labels to remove when a stale issue or pull request receives activity and has the stale-issue-label or stale-pr-label removed from it.'
|
||||||
default: ''
|
default: ''
|
||||||
required: false
|
required: false
|
||||||
ignore-updates:
|
ignore-issue-updates:
|
||||||
description: 'Any update (update/comment) can reset the stale idle time on the issues and pull requests.'
|
description: 'Any update (update/comment) can reset the stale idle time on the issues.'
|
||||||
default: 'false'
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
ignore-issue-updates:
|
|
||||||
description: 'Any update (update/comment) can reset the stale idle time on the issues. Override "ignore-updates" option regarding only the issues.'
|
|
||||||
default: ''
|
|
||||||
required: false
|
|
||||||
ignore-pr-updates:
|
ignore-pr-updates:
|
||||||
description: 'Any update (update/comment) can reset the stale idle time on the pull requests. Override "ignore-updates" option regarding only the pull requests.'
|
description: 'Any update (update/comment) can reset the stale idle time on the pull requests.'
|
||||||
default: ''
|
default: 'false'
|
||||||
required: false
|
required: false
|
||||||
outputs:
|
outputs:
|
||||||
closed-issues-prs:
|
closed-issues-prs:
|
||||||
|
4039
dist/index.js
vendored
4039
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,290 +1,218 @@
|
|||||||
import deburr from 'lodash.deburr';
|
import deburr from 'lodash.deburr';
|
||||||
import {Option} from '../enums/option';
|
import {Option} from '../enums/option';
|
||||||
import {wordsToList} from '../functions/words-to-list';
|
import {wordsToList} from '../functions/words-to-list';
|
||||||
import {Assignee} from '../interfaces/assignee';
|
import {Assignee} from '../interfaces/assignee';
|
||||||
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
||||||
import {Issue} from './issue';
|
import {Issue} from './issue';
|
||||||
import {IssueLogger} from './loggers/issue-logger';
|
import {IssueLogger} from './loggers/issue-logger';
|
||||||
import {LoggerService} from '../services/logger.service';
|
import {LoggerService} from '../services/logger.service';
|
||||||
|
|
||||||
type CleanAssignee = string;
|
type CleanAssignee = string;
|
||||||
|
|
||||||
export class Assignees {
|
export class Assignees {
|
||||||
private readonly _options: IIssuesProcessorOptions;
|
private readonly _options: IIssuesProcessorOptions;
|
||||||
private readonly _issue: Issue;
|
private readonly _issue: Issue;
|
||||||
private readonly _issueLogger: IssueLogger;
|
private readonly _issueLogger: IssueLogger;
|
||||||
|
|
||||||
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
||||||
this._options = options;
|
this._options = options;
|
||||||
this._issue = issue;
|
this._issue = issue;
|
||||||
this._issueLogger = new IssueLogger(issue);
|
this._issueLogger = new IssueLogger(issue);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static _cleanAssignee(assignee: Readonly<string>): CleanAssignee {
|
private static _cleanAssignee(assignee: Readonly<string>): CleanAssignee {
|
||||||
return deburr(assignee.toLowerCase());
|
return deburr(assignee.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldExemptAssignees(): boolean {
|
shouldExemptAssignees(): boolean {
|
||||||
if (!this._issue.hasAssignees) {
|
if (!this._issue.hasAssignees) {
|
||||||
this._issueLogger.info('This $$type has no assignee');
|
this._issueLogger.info('This $$type has no assignee');
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._shouldExemptAllAssignees()) {
|
if (this._shouldExemptAllAssignees()) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('└──'),
|
LoggerService.white('└──'),
|
||||||
'Skipping this $$type because it has an exempt assignee'
|
'Skipping this $$type because it has an exempt assignee'
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const exemptAssignees: string[] = this._getExemptAssignees();
|
const exemptAssignees: string[] = this._getExemptAssignees();
|
||||||
|
|
||||||
if (exemptAssignees.length === 0) {
|
if (exemptAssignees.length === 0) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`No assignee option was specified to skip the stale process for this $$type`
|
`No assignee option was specified to skip the stale process for this $$type`
|
||||||
);
|
);
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`Found ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
`Found ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
||||||
exemptAssignees.length > 1 ? 's' : ''
|
exemptAssignees.length > 1 ? 's' : ''
|
||||||
} that can exempt stale on this $$type`
|
} that can exempt stale on this $$type`
|
||||||
);
|
);
|
||||||
|
|
||||||
const hasExemptAssignee: boolean = exemptAssignees.some(
|
const hasExemptAssignee: boolean = exemptAssignees.some(
|
||||||
(exemptAssignee: Readonly<string>): boolean =>
|
(exemptAssignee: Readonly<string>): boolean =>
|
||||||
this._hasAssignee(exemptAssignee)
|
this._hasAssignee(exemptAssignee)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!hasExemptAssignee) {
|
if (!hasExemptAssignee) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
'No assignee on this $$type can exempt the stale process'
|
'No assignee on this $$type can exempt the stale process'
|
||||||
);
|
);
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
} else {
|
} else {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('└──'),
|
LoggerService.white('└──'),
|
||||||
'Skipping this $$type because it has an exempt assignee'
|
'Skipping this $$type because it has an exempt assignee'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasExemptAssignee;
|
return hasExemptAssignee;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getExemptAssignees(): string[] {
|
private _getExemptAssignees(): string[] {
|
||||||
return this._issue.isPullRequest
|
return this._issue.isPullRequest
|
||||||
? this._getExemptPullRequestAssignees()
|
? this._getExemptPullRequestAssignees()
|
||||||
: this._getExemptIssueAssignees();
|
: this._getExemptIssueAssignees();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getExemptIssueAssignees(): string[] {
|
private _getExemptIssueAssignees(): string[] {
|
||||||
if (this._options.exemptIssueAssignees === '') {
|
if (this._options.exemptIssueAssignees === '') {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
Option.ExemptIssueAssignees
|
Option.ExemptIssueAssignees
|
||||||
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (this._options.exemptAssignees === '') {
|
return [];
|
||||||
this._issueLogger.info(
|
}
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
const exemptAssignees: string[] = wordsToList(
|
||||||
Option.ExemptAssignees
|
this._options.exemptIssueAssignees
|
||||||
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
);
|
||||||
);
|
|
||||||
|
this._issueLogger.info(
|
||||||
return [];
|
LoggerService.white('├──'),
|
||||||
}
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
|
Option.ExemptIssueAssignees
|
||||||
const exemptAssignees: string[] = wordsToList(
|
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
||||||
this._options.exemptAssignees
|
exemptAssignees.length === 1 ? '' : 's'
|
||||||
);
|
} can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('├──'),
|
return exemptAssignees;
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
}
|
||||||
Option.ExemptAssignees
|
|
||||||
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
private _getExemptPullRequestAssignees(): string[] {
|
||||||
exemptAssignees.length === 1 ? '' : 's'
|
if (this._options.exemptPrAssignees === '') {
|
||||||
} can skip the stale process for this $$type`
|
this._issueLogger.info(
|
||||||
);
|
LoggerService.white('├──'),
|
||||||
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
return exemptAssignees;
|
Option.ExemptPrAssignees
|
||||||
}
|
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
const exemptAssignees: string[] = wordsToList(
|
|
||||||
this._options.exemptIssueAssignees
|
return [];
|
||||||
);
|
}
|
||||||
|
|
||||||
this._issueLogger.info(
|
const exemptAssignees: string[] = wordsToList(
|
||||||
LoggerService.white('├──'),
|
this._options.exemptPrAssignees
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
);
|
||||||
Option.ExemptIssueAssignees
|
|
||||||
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
this._issueLogger.info(
|
||||||
exemptAssignees.length === 1 ? '' : 's'
|
LoggerService.white('├──'),
|
||||||
} can skip the stale process for this $$type`
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
);
|
Option.ExemptPrAssignees
|
||||||
|
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
||||||
return exemptAssignees;
|
exemptAssignees.length === 1 ? '' : 's'
|
||||||
}
|
} can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
private _getExemptPullRequestAssignees(): string[] {
|
|
||||||
if (this._options.exemptPrAssignees === '') {
|
return exemptAssignees;
|
||||||
this._issueLogger.info(
|
}
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
private _hasAssignee(assignee: Readonly<string>): boolean {
|
||||||
Option.ExemptPrAssignees
|
const cleanAssignee: CleanAssignee = Assignees._cleanAssignee(assignee);
|
||||||
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
|
||||||
);
|
return this._issue.assignees.some(
|
||||||
|
(issueAssignee: Readonly<Assignee>): boolean => {
|
||||||
if (this._options.exemptAssignees === '') {
|
const isSameAssignee: boolean =
|
||||||
this._issueLogger.info(
|
cleanAssignee === Assignees._cleanAssignee(issueAssignee.login);
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
if (isSameAssignee) {
|
||||||
Option.ExemptAssignees
|
this._issueLogger.info(
|
||||||
)} is disabled. No specific assignee can skip the stale process for this $$type`
|
LoggerService.white('├──'),
|
||||||
);
|
`@${issueAssignee.login} is assigned on this $$type and is an exempt assignee`
|
||||||
|
);
|
||||||
return [];
|
}
|
||||||
}
|
|
||||||
|
return isSameAssignee;
|
||||||
const exemptAssignees: string[] = wordsToList(
|
}
|
||||||
this._options.exemptAssignees
|
);
|
||||||
);
|
}
|
||||||
|
|
||||||
this._issueLogger.info(
|
private _shouldExemptAllAssignees(): boolean {
|
||||||
LoggerService.white('├──'),
|
return this._issue.isPullRequest
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
? this._shouldExemptAllPullRequestAssignees()
|
||||||
Option.ExemptAssignees
|
: this._shouldExemptAllIssueAssignees();
|
||||||
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
}
|
||||||
exemptAssignees.length === 1 ? '' : 's'
|
|
||||||
} can skip the stale process for this $$type`
|
private _shouldExemptAllIssueAssignees(): boolean {
|
||||||
);
|
if (this._options.exemptAllIssueAssignees) {
|
||||||
|
this._issueLogger.info(
|
||||||
return exemptAssignees;
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
}
|
Option.ExemptAllIssueAssignees
|
||||||
|
)} is enabled. Any assignee on this $$type will skip the stale process`
|
||||||
const exemptAssignees: string[] = wordsToList(
|
);
|
||||||
this._options.exemptPrAssignees
|
|
||||||
);
|
return true;
|
||||||
|
}
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('├──'),
|
this._issueLogger.info(
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
Option.ExemptPrAssignees
|
Option.ExemptAllIssueAssignees
|
||||||
)} is set. ${LoggerService.cyan(exemptAssignees.length)} assignee${
|
)} is disabled. Only some specific assignees on this $$type will skip the stale process`
|
||||||
exemptAssignees.length === 1 ? '' : 's'
|
);
|
||||||
} can skip the stale process for this $$type`
|
|
||||||
);
|
return false;
|
||||||
|
}
|
||||||
return exemptAssignees;
|
|
||||||
}
|
private _shouldExemptAllPullRequestAssignees(): boolean {
|
||||||
|
if (this._options.exemptAllPrAssignees) {
|
||||||
private _hasAssignee(assignee: Readonly<string>): boolean {
|
this._issueLogger.info(
|
||||||
const cleanAssignee: CleanAssignee = Assignees._cleanAssignee(assignee);
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
|
Option.ExemptAllPrAssignees
|
||||||
return this._issue.assignees.some(
|
)} is enabled. Any assignee on this $$type will skip the stale process`
|
||||||
(issueAssignee: Readonly<Assignee>): boolean => {
|
);
|
||||||
const isSameAssignee: boolean =
|
|
||||||
cleanAssignee === Assignees._cleanAssignee(issueAssignee.login);
|
return true;
|
||||||
|
}
|
||||||
if (isSameAssignee) {
|
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
`@${issueAssignee.login} is assigned on this $$type and is an exempt assignee`
|
Option.ExemptAllPrAssignees
|
||||||
);
|
)} is disabled. Only some specific assignees on this $$type will skip the stale process`
|
||||||
}
|
);
|
||||||
|
|
||||||
return isSameAssignee;
|
return false;
|
||||||
}
|
}
|
||||||
);
|
|
||||||
}
|
private _logSkip(): void {
|
||||||
|
this._issueLogger.info(
|
||||||
private _shouldExemptAllAssignees(): boolean {
|
LoggerService.white('└──'),
|
||||||
return this._issue.isPullRequest
|
'Skip the assignees checks'
|
||||||
? this._shouldExemptAllPullRequestAssignees()
|
);
|
||||||
: this._shouldExemptAllIssueAssignees();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _shouldExemptAllIssueAssignees(): boolean {
|
|
||||||
if (this._options.exemptAllIssueAssignees === true) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllIssueAssignees
|
|
||||||
)} is enabled. Any assignee on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (this._options.exemptAllIssueAssignees === false) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllIssueAssignees
|
|
||||||
)} is disabled. Only some specific assignees on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._logExemptAllAssigneesOption();
|
|
||||||
|
|
||||||
return this._options.exemptAllAssignees;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _shouldExemptAllPullRequestAssignees(): boolean {
|
|
||||||
if (this._options.exemptAllPrAssignees === true) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllPrAssignees
|
|
||||||
)} is enabled. Any assignee on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (this._options.exemptAllPrAssignees === false) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllPrAssignees
|
|
||||||
)} is disabled. Only some specific assignees on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._logExemptAllAssigneesOption();
|
|
||||||
|
|
||||||
return this._options.exemptAllAssignees;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _logExemptAllAssigneesOption(): void {
|
|
||||||
if (this._options.exemptAllAssignees) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllAssignees
|
|
||||||
)} is enabled. Any assignee on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllAssignees
|
|
||||||
)} is disabled. Only some specific assignees on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private _logSkip(): void {
|
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('└──'),
|
|
||||||
'Skip the assignees checks'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -1,251 +1,163 @@
|
|||||||
import {DefaultProcessorOptions} from '../../__tests__/constants/default-processor-options';
|
import {DefaultProcessorOptions} from '../../__tests__/constants/default-processor-options';
|
||||||
import {generateIIssue} from '../../__tests__/functions/generate-iissue';
|
import {generateIIssue} from '../../__tests__/functions/generate-iissue';
|
||||||
import {IIssue} from '../interfaces/issue';
|
import {IIssue} from '../interfaces/issue';
|
||||||
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
||||||
import {IgnoreUpdates} from './ignore-updates';
|
import {IgnoreUpdates} from './ignore-updates';
|
||||||
import {Issue} from './issue';
|
import {Issue} from './issue';
|
||||||
|
|
||||||
describe('IgnoreUpdates', (): void => {
|
describe('IgnoreUpdates', (): void => {
|
||||||
let ignoreUpdates: IgnoreUpdates;
|
let ignoreUpdates: IgnoreUpdates;
|
||||||
let optionsInterface: IIssuesProcessorOptions;
|
let optionsInterface: IIssuesProcessorOptions;
|
||||||
let issue: Issue;
|
let issue: Issue;
|
||||||
let issueInterface: IIssue;
|
let issueInterface: IIssue;
|
||||||
|
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
optionsInterface = {
|
optionsInterface = {
|
||||||
...DefaultProcessorOptions,
|
...DefaultProcessorOptions,
|
||||||
ignoreIssueUpdates: true
|
ignoreIssueUpdates: true
|
||||||
};
|
};
|
||||||
issueInterface = generateIIssue();
|
issueInterface = generateIIssue();
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('shouldIgnoreUpdates()', (): void => {
|
describe('shouldIgnoreUpdates()', (): void => {
|
||||||
describe('when the given issue is not a pull request', (): void => {
|
describe('when the given issue is not a pull request', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
issueInterface.pull_request = undefined;
|
issueInterface.pull_request = undefined;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are configured to reset the stale on updates', (): void => {
|
describe('when the given options are configured to reset the issue stale on updates', (): void => {
|
||||||
beforeEach((): void => {
|
beforeEach((): void => {
|
||||||
optionsInterface.ignoreUpdates = false;
|
optionsInterface.ignoreIssueUpdates = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are not configured to reset the issue stale on updates', (): void => {
|
it('should return false', (): void => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
delete optionsInterface.ignoreIssueUpdates;
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
});
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
|
|
||||||
it('should return false', (): void => {
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
expect(result).toStrictEqual(false);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
});
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to not reset the issue stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(false);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignoreIssueUpdates = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are configured to reset the issue stale on updates', (): void => {
|
it('should return true', (): void => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
optionsInterface.ignoreIssueUpdates = false;
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
});
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
|
|
||||||
it('should return false', (): void => {
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
expect(result).toStrictEqual(true);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
});
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to reset the issue stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(false);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignoreIssueUpdates = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are configured to not reset the issue stale on updates', (): void => {
|
it('should return false', (): void => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
optionsInterface.ignoreIssueUpdates = true;
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
});
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
|
|
||||||
it('should return true', (): void => {
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
expect(result).toStrictEqual(false);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
});
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to not reset the issue stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(true);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignoreIssueUpdates = true;
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
it('should return true', (): void => {
|
||||||
describe('when the given options are configured to reset the stale on updates', (): void => {
|
expect.assertions(1);
|
||||||
beforeEach((): void => {
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
optionsInterface.ignoreUpdates = true;
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
});
|
|
||||||
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
describe('when the given options are not configured to reset the issue stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
expect(result).toStrictEqual(true);
|
||||||
delete optionsInterface.ignoreIssueUpdates;
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
it('should return true', (): void => {
|
|
||||||
expect.assertions(1);
|
describe('when the given issue is a pull request', (): void => {
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
beforeEach((): void => {
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
issueInterface.pull_request = {};
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to reset the pull request stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(true);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignorePrUpdates = false;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are configured to reset the issue stale on updates', (): void => {
|
it('should return false', (): void => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
optionsInterface.ignoreIssueUpdates = false;
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
});
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
|
|
||||||
it('should return false', (): void => {
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
expect(result).toStrictEqual(false);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
});
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to not reset the pull request stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(false);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignorePrUpdates = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('when the given options are configured to not reset the issue stale on updates', (): void => {
|
it('should return true', (): void => {
|
||||||
beforeEach((): void => {
|
expect.assertions(1);
|
||||||
optionsInterface.ignoreIssueUpdates = true;
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
});
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
|
|
||||||
it('should return true', (): void => {
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
expect(result).toStrictEqual(true);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
});
|
||||||
|
});
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
describe('when the given options are configured to reset the pull request stale on updates', (): void => {
|
||||||
expect(result).toStrictEqual(true);
|
beforeEach((): void => {
|
||||||
});
|
optionsInterface.ignorePrUpdates = false;
|
||||||
});
|
});
|
||||||
});
|
|
||||||
});
|
it('should return false', (): void => {
|
||||||
|
expect.assertions(1);
|
||||||
describe('when the given issue is a pull request', (): void => {
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
beforeEach((): void => {
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
issueInterface.pull_request = {};
|
|
||||||
});
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
|
|
||||||
describe('when the given options are configured to reset the stale on updates', (): void => {
|
expect(result).toStrictEqual(false);
|
||||||
beforeEach((): void => {
|
});
|
||||||
optionsInterface.ignoreUpdates = false;
|
});
|
||||||
});
|
|
||||||
|
describe('when the given options are configured to not reset the pull request stale on updates', (): void => {
|
||||||
describe('when the given options are not configured to reset the pull request stale on updates', (): void => {
|
beforeEach((): void => {
|
||||||
beforeEach((): void => {
|
optionsInterface.ignorePrUpdates = true;
|
||||||
delete optionsInterface.ignorePrUpdates;
|
});
|
||||||
});
|
|
||||||
|
it('should return true', (): void => {
|
||||||
it('should return false', (): void => {
|
expect.assertions(1);
|
||||||
expect.assertions(1);
|
issue = new Issue(optionsInterface, issueInterface);
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
const result = ignoreUpdates.shouldIgnoreUpdates();
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
expect(result).toStrictEqual(true);
|
||||||
expect(result).toStrictEqual(false);
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
});
|
||||||
describe('when the given options are configured to reset the pull request stale on updates', (): void => {
|
});
|
||||||
beforeEach((): void => {
|
|
||||||
optionsInterface.ignorePrUpdates = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return false', (): void => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
|
||||||
expect(result).toStrictEqual(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the given options are configured to not reset the pull request stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
optionsInterface.ignorePrUpdates = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return true', (): void => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
|
||||||
expect(result).toStrictEqual(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the given options are configured to not reset the stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
optionsInterface.ignoreUpdates = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the given options are not configured to reset the pull request stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
delete optionsInterface.ignorePrUpdates;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return true', (): void => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
|
||||||
expect(result).toStrictEqual(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the given options are configured to reset the pull request stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
optionsInterface.ignorePrUpdates = false;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return false', (): void => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
|
||||||
expect(result).toStrictEqual(false);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('when the given options are configured to not reset the pull request stale on updates', (): void => {
|
|
||||||
beforeEach((): void => {
|
|
||||||
optionsInterface.ignorePrUpdates = true;
|
|
||||||
});
|
|
||||||
|
|
||||||
it('should return true', (): void => {
|
|
||||||
expect.assertions(1);
|
|
||||||
issue = new Issue(optionsInterface, issueInterface);
|
|
||||||
ignoreUpdates = new IgnoreUpdates(optionsInterface, issue);
|
|
||||||
|
|
||||||
const result = ignoreUpdates.shouldIgnoreUpdates();
|
|
||||||
|
|
||||||
expect(result).toStrictEqual(true);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
@ -1,90 +1,66 @@
|
|||||||
import {Option} from '../enums/option';
|
import {Option} from '../enums/option';
|
||||||
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
||||||
import {Issue} from './issue';
|
import {Issue} from './issue';
|
||||||
import {IssueLogger} from './loggers/issue-logger';
|
import {IssueLogger} from './loggers/issue-logger';
|
||||||
|
|
||||||
export class IgnoreUpdates {
|
export class IgnoreUpdates {
|
||||||
private readonly _options: IIssuesProcessorOptions;
|
private readonly _options: IIssuesProcessorOptions;
|
||||||
private readonly _issue: Issue;
|
private readonly _issue: Issue;
|
||||||
private readonly _issueLogger: IssueLogger;
|
private readonly _issueLogger: IssueLogger;
|
||||||
|
|
||||||
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
||||||
this._options = options;
|
this._options = options;
|
||||||
this._issue = issue;
|
this._issue = issue;
|
||||||
this._issueLogger = new IssueLogger(issue);
|
this._issueLogger = new IssueLogger(issue);
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldIgnoreUpdates(): boolean {
|
shouldIgnoreUpdates(): boolean {
|
||||||
return this._shouldIgnoreUpdates();
|
return this._shouldIgnoreUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _shouldIgnoreUpdates(): boolean {
|
private _shouldIgnoreUpdates(): boolean {
|
||||||
return this._issue.isPullRequest
|
return this._issue.isPullRequest
|
||||||
? this._shouldIgnorePullRequestUpdates()
|
? this._shouldIgnorePullRequestUpdates()
|
||||||
: this._shouldIgnoreIssueUpdates();
|
: this._shouldIgnoreIssueUpdates();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _shouldIgnorePullRequestUpdates(): boolean {
|
private _shouldIgnorePullRequestUpdates(): boolean {
|
||||||
if (this._options.ignorePrUpdates === true) {
|
if (this._options.ignorePrUpdates) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
Option.IgnorePrUpdates
|
Option.IgnorePrUpdates
|
||||||
)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`
|
)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
} else if (this._options.ignorePrUpdates === false) {
|
}
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
this._issueLogger.info(
|
||||||
Option.IgnorePrUpdates
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`
|
Option.IgnorePrUpdates
|
||||||
);
|
)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`
|
||||||
|
);
|
||||||
return false;
|
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
this._logIgnoreUpdates();
|
|
||||||
|
private _shouldIgnoreIssueUpdates(): boolean {
|
||||||
return this._options.ignoreUpdates;
|
if (this._options.ignoreIssueUpdates) {
|
||||||
}
|
this._issueLogger.info(
|
||||||
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
private _shouldIgnoreIssueUpdates(): boolean {
|
Option.IgnoreIssueUpdates
|
||||||
if (this._options.ignoreIssueUpdates === true) {
|
)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`
|
||||||
this._issueLogger.info(
|
);
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.IgnoreIssueUpdates
|
return true;
|
||||||
)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`
|
}
|
||||||
);
|
|
||||||
|
this._issueLogger.info(
|
||||||
return true;
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
} else if (this._options.ignoreIssueUpdates === false) {
|
Option.IgnoreIssueUpdates
|
||||||
this._issueLogger.info(
|
)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
);
|
||||||
Option.IgnoreIssueUpdates
|
|
||||||
)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`
|
return false;
|
||||||
);
|
}
|
||||||
|
}
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._logIgnoreUpdates();
|
|
||||||
|
|
||||||
return this._options.ignoreUpdates;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _logIgnoreUpdates(): void {
|
|
||||||
if (this._options.ignoreUpdates) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.IgnoreUpdates
|
|
||||||
)} is enabled. The stale counter will ignore any updates or comments on this $$type and will use the creation date as a reference ignoring any kind of update`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.IgnoreUpdates
|
|
||||||
)} is disabled. The stale counter will take into account updates and comments on this $$type to avoid to stale when there is some update`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -17,50 +17,40 @@ describe('Issue', (): void => {
|
|||||||
closeIssueMessage: '',
|
closeIssueMessage: '',
|
||||||
closePrLabel: '',
|
closePrLabel: '',
|
||||||
closePrMessage: '',
|
closePrMessage: '',
|
||||||
daysBeforeClose: 0,
|
|
||||||
daysBeforeIssueClose: 0,
|
daysBeforeIssueClose: 0,
|
||||||
daysBeforeIssueStale: 0,
|
daysBeforeIssueStale: 0,
|
||||||
daysBeforePrClose: 0,
|
daysBeforePrClose: 0,
|
||||||
daysBeforePrStale: 0,
|
daysBeforePrStale: 0,
|
||||||
daysBeforeStale: 0,
|
|
||||||
debugOnly: false,
|
debugOnly: false,
|
||||||
deleteBranch: false,
|
deleteBranch: false,
|
||||||
exemptIssueLabels: '',
|
exemptIssueLabels: '',
|
||||||
exemptPrLabels: '',
|
exemptPrLabels: '',
|
||||||
onlyLabels: '',
|
|
||||||
onlyIssueLabels: '',
|
onlyIssueLabels: '',
|
||||||
onlyPrLabels: '',
|
onlyPrLabels: '',
|
||||||
anyOfLabels: '',
|
|
||||||
anyOfIssueLabels: '',
|
anyOfIssueLabels: '',
|
||||||
anyOfPrLabels: '',
|
anyOfPrLabels: '',
|
||||||
operationsPerRun: 0,
|
operationsPerRun: 0,
|
||||||
removeStaleWhenUpdated: false,
|
removeIssueStaleWhenUpdated: false,
|
||||||
removeIssueStaleWhenUpdated: undefined,
|
removePrStaleWhenUpdated: false,
|
||||||
removePrStaleWhenUpdated: undefined,
|
|
||||||
repoToken: '',
|
repoToken: '',
|
||||||
staleIssueMessage: '',
|
staleIssueMessage: '',
|
||||||
stalePrMessage: '',
|
stalePrMessage: '',
|
||||||
startDate: undefined,
|
startDate: undefined,
|
||||||
stalePrLabel: 'dummy-stale-pr-label',
|
stalePrLabel: 'dummy-stale-pr-label',
|
||||||
staleIssueLabel: 'dummy-stale-issue-label',
|
staleIssueLabel: 'dummy-stale-issue-label',
|
||||||
exemptMilestones: '',
|
|
||||||
exemptIssueMilestones: '',
|
exemptIssueMilestones: '',
|
||||||
exemptPrMilestones: '',
|
exemptPrMilestones: '',
|
||||||
exemptAllMilestones: false,
|
exemptAllIssueMilestones: false,
|
||||||
exemptAllIssueMilestones: undefined,
|
exemptAllPrMilestones: false,
|
||||||
exemptAllPrMilestones: undefined,
|
|
||||||
exemptAssignees: '',
|
|
||||||
exemptIssueAssignees: '',
|
exemptIssueAssignees: '',
|
||||||
exemptPrAssignees: '',
|
exemptPrAssignees: '',
|
||||||
exemptAllAssignees: false,
|
exemptAllIssueAssignees: false,
|
||||||
exemptAllIssueAssignees: undefined,
|
exemptAllPrAssignees: false,
|
||||||
exemptAllPrAssignees: undefined,
|
|
||||||
enableStatistics: false,
|
enableStatistics: false,
|
||||||
labelsToRemoveWhenUnstale: '',
|
labelsToRemoveWhenUnstale: '',
|
||||||
labelsToAddWhenUnstale: '',
|
labelsToAddWhenUnstale: '',
|
||||||
ignoreUpdates: false,
|
ignoreIssueUpdates: false,
|
||||||
ignoreIssueUpdates: undefined,
|
ignorePrUpdates: false,
|
||||||
ignorePrUpdates: undefined,
|
|
||||||
exemptDraftPr: false
|
exemptDraftPr: false
|
||||||
};
|
};
|
||||||
issueInterface = {
|
issueInterface = {
|
||||||
|
@ -3,29 +3,28 @@ import {context, getOctokit} from '@actions/github';
|
|||||||
import {GitHub} from '@actions/github/lib/utils';
|
import {GitHub} from '@actions/github/lib/utils';
|
||||||
import {GetResponseTypeFromEndpointMethod} from '@octokit/types';
|
import {GetResponseTypeFromEndpointMethod} from '@octokit/types';
|
||||||
import {Option} from '../enums/option';
|
import {Option} from '../enums/option';
|
||||||
|
import {cleanLabel} from '../functions/clean-label';
|
||||||
import {getHumanizedDate} from '../functions/dates/get-humanized-date';
|
import {getHumanizedDate} from '../functions/dates/get-humanized-date';
|
||||||
import {isDateMoreRecentThan} from '../functions/dates/is-date-more-recent-than';
|
import {isDateMoreRecentThan} from '../functions/dates/is-date-more-recent-than';
|
||||||
import {isValidDate} from '../functions/dates/is-valid-date';
|
import {isValidDate} from '../functions/dates/is-valid-date';
|
||||||
import {isBoolean} from '../functions/is-boolean';
|
|
||||||
import {isLabeled} from '../functions/is-labeled';
|
import {isLabeled} from '../functions/is-labeled';
|
||||||
import {cleanLabel} from '../functions/clean-label';
|
|
||||||
import {shouldMarkWhenStale} from '../functions/should-mark-when-stale';
|
import {shouldMarkWhenStale} from '../functions/should-mark-when-stale';
|
||||||
import {wordsToList} from '../functions/words-to-list';
|
import {wordsToList} from '../functions/words-to-list';
|
||||||
import {IComment} from '../interfaces/comment';
|
import {IComment} from '../interfaces/comment';
|
||||||
|
import {IIssue} from '../interfaces/issue';
|
||||||
import {IIssueEvent} from '../interfaces/issue-event';
|
import {IIssueEvent} from '../interfaces/issue-event';
|
||||||
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
||||||
import {IPullRequest} from '../interfaces/pull-request';
|
import {IPullRequest} from '../interfaces/pull-request';
|
||||||
|
import {LoggerService} from '../services/logger.service';
|
||||||
import {Assignees} from './assignees';
|
import {Assignees} from './assignees';
|
||||||
import {IgnoreUpdates} from './ignore-updates';
|
|
||||||
import {ExemptDraftPullRequest} from './exempt-draft-pull-request';
|
import {ExemptDraftPullRequest} from './exempt-draft-pull-request';
|
||||||
|
import {IgnoreUpdates} from './ignore-updates';
|
||||||
import {Issue} from './issue';
|
import {Issue} from './issue';
|
||||||
import {IssueLogger} from './loggers/issue-logger';
|
import {IssueLogger} from './loggers/issue-logger';
|
||||||
import {Logger} from './loggers/logger';
|
import {Logger} from './loggers/logger';
|
||||||
import {Milestones} from './milestones';
|
import {Milestones} from './milestones';
|
||||||
import {StaleOperations} from './stale-operations';
|
import {StaleOperations} from './stale-operations';
|
||||||
import {Statistics} from './statistics';
|
import {Statistics} from './statistics';
|
||||||
import {LoggerService} from '../services/logger.service';
|
|
||||||
import {IIssue} from '../interfaces/issue';
|
|
||||||
|
|
||||||
/***
|
/***
|
||||||
* Handle processing of issues for staleness/closure.
|
* Handle processing of issues for staleness/closure.
|
||||||
@ -207,8 +206,8 @@ export class IssuesProcessor {
|
|||||||
? this.options.stalePrMessage.length === 0
|
? this.options.stalePrMessage.length === 0
|
||||||
: this.options.staleIssueMessage.length === 0;
|
: this.options.staleIssueMessage.length === 0;
|
||||||
const daysBeforeStale: number = issue.isPullRequest
|
const daysBeforeStale: number = issue.isPullRequest
|
||||||
? this._getDaysBeforePrStale()
|
? this.options.daysBeforePrStale
|
||||||
: this._getDaysBeforeIssueStale();
|
: this.options.daysBeforeIssueStale;
|
||||||
|
|
||||||
if (issue.state === 'closed') {
|
if (issue.state === 'closed') {
|
||||||
issueLogger.info(`Skipping this $$type because it is closed`);
|
issueLogger.info(`Skipping this $$type because it is closed`);
|
||||||
@ -227,7 +226,7 @@ export class IssuesProcessor {
|
|||||||
if (onlyLabels.length > 0) {
|
if (onlyLabels.length > 0) {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`The option ${issueLogger.createOptionLink(
|
`The option ${issueLogger.createOptionLink(
|
||||||
Option.OnlyLabels
|
issue.isPullRequest ? Option.OnlyPrLabels : Option.OnlyIssueLabels
|
||||||
)} was specified to only process issues and pull requests with all those labels (${LoggerService.cyan(
|
)} was specified to only process issues and pull requests with all those labels (${LoggerService.cyan(
|
||||||
onlyLabels.length
|
onlyLabels.length
|
||||||
)})`
|
)})`
|
||||||
@ -260,7 +259,7 @@ export class IssuesProcessor {
|
|||||||
} else {
|
} else {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`The option ${issueLogger.createOptionLink(
|
`The option ${issueLogger.createOptionLink(
|
||||||
Option.OnlyLabels
|
issue.isPullRequest ? Option.OnlyPrLabels : Option.OnlyIssueLabels
|
||||||
)} was not specified`
|
)} was not specified`
|
||||||
);
|
);
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
@ -345,7 +344,7 @@ export class IssuesProcessor {
|
|||||||
if (anyOfLabels.length > 0) {
|
if (anyOfLabels.length > 0) {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`The option ${issueLogger.createOptionLink(
|
`The option ${issueLogger.createOptionLink(
|
||||||
Option.AnyOfLabels
|
issue.isPullRequest ? Option.AnyOfPrLabels : Option.AnyOfIssueLabels
|
||||||
)} was specified to only process the issues and pull requests with one of those labels (${LoggerService.cyan(
|
)} was specified to only process the issues and pull requests with one of those labels (${LoggerService.cyan(
|
||||||
anyOfLabels.length
|
anyOfLabels.length
|
||||||
)})`
|
)})`
|
||||||
@ -377,7 +376,7 @@ export class IssuesProcessor {
|
|||||||
} else {
|
} else {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`The option ${issueLogger.createOptionLink(
|
`The option ${issueLogger.createOptionLink(
|
||||||
Option.AnyOfLabels
|
issue.isPullRequest ? Option.AnyOfPrLabels : Option.AnyOfIssueLabels
|
||||||
)} was not specified`
|
)} was not specified`
|
||||||
);
|
);
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
@ -461,7 +460,7 @@ export class IssuesProcessor {
|
|||||||
if (shouldMarkAsStale) {
|
if (shouldMarkAsStale) {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`This $$type should be marked as stale based on the option ${issueLogger.createOptionLink(
|
`This $$type should be marked as stale based on the option ${issueLogger.createOptionLink(
|
||||||
this._getDaysBeforeStaleUsedOptionName(issue)
|
IssuesProcessor._getDaysBeforeStaleUsedOptionName(issue)
|
||||||
)} (${LoggerService.cyan(daysBeforeStale)})`
|
)} (${LoggerService.cyan(daysBeforeStale)})`
|
||||||
);
|
);
|
||||||
await this._markStale(issue, staleMessage, staleLabel, skipMessage);
|
await this._markStale(issue, staleMessage, staleLabel, skipMessage);
|
||||||
@ -470,7 +469,7 @@ export class IssuesProcessor {
|
|||||||
} else {
|
} else {
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`This $$type should not be marked as stale based on the option ${issueLogger.createOptionLink(
|
`This $$type should not be marked as stale based on the option ${issueLogger.createOptionLink(
|
||||||
this._getDaysBeforeStaleUsedOptionName(issue)
|
IssuesProcessor._getDaysBeforeStaleUsedOptionName(issue)
|
||||||
)} (${LoggerService.cyan(daysBeforeStale)})`
|
)} (${LoggerService.cyan(daysBeforeStale)})`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -640,8 +639,8 @@ export class IssuesProcessor {
|
|||||||
);
|
);
|
||||||
|
|
||||||
const daysBeforeClose: number = issue.isPullRequest
|
const daysBeforeClose: number = issue.isPullRequest
|
||||||
? this._getDaysBeforePrClose()
|
? this.options.daysBeforePrClose
|
||||||
: this._getDaysBeforeIssueClose();
|
: this.options.daysBeforeIssueClose;
|
||||||
|
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`Days before $$type close: ${LoggerService.cyan(daysBeforeClose)}`
|
`Days before $$type close: ${LoggerService.cyan(daysBeforeClose)}`
|
||||||
@ -660,7 +659,7 @@ export class IssuesProcessor {
|
|||||||
|
|
||||||
issueLogger.info(
|
issueLogger.info(
|
||||||
`The option ${issueLogger.createOptionLink(
|
`The option ${issueLogger.createOptionLink(
|
||||||
this._getRemoveStaleWhenUpdatedUsedOptionName(issue)
|
IssuesProcessor._getRemoveStaleWhenUpdatedUsedOptionName(issue)
|
||||||
)} is: ${LoggerService.cyan(shouldRemoveStaleWhenUpdated)}`
|
)} is: ${LoggerService.cyan(shouldRemoveStaleWhenUpdated)}`
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -957,72 +956,26 @@ export class IssuesProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getDaysBeforeIssueStale(): number {
|
|
||||||
return isNaN(this.options.daysBeforeIssueStale)
|
|
||||||
? this.options.daysBeforeStale
|
|
||||||
: this.options.daysBeforeIssueStale;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getDaysBeforePrStale(): number {
|
|
||||||
return isNaN(this.options.daysBeforePrStale)
|
|
||||||
? this.options.daysBeforeStale
|
|
||||||
: this.options.daysBeforePrStale;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getDaysBeforeIssueClose(): number {
|
|
||||||
return isNaN(this.options.daysBeforeIssueClose)
|
|
||||||
? this.options.daysBeforeClose
|
|
||||||
: this.options.daysBeforeIssueClose;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getDaysBeforePrClose(): number {
|
|
||||||
return isNaN(this.options.daysBeforePrClose)
|
|
||||||
? this.options.daysBeforeClose
|
|
||||||
: this.options.daysBeforePrClose;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getOnlyLabels(issue: Issue): string {
|
private _getOnlyLabels(issue: Issue): string {
|
||||||
if (issue.isPullRequest) {
|
if (issue.isPullRequest) {
|
||||||
if (this.options.onlyPrLabels !== '') {
|
return this.options.onlyPrLabels;
|
||||||
return this.options.onlyPrLabels;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (this.options.onlyIssueLabels !== '') {
|
|
||||||
return this.options.onlyIssueLabels;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.options.onlyLabels;
|
return this.options.onlyIssueLabels;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getAnyOfLabels(issue: Issue): string {
|
private _getAnyOfLabels(issue: Issue): string {
|
||||||
if (issue.isPullRequest) {
|
if (issue.isPullRequest) {
|
||||||
if (this.options.anyOfPrLabels !== '') {
|
return this.options.anyOfPrLabels;
|
||||||
return this.options.anyOfPrLabels;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (this.options.anyOfIssueLabels !== '') {
|
|
||||||
return this.options.anyOfIssueLabels;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return this.options.anyOfLabels;
|
return this.options.anyOfIssueLabels;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _shouldRemoveStaleWhenUpdated(issue: Issue): boolean {
|
private _shouldRemoveStaleWhenUpdated(issue: Issue): boolean {
|
||||||
if (issue.isPullRequest) {
|
return issue.isPullRequest
|
||||||
if (isBoolean(this.options.removePrStaleWhenUpdated)) {
|
? this.options.removePrStaleWhenUpdated
|
||||||
return this.options.removePrStaleWhenUpdated;
|
: this.options.removeIssueStaleWhenUpdated;
|
||||||
}
|
|
||||||
|
|
||||||
return this.options.removeStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isBoolean(this.options.removeIssueStaleWhenUpdated)) {
|
|
||||||
return this.options.removeIssueStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.options.removeStaleWhenUpdated;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async _removeLabelsWhenUnstale(
|
private async _removeLabelsWhenUnstale(
|
||||||
@ -1141,56 +1094,24 @@ export class IssuesProcessor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static _getDaysBeforeStaleUsedOptionName(
|
||||||
|
issue: Readonly<Issue>
|
||||||
|
): Option.DaysBeforeIssueStale | Option.DaysBeforePrStale {
|
||||||
|
return issue.isPullRequest
|
||||||
|
? Option.DaysBeforePrStale
|
||||||
|
: Option.DaysBeforeIssueStale;
|
||||||
|
}
|
||||||
|
|
||||||
|
private static _getRemoveStaleWhenUpdatedUsedOptionName(
|
||||||
|
issue: Readonly<Issue>
|
||||||
|
): Option.RemovePrStaleWhenUpdated | Option.RemoveIssueStaleWhenUpdated {
|
||||||
|
return issue.isPullRequest
|
||||||
|
? Option.RemovePrStaleWhenUpdated
|
||||||
|
: Option.RemoveIssueStaleWhenUpdated;
|
||||||
|
}
|
||||||
|
|
||||||
private _consumeIssueOperation(issue: Readonly<Issue>): void {
|
private _consumeIssueOperation(issue: Readonly<Issue>): void {
|
||||||
this.operations.consumeOperation();
|
this.operations.consumeOperation();
|
||||||
issue.operations.consumeOperation();
|
issue.operations.consumeOperation();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getDaysBeforeStaleUsedOptionName(
|
|
||||||
issue: Readonly<Issue>
|
|
||||||
):
|
|
||||||
| Option.DaysBeforeStale
|
|
||||||
| Option.DaysBeforeIssueStale
|
|
||||||
| Option.DaysBeforePrStale {
|
|
||||||
return issue.isPullRequest
|
|
||||||
? this._getDaysBeforePrStaleUsedOptionName()
|
|
||||||
: this._getDaysBeforeIssueStaleUsedOptionName();
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getDaysBeforeIssueStaleUsedOptionName():
|
|
||||||
| Option.DaysBeforeStale
|
|
||||||
| Option.DaysBeforeIssueStale {
|
|
||||||
return isNaN(this.options.daysBeforeIssueStale)
|
|
||||||
? Option.DaysBeforeStale
|
|
||||||
: Option.DaysBeforeIssueStale;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getDaysBeforePrStaleUsedOptionName():
|
|
||||||
| Option.DaysBeforeStale
|
|
||||||
| Option.DaysBeforePrStale {
|
|
||||||
return isNaN(this.options.daysBeforePrStale)
|
|
||||||
? Option.DaysBeforeStale
|
|
||||||
: Option.DaysBeforePrStale;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _getRemoveStaleWhenUpdatedUsedOptionName(
|
|
||||||
issue: Readonly<Issue>
|
|
||||||
):
|
|
||||||
| Option.RemovePrStaleWhenUpdated
|
|
||||||
| Option.RemoveStaleWhenUpdated
|
|
||||||
| Option.RemoveIssueStaleWhenUpdated {
|
|
||||||
if (issue.isPullRequest) {
|
|
||||||
if (isBoolean(this.options.removePrStaleWhenUpdated)) {
|
|
||||||
return Option.RemovePrStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Option.RemoveStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isBoolean(this.options.removeIssueStaleWhenUpdated)) {
|
|
||||||
return Option.RemoveIssueStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Option.RemoveStaleWhenUpdated;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,297 +1,225 @@
|
|||||||
import deburr from 'lodash.deburr';
|
import deburr from 'lodash.deburr';
|
||||||
import {Option} from '../enums/option';
|
import {Option} from '../enums/option';
|
||||||
import {wordsToList} from '../functions/words-to-list';
|
import {wordsToList} from '../functions/words-to-list';
|
||||||
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
import {IIssuesProcessorOptions} from '../interfaces/issues-processor-options';
|
||||||
import {Issue} from './issue';
|
import {Issue} from './issue';
|
||||||
import {IssueLogger} from './loggers/issue-logger';
|
import {IssueLogger} from './loggers/issue-logger';
|
||||||
import {LoggerService} from '../services/logger.service';
|
import {LoggerService} from '../services/logger.service';
|
||||||
|
|
||||||
type CleanMilestone = string;
|
type CleanMilestone = string;
|
||||||
|
|
||||||
export class Milestones {
|
export class Milestones {
|
||||||
private static _cleanMilestone(milestone: Readonly<string>): CleanMilestone {
|
private static _cleanMilestone(milestone: Readonly<string>): CleanMilestone {
|
||||||
return deburr(milestone.toLowerCase());
|
return deburr(milestone.toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly _options: IIssuesProcessorOptions;
|
private readonly _options: IIssuesProcessorOptions;
|
||||||
private readonly _issue: Issue;
|
private readonly _issue: Issue;
|
||||||
private readonly _issueLogger: IssueLogger;
|
private readonly _issueLogger: IssueLogger;
|
||||||
|
|
||||||
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
constructor(options: Readonly<IIssuesProcessorOptions>, issue: Issue) {
|
||||||
this._options = options;
|
this._options = options;
|
||||||
this._issue = issue;
|
this._issue = issue;
|
||||||
this._issueLogger = new IssueLogger(issue);
|
this._issueLogger = new IssueLogger(issue);
|
||||||
}
|
}
|
||||||
|
|
||||||
shouldExemptMilestones(): boolean {
|
shouldExemptMilestones(): boolean {
|
||||||
if (!this._issue.milestone) {
|
if (!this._issue.milestone) {
|
||||||
this._issueLogger.info('This $$type has no milestone');
|
this._issueLogger.info('This $$type has no milestone');
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._shouldExemptAllMilestones()) {
|
if (this._shouldExemptAllMilestones()) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('└──'),
|
LoggerService.white('└──'),
|
||||||
'Skipping this $$type because it has a milestone'
|
'Skipping this $$type because it has a milestone'
|
||||||
);
|
);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
const exemptMilestones: string[] = this._getExemptMilestones();
|
const exemptMilestones: string[] = this._getExemptMilestones();
|
||||||
|
|
||||||
if (exemptMilestones.length === 0) {
|
if (exemptMilestones.length === 0) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`No milestone option was specified to skip the stale process for this $$type`
|
`No milestone option was specified to skip the stale process for this $$type`
|
||||||
);
|
);
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`Found ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
`Found ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
||||||
exemptMilestones.length > 1 ? 's' : ''
|
exemptMilestones.length > 1 ? 's' : ''
|
||||||
} that can exempt stale on this $$type`
|
} that can exempt stale on this $$type`
|
||||||
);
|
);
|
||||||
|
|
||||||
const hasExemptMilestone: boolean = exemptMilestones.some(
|
const hasExemptMilestone: boolean = exemptMilestones.some(
|
||||||
(exemptMilestone: Readonly<string>): boolean =>
|
(exemptMilestone: Readonly<string>): boolean =>
|
||||||
this._hasMilestone(exemptMilestone)
|
this._hasMilestone(exemptMilestone)
|
||||||
);
|
);
|
||||||
|
|
||||||
if (!hasExemptMilestone) {
|
if (!hasExemptMilestone) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
'No milestone on this $$type can exempt the stale process'
|
'No milestone on this $$type can exempt the stale process'
|
||||||
);
|
);
|
||||||
this._logSkip();
|
this._logSkip();
|
||||||
} else {
|
} else {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('└──'),
|
LoggerService.white('└──'),
|
||||||
'Skipping this $$type because it has an exempt milestone'
|
'Skipping this $$type because it has an exempt milestone'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
return hasExemptMilestone;
|
return hasExemptMilestone;
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getExemptMilestones(): string[] {
|
private _getExemptMilestones(): string[] {
|
||||||
return this._issue.isPullRequest
|
return this._issue.isPullRequest
|
||||||
? this._getExemptPullRequestMilestones()
|
? this._getExemptPullRequestMilestones()
|
||||||
: this._getExemptIssueMilestones();
|
: this._getExemptIssueMilestones();
|
||||||
}
|
}
|
||||||
|
|
||||||
private _getExemptIssueMilestones(): string[] {
|
private _getExemptIssueMilestones(): string[] {
|
||||||
if (this._options.exemptIssueMilestones === '') {
|
if (this._options.exemptIssueMilestones === '') {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
LoggerService.white('├──'),
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
Option.ExemptIssueMilestones
|
Option.ExemptIssueMilestones
|
||||||
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
||||||
);
|
);
|
||||||
|
|
||||||
if (this._options.exemptMilestones === '') {
|
return [];
|
||||||
this._issueLogger.info(
|
}
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
const exemptMilestones: string[] = wordsToList(
|
||||||
Option.ExemptMilestones
|
this._options.exemptIssueMilestones
|
||||||
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
);
|
||||||
);
|
|
||||||
|
this._issueLogger.info(
|
||||||
return [];
|
LoggerService.white('├──'),
|
||||||
}
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
|
Option.ExemptIssueMilestones
|
||||||
const exemptMilestones: string[] = wordsToList(
|
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
||||||
this._options.exemptMilestones
|
exemptMilestones.length === 1 ? '' : 's'
|
||||||
);
|
} can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('├──'),
|
return exemptMilestones;
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
}
|
||||||
Option.ExemptMilestones
|
|
||||||
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
private _getExemptPullRequestMilestones(): string[] {
|
||||||
exemptMilestones.length === 1 ? '' : 's'
|
if (this._options.exemptPrMilestones === '') {
|
||||||
} can skip the stale process for this $$type`
|
this._issueLogger.info(
|
||||||
);
|
LoggerService.white('├──'),
|
||||||
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
return exemptMilestones;
|
Option.ExemptPrMilestones
|
||||||
}
|
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
const exemptMilestones: string[] = wordsToList(
|
|
||||||
this._options.exemptIssueMilestones
|
return [];
|
||||||
);
|
}
|
||||||
|
|
||||||
this._issueLogger.info(
|
const exemptMilestones: string[] = wordsToList(
|
||||||
LoggerService.white('├──'),
|
this._options.exemptPrMilestones
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
);
|
||||||
Option.ExemptIssueMilestones
|
|
||||||
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
this._issueLogger.info(
|
||||||
exemptMilestones.length === 1 ? '' : 's'
|
LoggerService.white('├──'),
|
||||||
} can skip the stale process for this $$type`
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
);
|
Option.ExemptPrMilestones
|
||||||
|
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
||||||
return exemptMilestones;
|
exemptMilestones.length === 1 ? '' : 's'
|
||||||
}
|
} can skip the stale process for this $$type`
|
||||||
|
);
|
||||||
private _getExemptPullRequestMilestones(): string[] {
|
|
||||||
if (this._options.exemptPrMilestones === '') {
|
return exemptMilestones;
|
||||||
this._issueLogger.info(
|
}
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
private _hasMilestone(milestone: Readonly<string>): boolean {
|
||||||
Option.ExemptPrMilestones
|
if (!this._issue.milestone) {
|
||||||
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
return false;
|
||||||
);
|
}
|
||||||
|
|
||||||
if (this._options.exemptMilestones === '') {
|
const cleanMilestone: CleanMilestone =
|
||||||
this._issueLogger.info(
|
Milestones._cleanMilestone(milestone);
|
||||||
LoggerService.white('├──'),
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
const isSameMilestone: boolean =
|
||||||
Option.ExemptMilestones
|
cleanMilestone ===
|
||||||
)} is disabled. No specific milestone can skip the stale process for this $$type`
|
Milestones._cleanMilestone(this._issue.milestone.title);
|
||||||
);
|
|
||||||
|
if (isSameMilestone) {
|
||||||
return [];
|
this._issueLogger.info(
|
||||||
}
|
LoggerService.white('├──'),
|
||||||
|
`The milestone "${LoggerService.cyan(
|
||||||
const exemptMilestones: string[] = wordsToList(
|
milestone
|
||||||
this._options.exemptMilestones
|
)}" is set on this $$type and is an exempt milestone`
|
||||||
);
|
);
|
||||||
|
}
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('├──'),
|
return isSameMilestone;
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
}
|
||||||
Option.ExemptMilestones
|
|
||||||
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
private _shouldExemptAllMilestones(): boolean {
|
||||||
exemptMilestones.length === 1 ? '' : 's'
|
if (this._issue.milestone) {
|
||||||
} can skip the stale process for this $$type`
|
return this._issue.isPullRequest
|
||||||
);
|
? this._shouldExemptAllPullRequestMilestones()
|
||||||
|
: this._shouldExemptAllIssueMilestones();
|
||||||
return exemptMilestones;
|
}
|
||||||
}
|
|
||||||
|
return false;
|
||||||
const exemptMilestones: string[] = wordsToList(
|
}
|
||||||
this._options.exemptPrMilestones
|
|
||||||
);
|
private _shouldExemptAllIssueMilestones(): boolean {
|
||||||
|
if (this._options.exemptAllIssueMilestones) {
|
||||||
this._issueLogger.info(
|
this._issueLogger.info(
|
||||||
LoggerService.white('├──'),
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
Option.ExemptAllIssueMilestones
|
||||||
Option.ExemptPrMilestones
|
)} is enabled. Any milestone on this $$type will skip the stale process`
|
||||||
)} is set. ${LoggerService.cyan(exemptMilestones.length)} milestone${
|
);
|
||||||
exemptMilestones.length === 1 ? '' : 's'
|
|
||||||
} can skip the stale process for this $$type`
|
return true;
|
||||||
);
|
}
|
||||||
|
|
||||||
return exemptMilestones;
|
this._issueLogger.info(
|
||||||
}
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
|
Option.ExemptAllIssueMilestones
|
||||||
private _hasMilestone(milestone: Readonly<string>): boolean {
|
)} is disabled. Only some specific milestones on this $$type will skip the stale process`
|
||||||
if (!this._issue.milestone) {
|
);
|
||||||
return false;
|
|
||||||
}
|
return false;
|
||||||
|
}
|
||||||
const cleanMilestone: CleanMilestone =
|
|
||||||
Milestones._cleanMilestone(milestone);
|
private _shouldExemptAllPullRequestMilestones(): boolean {
|
||||||
|
if (this._options.exemptAllPrMilestones) {
|
||||||
const isSameMilestone: boolean =
|
this._issueLogger.info(
|
||||||
cleanMilestone ===
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
Milestones._cleanMilestone(this._issue.milestone.title);
|
Option.ExemptAllPrMilestones
|
||||||
|
)} is enabled. Any milestone on this $$type will skip the stale process`
|
||||||
if (isSameMilestone) {
|
);
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('├──'),
|
return true;
|
||||||
`The milestone "${LoggerService.cyan(
|
}
|
||||||
milestone
|
|
||||||
)}" is set on this $$type and is an exempt milestone`
|
this._issueLogger.info(
|
||||||
);
|
`The option ${this._issueLogger.createOptionLink(
|
||||||
}
|
Option.ExemptAllPrMilestones
|
||||||
|
)} is disabled. Only some specific milestones on this $$type will skip the stale process`
|
||||||
return isSameMilestone;
|
);
|
||||||
}
|
|
||||||
|
return false;
|
||||||
private _shouldExemptAllMilestones(): boolean {
|
}
|
||||||
if (this._issue.milestone) {
|
|
||||||
return this._issue.isPullRequest
|
private _logSkip(): void {
|
||||||
? this._shouldExemptAllPullRequestMilestones()
|
this._issueLogger.info(
|
||||||
: this._shouldExemptAllIssueMilestones();
|
LoggerService.white('└──'),
|
||||||
}
|
'Skip the milestones checks'
|
||||||
|
);
|
||||||
return false;
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private _shouldExemptAllIssueMilestones(): boolean {
|
|
||||||
if (this._options.exemptAllIssueMilestones === true) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllIssueMilestones
|
|
||||||
)} is enabled. Any milestone on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (this._options.exemptAllIssueMilestones === false) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllIssueMilestones
|
|
||||||
)} is disabled. Only some specific milestones on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._logExemptAllMilestonesOption();
|
|
||||||
|
|
||||||
return this._options.exemptAllMilestones;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _shouldExemptAllPullRequestMilestones(): boolean {
|
|
||||||
if (this._options.exemptAllPrMilestones === true) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllPrMilestones
|
|
||||||
)} is enabled. Any milestone on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
} else if (this._options.exemptAllPrMilestones === false) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllPrMilestones
|
|
||||||
)} is disabled. Only some specific milestones on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._logExemptAllMilestonesOption();
|
|
||||||
|
|
||||||
return this._options.exemptAllMilestones;
|
|
||||||
}
|
|
||||||
|
|
||||||
private _logExemptAllMilestonesOption(): void {
|
|
||||||
if (this._options.exemptAllMilestones) {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllMilestones
|
|
||||||
)} is enabled. Any milestone on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
this._issueLogger.info(
|
|
||||||
`The option ${this._issueLogger.createOptionLink(
|
|
||||||
Option.ExemptAllMilestones
|
|
||||||
)} is disabled. Only some specific milestones on this $$type will skip the stale process`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private _logSkip(): void {
|
|
||||||
this._issueLogger.info(
|
|
||||||
LoggerService.white('└──'),
|
|
||||||
'Skip the milestones checks'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -4,10 +4,8 @@ export enum Option {
|
|||||||
StalePrMessage = 'stale-pr-message',
|
StalePrMessage = 'stale-pr-message',
|
||||||
CloseIssueMessage = 'close-issue-message',
|
CloseIssueMessage = 'close-issue-message',
|
||||||
ClosePrMessage = 'close-pr-message',
|
ClosePrMessage = 'close-pr-message',
|
||||||
DaysBeforeStale = 'days-before-stale',
|
|
||||||
DaysBeforeIssueStale = 'days-before-issue-stale',
|
DaysBeforeIssueStale = 'days-before-issue-stale',
|
||||||
DaysBeforePrStale = 'days-before-pr-stale',
|
DaysBeforePrStale = 'days-before-pr-stale',
|
||||||
DaysBeforeClose = 'days-before-close',
|
|
||||||
DaysBeforeIssueClose = 'days-before-issue-close',
|
DaysBeforeIssueClose = 'days-before-issue-close',
|
||||||
DaysBeforePrClose = 'days-before-pr-close',
|
DaysBeforePrClose = 'days-before-pr-close',
|
||||||
StaleIssueLabel = 'stale-issue-label',
|
StaleIssueLabel = 'stale-issue-label',
|
||||||
@ -16,34 +14,28 @@ export enum Option {
|
|||||||
StalePrLabel = 'stale-pr-label',
|
StalePrLabel = 'stale-pr-label',
|
||||||
ClosePrLabel = 'close-pr-label',
|
ClosePrLabel = 'close-pr-label',
|
||||||
ExemptPrLabels = 'exempt-pr-labels',
|
ExemptPrLabels = 'exempt-pr-labels',
|
||||||
OnlyLabels = 'only-labels',
|
|
||||||
OnlyIssueLabels = 'only-issue-labels',
|
OnlyIssueLabels = 'only-issue-labels',
|
||||||
OnlyPrLabels = 'only-pr-labels',
|
OnlyPrLabels = 'only-pr-labels',
|
||||||
AnyOfLabels = 'any-of-labels',
|
AnyOfIssueLabels = 'any-of-issue-labels',
|
||||||
|
AnyOfPrLabels = 'any-of-pr-labels',
|
||||||
OperationsPerRun = 'operations-per-run',
|
OperationsPerRun = 'operations-per-run',
|
||||||
RemoveStaleWhenUpdated = 'remove-stale-when-updated',
|
|
||||||
RemoveIssueStaleWhenUpdated = 'remove-issue-stale-when-updated',
|
RemoveIssueStaleWhenUpdated = 'remove-issue-stale-when-updated',
|
||||||
RemovePrStaleWhenUpdated = 'remove-pr-stale-when-updated',
|
RemovePrStaleWhenUpdated = 'remove-pr-stale-when-updated',
|
||||||
DebugOnly = 'debug-only',
|
DebugOnly = 'debug-only',
|
||||||
Ascending = 'ascending',
|
Ascending = 'ascending',
|
||||||
DeleteBranch = 'delete-branch',
|
DeleteBranch = 'delete-branch',
|
||||||
StartDate = 'start-date',
|
StartDate = 'start-date',
|
||||||
ExemptMilestones = 'exempt-milestones',
|
|
||||||
ExemptIssueMilestones = 'exempt-issue-milestones',
|
ExemptIssueMilestones = 'exempt-issue-milestones',
|
||||||
ExemptPrMilestones = 'exempt-pr-milestones',
|
ExemptPrMilestones = 'exempt-pr-milestones',
|
||||||
ExemptAllMilestones = 'exempt-all-milestones',
|
|
||||||
ExemptAllIssueMilestones = 'exempt-all-issue-milestones',
|
ExemptAllIssueMilestones = 'exempt-all-issue-milestones',
|
||||||
ExemptAllPrMilestones = 'exempt-all-pr-milestones',
|
ExemptAllPrMilestones = 'exempt-all-pr-milestones',
|
||||||
ExemptAssignees = 'exempt-assignees',
|
|
||||||
ExemptIssueAssignees = 'exempt-issue-assignees',
|
ExemptIssueAssignees = 'exempt-issue-assignees',
|
||||||
ExemptPrAssignees = 'exempt-pr-assignees',
|
ExemptPrAssignees = 'exempt-pr-assignees',
|
||||||
ExemptAllAssignees = 'exempt-all-assignees',
|
|
||||||
ExemptAllIssueAssignees = 'exempt-all-issue-assignees',
|
ExemptAllIssueAssignees = 'exempt-all-issue-assignees',
|
||||||
ExemptAllPrAssignees = 'exempt-all-pr-assignees',
|
ExemptAllPrAssignees = 'exempt-all-pr-assignees',
|
||||||
EnableStatistics = 'enable-statistics',
|
EnableStatistics = 'enable-statistics',
|
||||||
LabelsToRemoveWhenUnstale = 'labels-to-remove-when-unstale',
|
LabelsToRemoveWhenUnstale = 'labels-to-remove-when-unstale',
|
||||||
LabelsToAddWhenUnstale = 'labels-to-add-when-unstale',
|
LabelsToAddWhenUnstale = 'labels-to-add-when-unstale',
|
||||||
IgnoreUpdates = 'ignore-updates',
|
|
||||||
IgnoreIssueUpdates = 'ignore-issue-updates',
|
IgnoreIssueUpdates = 'ignore-issue-updates',
|
||||||
IgnorePrUpdates = 'ignore-pr-updates',
|
IgnorePrUpdates = 'ignore-pr-updates',
|
||||||
ExemptDraftPr = 'exempt-draft-pr'
|
ExemptDraftPr = 'exempt-draft-pr'
|
||||||
|
@ -6,49 +6,39 @@ export interface IIssuesProcessorOptions {
|
|||||||
stalePrMessage: string;
|
stalePrMessage: string;
|
||||||
closeIssueMessage: string;
|
closeIssueMessage: string;
|
||||||
closePrMessage: string;
|
closePrMessage: string;
|
||||||
daysBeforeStale: number;
|
daysBeforeIssueStale: number;
|
||||||
daysBeforeIssueStale: number; // Could be NaN
|
daysBeforePrStale: number;
|
||||||
daysBeforePrStale: number; // Could be NaN
|
daysBeforeIssueClose: number;
|
||||||
daysBeforeClose: number;
|
daysBeforePrClose: number;
|
||||||
daysBeforeIssueClose: number; // Could be NaN
|
|
||||||
daysBeforePrClose: number; // Could be NaN
|
|
||||||
staleIssueLabel: string;
|
staleIssueLabel: string;
|
||||||
closeIssueLabel: string;
|
closeIssueLabel: string;
|
||||||
exemptIssueLabels: string;
|
exemptIssueLabels: string;
|
||||||
stalePrLabel: string;
|
stalePrLabel: string;
|
||||||
closePrLabel: string;
|
closePrLabel: string;
|
||||||
exemptPrLabels: string;
|
exemptPrLabels: string;
|
||||||
onlyLabels: string;
|
|
||||||
onlyIssueLabels: string;
|
onlyIssueLabels: string;
|
||||||
onlyPrLabels: string;
|
onlyPrLabels: string;
|
||||||
anyOfLabels: string;
|
|
||||||
anyOfIssueLabels: string;
|
anyOfIssueLabels: string;
|
||||||
anyOfPrLabels: string;
|
anyOfPrLabels: string;
|
||||||
operationsPerRun: number;
|
operationsPerRun: number;
|
||||||
removeStaleWhenUpdated: boolean;
|
removeIssueStaleWhenUpdated: boolean;
|
||||||
removeIssueStaleWhenUpdated: boolean | undefined;
|
removePrStaleWhenUpdated: boolean;
|
||||||
removePrStaleWhenUpdated: boolean | undefined;
|
|
||||||
debugOnly: boolean;
|
debugOnly: boolean;
|
||||||
ascending: boolean;
|
ascending: boolean;
|
||||||
deleteBranch: boolean;
|
deleteBranch: boolean;
|
||||||
startDate: IsoOrRfcDateString | undefined; // Should be ISO 8601 or RFC 2822
|
startDate: IsoOrRfcDateString | undefined; // Should be ISO 8601 or RFC 2822
|
||||||
exemptMilestones: string;
|
|
||||||
exemptIssueMilestones: string;
|
exemptIssueMilestones: string;
|
||||||
exemptPrMilestones: string;
|
exemptPrMilestones: string;
|
||||||
exemptAllMilestones: boolean;
|
exemptAllIssueMilestones: boolean;
|
||||||
exemptAllIssueMilestones: boolean | undefined;
|
exemptAllPrMilestones: boolean;
|
||||||
exemptAllPrMilestones: boolean | undefined;
|
|
||||||
exemptAssignees: string;
|
|
||||||
exemptIssueAssignees: string;
|
exemptIssueAssignees: string;
|
||||||
exemptPrAssignees: string;
|
exemptPrAssignees: string;
|
||||||
exemptAllAssignees: boolean;
|
exemptAllIssueAssignees: boolean;
|
||||||
exemptAllIssueAssignees: boolean | undefined;
|
exemptAllPrAssignees: boolean;
|
||||||
exemptAllPrAssignees: boolean | undefined;
|
|
||||||
enableStatistics: boolean;
|
enableStatistics: boolean;
|
||||||
labelsToRemoveWhenUnstale: string;
|
labelsToRemoveWhenUnstale: string;
|
||||||
labelsToAddWhenUnstale: string;
|
labelsToAddWhenUnstale: string;
|
||||||
ignoreUpdates: boolean;
|
ignoreIssueUpdates: boolean;
|
||||||
ignoreIssueUpdates: boolean | undefined;
|
ignorePrUpdates: boolean;
|
||||||
ignorePrUpdates: boolean | undefined;
|
|
||||||
exemptDraftPr: boolean;
|
exemptDraftPr: boolean;
|
||||||
}
|
}
|
||||||
|
81
src/main.ts
81
src/main.ts
@ -28,39 +28,36 @@ function _getAndValidateArgs(): IIssuesProcessorOptions {
|
|||||||
stalePrMessage: core.getInput('stale-pr-message'),
|
stalePrMessage: core.getInput('stale-pr-message'),
|
||||||
closeIssueMessage: core.getInput('close-issue-message'),
|
closeIssueMessage: core.getInput('close-issue-message'),
|
||||||
closePrMessage: core.getInput('close-pr-message'),
|
closePrMessage: core.getInput('close-pr-message'),
|
||||||
daysBeforeStale: parseInt(
|
daysBeforeIssueStale: parseInt(
|
||||||
core.getInput('days-before-stale', {required: true})
|
core.getInput('days-before-issue-stale', {required: true})
|
||||||
),
|
),
|
||||||
daysBeforeIssueStale: parseInt(core.getInput('days-before-issue-stale')),
|
daysBeforePrStale: parseInt(
|
||||||
daysBeforePrStale: parseInt(core.getInput('days-before-pr-stale')),
|
core.getInput('days-before-pr-stale', {required: true})
|
||||||
daysBeforeClose: parseInt(
|
),
|
||||||
core.getInput('days-before-close', {required: true})
|
daysBeforeIssueClose: parseInt(
|
||||||
|
core.getInput('days-before-issue-close', {required: true})
|
||||||
|
),
|
||||||
|
daysBeforePrClose: parseInt(
|
||||||
|
core.getInput('days-before-pr-close', {required: true})
|
||||||
),
|
),
|
||||||
daysBeforeIssueClose: parseInt(core.getInput('days-before-issue-close')),
|
|
||||||
daysBeforePrClose: parseInt(core.getInput('days-before-pr-close')),
|
|
||||||
staleIssueLabel: core.getInput('stale-issue-label', {required: true}),
|
staleIssueLabel: core.getInput('stale-issue-label', {required: true}),
|
||||||
closeIssueLabel: core.getInput('close-issue-label'),
|
closeIssueLabel: core.getInput('close-issue-label'),
|
||||||
exemptIssueLabels: core.getInput('exempt-issue-labels'),
|
exemptIssueLabels: core.getInput('exempt-issue-labels'),
|
||||||
stalePrLabel: core.getInput('stale-pr-label', {required: true}),
|
stalePrLabel: core.getInput('stale-pr-label', {required: true}),
|
||||||
closePrLabel: core.getInput('close-pr-label'),
|
closePrLabel: core.getInput('close-pr-label'),
|
||||||
exemptPrLabels: core.getInput('exempt-pr-labels'),
|
exemptPrLabels: core.getInput('exempt-pr-labels'),
|
||||||
onlyLabels: core.getInput('only-labels'),
|
|
||||||
onlyIssueLabels: core.getInput('only-issue-labels'),
|
onlyIssueLabels: core.getInput('only-issue-labels'),
|
||||||
onlyPrLabels: core.getInput('only-pr-labels'),
|
onlyPrLabels: core.getInput('only-pr-labels'),
|
||||||
anyOfLabels: core.getInput('any-of-labels'),
|
|
||||||
anyOfIssueLabels: core.getInput('any-of-issue-labels'),
|
anyOfIssueLabels: core.getInput('any-of-issue-labels'),
|
||||||
anyOfPrLabels: core.getInput('any-of-pr-labels'),
|
anyOfPrLabels: core.getInput('any-of-pr-labels'),
|
||||||
operationsPerRun: parseInt(
|
operationsPerRun: parseInt(
|
||||||
core.getInput('operations-per-run', {required: true})
|
core.getInput('operations-per-run', {required: true})
|
||||||
),
|
),
|
||||||
removeStaleWhenUpdated: !(
|
removeIssueStaleWhenUpdated: !(
|
||||||
core.getInput('remove-stale-when-updated') === 'false'
|
core.getInput('remove-issue-stale-when-updated') === 'false'
|
||||||
),
|
),
|
||||||
removeIssueStaleWhenUpdated: _toOptionalBoolean(
|
removePrStaleWhenUpdated: !(
|
||||||
'remove-issue-stale-when-updated'
|
core.getInput('remove-pr-stale-when-updated') === 'false'
|
||||||
),
|
|
||||||
removePrStaleWhenUpdated: _toOptionalBoolean(
|
|
||||||
'remove-pr-stale-when-updated'
|
|
||||||
),
|
),
|
||||||
debugOnly: core.getInput('debug-only') === 'true',
|
debugOnly: core.getInput('debug-only') === 'true',
|
||||||
ascending: core.getInput('ascending') === 'true',
|
ascending: core.getInput('ascending') === 'true',
|
||||||
@ -69,30 +66,29 @@ function _getAndValidateArgs(): IIssuesProcessorOptions {
|
|||||||
core.getInput('start-date') !== ''
|
core.getInput('start-date') !== ''
|
||||||
? core.getInput('start-date')
|
? core.getInput('start-date')
|
||||||
: undefined,
|
: undefined,
|
||||||
exemptMilestones: core.getInput('exempt-milestones'),
|
|
||||||
exemptIssueMilestones: core.getInput('exempt-issue-milestones'),
|
exemptIssueMilestones: core.getInput('exempt-issue-milestones'),
|
||||||
exemptPrMilestones: core.getInput('exempt-pr-milestones'),
|
exemptPrMilestones: core.getInput('exempt-pr-milestones'),
|
||||||
exemptAllMilestones: core.getInput('exempt-all-milestones') === 'true',
|
exemptAllIssueMilestones:
|
||||||
exemptAllIssueMilestones: _toOptionalBoolean('exempt-all-issue-milestones'),
|
core.getInput('exempt-all-issue-milestones') === 'true',
|
||||||
exemptAllPrMilestones: _toOptionalBoolean('exempt-all-pr-milestones'),
|
exemptAllPrMilestones: core.getInput('exempt-all-pr-milestones') === 'true',
|
||||||
exemptAssignees: core.getInput('exempt-assignees'),
|
|
||||||
exemptIssueAssignees: core.getInput('exempt-issue-assignees'),
|
exemptIssueAssignees: core.getInput('exempt-issue-assignees'),
|
||||||
exemptPrAssignees: core.getInput('exempt-pr-assignees'),
|
exemptPrAssignees: core.getInput('exempt-pr-assignees'),
|
||||||
exemptAllAssignees: core.getInput('exempt-all-assignees') === 'true',
|
exemptAllIssueAssignees:
|
||||||
exemptAllIssueAssignees: _toOptionalBoolean('exempt-all-issue-assignees'),
|
core.getInput('exempt-all-issue-assignees') === 'true',
|
||||||
exemptAllPrAssignees: _toOptionalBoolean('exempt-all-pr-assignees'),
|
exemptAllPrAssignees: core.getInput('exempt-all-pr-assignees') === 'true',
|
||||||
enableStatistics: core.getInput('enable-statistics') === 'true',
|
enableStatistics: core.getInput('enable-statistics') === 'true',
|
||||||
labelsToRemoveWhenUnstale: core.getInput('labels-to-remove-when-unstale'),
|
labelsToRemoveWhenUnstale: core.getInput('labels-to-remove-when-unstale'),
|
||||||
labelsToAddWhenUnstale: core.getInput('labels-to-add-when-unstale'),
|
labelsToAddWhenUnstale: core.getInput('labels-to-add-when-unstale'),
|
||||||
ignoreUpdates: core.getInput('ignore-updates') === 'true',
|
ignoreIssueUpdates: core.getInput('ignore-issue-updates') === 'true',
|
||||||
ignoreIssueUpdates: _toOptionalBoolean('ignore-issue-updates'),
|
ignorePrUpdates: core.getInput('ignore-pr-updates') === 'true',
|
||||||
ignorePrUpdates: _toOptionalBoolean('ignore-pr-updates'),
|
|
||||||
exemptDraftPr: core.getInput('exempt-draft-pr') === 'true'
|
exemptDraftPr: core.getInput('exempt-draft-pr') === 'true'
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const numberInput of [
|
for (const numberInput of [
|
||||||
'days-before-stale',
|
'days-before-issue-stale',
|
||||||
'days-before-close',
|
'days-before-pr-stale',
|
||||||
|
'days-before-issue-close',
|
||||||
|
'days-before-pr-close',
|
||||||
'operations-per-run'
|
'operations-per-run'
|
||||||
]) {
|
]) {
|
||||||
if (isNaN(parseInt(core.getInput(numberInput)))) {
|
if (isNaN(parseInt(core.getInput(numberInput)))) {
|
||||||
@ -124,29 +120,4 @@ async function processOutput(
|
|||||||
core.setOutput('closed-issues-prs', JSON.stringify(closedIssues));
|
core.setOutput('closed-issues-prs', JSON.stringify(closedIssues));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @description
|
|
||||||
* From an argument name, get the value as an optional boolean
|
|
||||||
* This is very useful for all the arguments that override others
|
|
||||||
* It will allow us to easily use the original one when the return value is `undefined`
|
|
||||||
* Which is different from `true` or `false` that consider the argument as set
|
|
||||||
*
|
|
||||||
* @param {Readonly<string>} argumentName The name of the argument to check
|
|
||||||
*
|
|
||||||
* @returns {boolean | undefined} The value matching the given argument name
|
|
||||||
*/
|
|
||||||
function _toOptionalBoolean(
|
|
||||||
argumentName: Readonly<string>
|
|
||||||
): boolean | undefined {
|
|
||||||
const argument: string = core.getInput(argumentName);
|
|
||||||
|
|
||||||
if (argument === 'true') {
|
|
||||||
return true;
|
|
||||||
} else if (argument === 'false') {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
void _run();
|
void _run();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user