Remove the stale label when labeled with an exempt one (#268)

* refactor(issue): create a dedicated function to remove the stale label

* refactor: prefix private methods with _

to make it consistent with others methods

* feat(label): remove the stale label when labeled with an exempt one

closes #136

* chore: fix logger issues due to rebase

@hross I think there is a room for improvement regarding the class creation of the issue logger (code duplication) but I do not see how to do it without changing a lot of stuff; do you have an idea?

* test: use strict equal and move the new test in a more logical position

* docs(readme): fix parsing error of the default values in the table

prettier was not liking the previous syntax
This commit is contained in:
Geoffrey Testelin
2021-01-17 02:13:19 +01:00
committed by GitHub
parent 3f95874437
commit 7f340a46f3
3 changed files with 112 additions and 58 deletions

View File

@@ -797,6 +797,7 @@ test('stale locked prs will not be closed', async () => {
});
test('exempt issue labels will not be marked stale', async () => {
expect.assertions(3);
const TestIssueList: Issue[] = [
generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, [
'Exempt'
@@ -817,8 +818,9 @@ test('exempt issue labels will not be marked stale', async () => {
// process our fake issue list
await processor.processIssues(1);
expect(processor.staleIssues.length).toEqual(0);
expect(processor.closedIssues.length).toEqual(0);
expect(processor.staleIssues.length).toStrictEqual(0);
expect(processor.closedIssues.length).toStrictEqual(0);
expect(processor.removedLabelIssues.length).toStrictEqual(0);
});
test('exempt issue labels will not be marked stale (multi issue label with spaces)', async () => {
@@ -892,6 +894,42 @@ test('exempt pr labels will not be marked stale', async () => {
expect(processor.staleIssues.length).toEqual(2); // PR should get processed even though it has an exempt **issue** label
});
test('exempt issue labels will not be marked stale and will remove the existing stale label', async () => {
expect.assertions(3);
const TestIssueList: Issue[] = [
generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, [
'Exempt',
'Stale'
])
];
const opts = {...DefaultProcessorOptions};
opts.exemptIssueLabels = 'Exempt';
const processor = new IssueProcessor(
opts,
async () => 'abot',
async p => (p == 1 ? TestIssueList : []),
async (num: number, dt: string) => [
{
user: {
login: 'notme',
type: 'User'
}
}
], // return a fake comment to indicate there was an update
async (issue: Issue, label: string) => 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(1);
});
test('stale issues should not be closed if days is set to -1', async () => {
const TestIssueList: Issue[] = [
generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, [
@@ -1150,7 +1188,7 @@ test('skips stale message on issues when skip-stale-issue-message is set', async
);
// for sake of testing, mocking private function
const markSpy = jest.spyOn(processor as any, 'markStale');
const markSpy = jest.spyOn(processor as any, '_markStale');
await processor.processIssues(1);
@@ -1195,7 +1233,7 @@ test('skips stale message on prs when skip-stale-pr-message is set', async () =>
);
// for sake of testing, mocking private function
const markSpy = jest.spyOn(processor as any, 'markStale');
const markSpy = jest.spyOn(processor as any, '_markStale');
await processor.processIssues(1);