Skip to content

Commit

Permalink
Fix an issue where the bot doesn't ignore its own comments (#73)
Browse files Browse the repository at this point in the history
  • Loading branch information
hross authored May 19, 2020
1 parent 5ce6b77 commit 96b682d
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 5 deletions.
32 changes: 31 additions & 1 deletion __tests__/main.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -493,7 +493,7 @@ test('stale label should be removed if a comment was added to a stale issue', as
const processor = new IssueProcessor(
opts,
async p => (p == 1 ? TestIssueList : []),
async (num, dt) => [{user: {type: 'User'}}], // return a fake comment so indicate there was an update
async (num, dt) => [{user: {login: 'notme', type: 'User'}}], // return a fake comment to indicate there was an update
async (issue, label) => new Date().toDateString()
);

Expand All @@ -505,6 +505,36 @@ test('stale label should be removed if a comment was added to a stale issue', as
expect(processor.removedLabelIssues.length).toEqual(1);
});

test('stale label should not be removed if a comment was added by the bot (and the issue should be closed)', async () => {
github.context.actor = 'abot';
const TestIssueList: Issue[] = [
generateIssue(
1,
'An issue that should stay stale',
'2020-01-01T17:00:00Z',
false,
['Stale']
)
];

const opts = DefaultProcessorOptions;
opts.removeStaleWhenUpdated = true;

const processor = new IssueProcessor(
opts,
async p => (p == 1 ? TestIssueList : []),
async (num, dt) => [{user: {login: 'abot', type: 'User'}}], // return a fake comment to indicate there was an update by the bot
async (issue, label) => new Date().toDateString()
);

// process our fake issue list
await processor.processIssues(1);

expect(processor.closedIssues.length).toEqual(1);
expect(processor.staleIssues.length).toEqual(0);
expect(processor.removedLabelIssues.length).toEqual(0);
});

test('stale issues should not be closed until after the closed number of days', async () => {
let lastUpdate = new Date();
lastUpdate.setDate(lastUpdate.getDate() - 5);
Expand Down
5 changes: 3 additions & 2 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -8570,8 +8570,9 @@ class IssueProcessor {
this.operationsLeft -= 1;
// find any comments since the stale label
const comments = yield this.listIssueComments(issue.number, sinceDate);
// if there are any user comments returned, issue is not stale anymore
return comments.filter(comment => comment.user.type === 'User').length > 0;
// if there are any user comments returned, and they were not by this bot, the issue is not stale anymore
return (comments.filter(comment => comment.user.type === 'User' &&
comment.user.login !== github.context.actor).length > 0);
});
}
// grab comments for an issue since a given date
Expand Down
11 changes: 9 additions & 2 deletions src/IssueProcessor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ export interface Issue {

export interface User {
type: string;
login: string;
}

export interface Comment {
Expand Down Expand Up @@ -249,8 +250,14 @@ export class IssueProcessor {
// find any comments since the stale label
const comments = await this.listIssueComments(issue.number, sinceDate);

// if there are any user comments returned, issue is not stale anymore
return comments.filter(comment => comment.user.type === 'User').length > 0;
// if there are any user comments returned, and they were not by this bot, the issue is not stale anymore
return (
comments.filter(
comment =>
comment.user.type === 'User' &&
comment.user.login !== github.context.actor
).length > 0
);
}

// grab comments for an issue since a given date
Expand Down

0 comments on commit 96b682d

Please sign in to comment.