From 6e742474aab98ac750a008b75b9df0dbf8d66462 Mon Sep 17 00:00:00 2001 From: Ross Brodbeck Date: Thu, 16 Apr 2020 13:51:24 -0400 Subject: [PATCH] Add more tests --- __tests__/main.test.ts | 89 +++++++++++++++++++++++++++++++++++++----- dist/index.js | 8 ++-- src/IssueProcessor.ts | 2 +- 3 files changed, 85 insertions(+), 14 deletions(-) diff --git a/__tests__/main.test.ts b/__tests__/main.test.ts index 862c31da..e948c4fe 100644 --- a/__tests__/main.test.ts +++ b/__tests__/main.test.ts @@ -57,9 +57,8 @@ test('processing an issue with no label will make it stale', async () => { generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z') ]; - const processor = new IssueProcessor( - DefaultProcessorOptions, - async (p) => p == 1 ? TestIssueList : [] + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] ); // process our fake issue list @@ -74,9 +73,24 @@ test('processing a stale issue will close it', async () => { generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, ['Stale']) ]; - const processor = new IssueProcessor( - DefaultProcessorOptions, - async (p) => p == 1 ? TestIssueList : [] + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] + ); + + // process our fake issue list + await processor.processIssues(1); + + expect(processor.staleIssues.length).toEqual(0); + expect(processor.closedIssues.length).toEqual(1); +}); + +test('processing a stale PR will close it', async () => { + const TestIssueList: Issue[] = [ + generateIssue(1, 'My first PR', '2020-01-01T17:00:00Z', true, ['Stale']) + ]; + + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] ); // process our fake issue list @@ -96,9 +110,8 @@ test('exempt issue labels will not be marked stale', async () => { let opts = DefaultProcessorOptions; opts.exemptIssueLabels = 'Exempt'; - const processor = new IssueProcessor( - DefaultProcessorOptions, - async (p) => p == 1 ? TestIssueList : [] + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] ); // process our fake issue list @@ -107,3 +120,61 @@ test('exempt issue labels will not be marked stale', async () => { expect(processor.staleIssues.length).toEqual(0); expect(processor.closedIssues.length).toEqual(0); }); + +test('exempt issue labels will not be marked stale (multi issue label with spaces)', async () => { + const TestIssueList: Issue[] = [ + generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, ['Cool']) + ]; + + let opts = DefaultProcessorOptions; + opts.exemptIssueLabels = 'Exempt, Cool, None'; + + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] + ); + + // process our fake issue list + await processor.processIssues(1); + + expect(processor.staleIssues.length).toEqual(0); + expect(processor.closedIssues.length).toEqual(0); +}); + +test('exempt issue labels will not be marked stale (multi issue label)', async () => { + const TestIssueList: Issue[] = [ + generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, ['Cool']) + ]; + + let opts = DefaultProcessorOptions; + opts.exemptIssueLabels = 'Exempt,Cool,None'; + + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] + ); + + // process our fake issue list + await processor.processIssues(1); + + expect(processor.staleIssues.length).toEqual(0); + expect(processor.closedIssues.length).toEqual(0); +}); + +test('exempt pr labels will not be marked stale', async () => { + const TestIssueList: Issue[] = [ + generateIssue(1, 'My first issue', '2020-01-01T17:00:00Z', false, ['Cool']), + generateIssue(2, 'My first PR', '2020-01-01T17:00:00Z', true, ['Cool']), + generateIssue(3, 'Another issue', '2020-01-01T17:00:00Z', false) + ]; + + let opts = DefaultProcessorOptions; + opts.exemptIssueLabels = 'Cool'; + + const processor = new IssueProcessor(DefaultProcessorOptions, async p => + p == 1 ? TestIssueList : [] + ); + + // process our fake issue list + await processor.processIssues(1); + + expect(processor.staleIssues.length).toEqual(2); // PR should get processed even though it has an exempt **issue** label +}); diff --git a/dist/index.js b/dist/index.js index 887b9876..eec4ac4d 100644 --- a/dist/index.js +++ b/dist/index.js @@ -8457,12 +8457,12 @@ class IssueProcessor { if (getIssues) { this.getIssues = getIssues; } + if (this.options.debugOnly) { + core.warning('Executing in debug mode. Debug output will be written but no issues will be processed.'); + } } processIssues(page = 1) { return __awaiter(this, void 0, void 0, function* () { - if (this.options.debugOnly) { - core.warning('Executing in debug mode. Debug output will be written but no issues will be processed.'); - } if (this.operationsLeft <= 0) { core.warning('Reached max number of operations to process. Exiting.'); return 0; @@ -8582,7 +8582,7 @@ class IssueProcessor { // In this case, we'd prefer to just return an empty array indicating no labels if (!s.length) return []; - return s.split(','); + return s.split(',').map(l => l.trim()); } } exports.IssueProcessor = IssueProcessor; diff --git a/src/IssueProcessor.ts b/src/IssueProcessor.ts index b99c7ec1..e6406ee4 100644 --- a/src/IssueProcessor.ts +++ b/src/IssueProcessor.ts @@ -225,6 +225,6 @@ export class IssueProcessor { // String.prototype.split defaults to [''] when called on an empty string // In this case, we'd prefer to just return an empty array indicating no labels if (!s.length) return []; - return s.split(','); + return s.split(',').map(l => l.trim()); } }