Fix an issue where the bot doesn't ignore its own comments (#73)
This commit is contained in:
parent
5ce6b77f2c
commit
96b682d29f
|
@ -493,7 +493,7 @@ test('stale label should be removed if a comment was added to a stale issue', as
|
||||||
const processor = new IssueProcessor(
|
const processor = new IssueProcessor(
|
||||||
opts,
|
opts,
|
||||||
async p => (p == 1 ? TestIssueList : []),
|
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()
|
async (issue, label) => new Date().toDateString()
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -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);
|
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 () => {
|
test('stale issues should not be closed until after the closed number of days', async () => {
|
||||||
let lastUpdate = new Date();
|
let lastUpdate = new Date();
|
||||||
lastUpdate.setDate(lastUpdate.getDate() - 5);
|
lastUpdate.setDate(lastUpdate.getDate() - 5);
|
||||||
|
|
|
@ -8570,8 +8570,9 @@ class IssueProcessor {
|
||||||
this.operationsLeft -= 1;
|
this.operationsLeft -= 1;
|
||||||
// find any comments since the stale label
|
// find any comments since the stale label
|
||||||
const comments = yield this.listIssueComments(issue.number, sinceDate);
|
const comments = yield this.listIssueComments(issue.number, sinceDate);
|
||||||
// if there are any user comments returned, issue is not stale anymore
|
// 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').length > 0;
|
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
|
// grab comments for an issue since a given date
|
||||||
|
|
|
@ -16,6 +16,7 @@ export interface Issue {
|
||||||
|
|
||||||
export interface User {
|
export interface User {
|
||||||
type: string;
|
type: string;
|
||||||
|
login: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface Comment {
|
export interface Comment {
|
||||||
|
@ -249,8 +250,14 @@ export class IssueProcessor {
|
||||||
// find any comments since the stale label
|
// find any comments since the stale label
|
||||||
const comments = await this.listIssueComments(issue.number, sinceDate);
|
const comments = await this.listIssueComments(issue.number, sinceDate);
|
||||||
|
|
||||||
// if there are any user comments returned, issue is not stale anymore
|
// 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').length > 0;
|
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
|
// grab comments for an issue since a given date
|
||||||
|
|
Loading…
Reference in New Issue