Fixed should be stale condition (#304)
* Fixed should be stale condition When different stale period is used for issues and pull requests, this code uses wrong one. This was probably missed in https://github.com/actions/stale/pull/224 Fixes #299 * Add tests for #299 Co-authored-by: Geoffrey Testelin <geoffrey.testelin@gmail.com>
This commit is contained in:
parent
079c368275
commit
7164109781
|
@ -2262,3 +2262,201 @@ test('a PR with an exempted milestone and with an exempted issue milestone will
|
|||
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 () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforeIssueStale: 3
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'An issue with no label',
|
||||
issueDate.toDateString(),
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(0);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
||||
test('processing an issue opened since 2 days and with the option "daysBeforeIssueStale" at 2 will make it stale', async () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforeIssueStale: 2
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'An issue with no label',
|
||||
issueDate.toDateString(),
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(1);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
||||
test('processing an issue opened since 2 days and with the option "daysBeforeIssueStale" at 1 will make it stale', async () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforeIssueStale: 1
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'An issue with no label',
|
||||
issueDate.toDateString(),
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(1);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
||||
test('processing a pull request opened since 2 days and with the option "daysBeforePrStale" at 3 will not make it stale', async () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforePrStale: 3
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'A pull request with no label',
|
||||
issueDate.toDateString(),
|
||||
issueDate.toDateString(),
|
||||
true
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(0);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
||||
test('processing a pull request opened since 2 days and with the option "daysBeforePrStale" at 2 will make it stale', async () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforePrStale: 2
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'A pull request with no label',
|
||||
issueDate.toDateString(),
|
||||
issueDate.toDateString(),
|
||||
true
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(1);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
||||
test('processing a pull request opened since 2 days and with the option "daysBeforePrStale" at 1 will make it stale', async () => {
|
||||
expect.assertions(2);
|
||||
const opts: IssueProcessorOptions = {
|
||||
...DefaultProcessorOptions,
|
||||
daysBeforeStale: 10,
|
||||
daysBeforePrStale: 1
|
||||
};
|
||||
let issueDate = new Date();
|
||||
issueDate.setDate(issueDate.getDate() - 2);
|
||||
const TestIssueList: Issue[] = [
|
||||
generateIssue(
|
||||
opts,
|
||||
1,
|
||||
'A pull request with no label',
|
||||
issueDate.toDateString(),
|
||||
issueDate.toDateString(),
|
||||
true
|
||||
)
|
||||
];
|
||||
const processor = new IssueProcessor(
|
||||
opts,
|
||||
async () => 'abot',
|
||||
async p => (p == 1 ? TestIssueList : []),
|
||||
async (num, dt) => [],
|
||||
async (issue, label) => new Date().toDateString()
|
||||
);
|
||||
|
||||
// process our fake issue list
|
||||
await processor.processIssues(1);
|
||||
|
||||
expect(processor.staleIssues.length).toEqual(1);
|
||||
expect(processor.closedIssues.length).toEqual(0);
|
||||
});
|
||||
|
|
|
@ -273,7 +273,7 @@ export class IssueProcessor {
|
|||
// should this issue be marked stale?
|
||||
const shouldBeStale = !IssueProcessor._updatedSince(
|
||||
issue.updated_at,
|
||||
this.options.daysBeforeStale
|
||||
daysBeforeStale
|
||||
);
|
||||
|
||||
// determine if this issue needs to be marked stale first
|
||||
|
|
Loading…
Reference in New Issue