diff --git a/messages/rule-viewer.md b/messages/rule-viewer.md index b6bcf2726..7f150c7de 100644 --- a/messages/rule-viewer.md +++ b/messages/rule-viewer.md @@ -1,11 +1,3 @@ -# summary.found-no-rules - -Found 0 rules. - -# summary.found-rules - -Found %d rule(s): - # summary.detail.header %d. %s diff --git a/src/lib/viewers/RuleViewer.ts b/src/lib/viewers/RuleViewer.ts index 1e1c82b57..ed7246f52 100644 --- a/src/lib/viewers/RuleViewer.ts +++ b/src/lib/viewers/RuleViewer.ts @@ -17,14 +17,17 @@ abstract class AbstractRuleDisplayer implements RuleViewer { } public view(rules: Rule[]): void { - if (rules.length === 0) { - this.display.displayLog(getMessage(BundleName.RuleViewer, 'summary.found-no-rules')); - } else { - this.display.displayLog(getMessage(BundleName.RuleViewer, 'summary.found-rules', [rules.length])); + this.displayLineSeparator(); + if (rules.length > 0) { this._view(rules); + this.displayLineSeparator(); } } + protected displayLineSeparator(): void { + this.display.displayLog(""); + } + protected abstract _view(rules: Rule[]): void; } diff --git a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt index 12bad3fb1..c6d3e4d86 100644 --- a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt +++ b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/one-rule-details.txt @@ -1,8 +1,8 @@ -Found 1 rule(s): + === 1. StubRule1 severity: 2 (High) engine: FakeEngine1 type: Standard tags: Recommended, Security resources: www.google.com - description: This is the description for a stub rule. Blah blah blah. \ No newline at end of file + description: This is the description for a stub rule. Blah blah blah. diff --git a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt index 272c472fa..9eaea142b 100644 --- a/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt +++ b/test/fixtures/comparison-files/lib/viewers/RuleViewer.test.ts/two-rules-details.txt @@ -1,4 +1,4 @@ -Found 2 rule(s): + === 1. StubRule1 severity: 2 (High) engine: FakeEngine1 @@ -13,4 +13,4 @@ Found 2 rule(s): type: Flow tags: CodeStyle, Performance resources: www.bing.com, www.salesforce.com - description: This is the description for a second stub rule. Blah blah blah. \ No newline at end of file + description: This is the description for a second stub rule. Blah blah blah. diff --git a/test/lib/viewers/RuleViewer.test.ts b/test/lib/viewers/RuleViewer.test.ts index 2c5eb7f7f..51c718dc6 100644 --- a/test/lib/viewers/RuleViewer.test.ts +++ b/test/lib/viewers/RuleViewer.test.ts @@ -10,7 +10,7 @@ const PATH_TO_COMPARISON_FILES = path.resolve(__dirname, '..', '..', '..', 'test describe('RuleViewer implementations', () => { describe('RuleDetailDisplayer', () => { - it('When given no rules, outputs summary and nothing else', () => { + it('When given no rules, outputs a line separator and nothing else', () => { const display = new SpyDisplay(); const viewer = new RuleDetailDisplayer(display); @@ -20,7 +20,7 @@ describe('RuleViewer implementations', () => { expect(displayEvents).toHaveLength(1); expect(displayEvents).toEqual([{ type: DisplayEventType.LOG, - data: 'Found 0 rules.' + data: '' }]); }); @@ -34,7 +34,7 @@ describe('RuleViewer implementations', () => { ]); const actualDisplayEvents = display.getDisplayEvents(); - expect(actualDisplayEvents).toHaveLength(2); + expect(actualDisplayEvents).toHaveLength(3); for (const displayEvent of actualDisplayEvents) { expect(displayEvent.type).toEqual(DisplayEventType.LOG); } @@ -57,7 +57,7 @@ describe('RuleViewer implementations', () => { ]); const actualDisplayEvents = display.getDisplayEvents(); - expect(actualDisplayEvents).toHaveLength(2); + expect(actualDisplayEvents).toHaveLength(3); for (const displayEvent of actualDisplayEvents) { expect(displayEvent.type).toEqual(DisplayEventType.LOG); } @@ -80,7 +80,7 @@ describe('RuleViewer implementations', () => { expect(displayEvents).toHaveLength(1); expect(displayEvents).toEqual([{ type: DisplayEventType.LOG, - data: 'Found 0 rules.' + data: '' }]); }); @@ -94,10 +94,10 @@ describe('RuleViewer implementations', () => { ]); const displayEvents = display.getDisplayEvents(); - expect(displayEvents).toHaveLength(2); + expect(displayEvents).toHaveLength(3); expect(displayEvents).toEqual([{ type: DisplayEventType.LOG, - data: 'Found 1 rule(s):' + data: '' }, { type: DisplayEventType.TABLE, data: JSON.stringify({ @@ -110,6 +110,9 @@ describe('RuleViewer implementations', () => { tag: rule.getFormattedTags() }] }) + }, { + type: DisplayEventType.LOG, + data: '' }]) }); @@ -125,10 +128,10 @@ describe('RuleViewer implementations', () => { ]); const displayEvents = display.getDisplayEvents(); - expect(displayEvents).toHaveLength(2); + expect(displayEvents).toHaveLength(3); expect(displayEvents).toEqual([{ type: DisplayEventType.LOG, - data: 'Found 2 rule(s):' + data: '' }, { type: DisplayEventType.TABLE, data: JSON.stringify({ @@ -147,6 +150,9 @@ describe('RuleViewer implementations', () => { tag: rule2.getFormattedTags() }] }) + }, { + type: DisplayEventType.LOG, + data: '' }]); }); });