From e21918cdf5c0ba99b8256dce0806f22216d6ff9c Mon Sep 17 00:00:00 2001 From: Victor Martinez Date: Thu, 11 Feb 2021 17:58:11 +0000 Subject: [PATCH] Disable/Enable pre-commit skipped tests in the report (#977) (cherry picked from commit ef76384dfdffbbc9e567c285360bea04c0321b5b) # Conflicts: # vars/preCommitToJunit.groovy --- .../groovy/PreCommitToJunitStepTests.groovy | 23 +++++++++++++++---- vars/README.md | 4 ++++ vars/preCommitToJunit.groovy | 15 ++++++++---- vars/preCommitToJunit.txt | 4 ++++ 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/src/test/groovy/PreCommitToJunitStepTests.groovy b/src/test/groovy/PreCommitToJunitStepTests.groovy index b94cf2d71..6f29b29e6 100644 --- a/src/test/groovy/PreCommitToJunitStepTests.groovy +++ b/src/test/groovy/PreCommitToJunitStepTests.groovy @@ -51,7 +51,7 @@ class PreCommitToJunitStepTests extends ApmBasePipelineTest { @Test void testSuccessWithSimpleCommitStages() throws Exception { def file = 'simple.xml' - script.call(input: 'simple.txt', output: file) + script.call(input: 'simple.txt', output: file, reportSkipped: true) printCallStack() assertTrue("The files differ!", FileUtils.contentEqualsIgnoreEOL( new File("${compareWith}/${file}"), @@ -62,7 +62,7 @@ class PreCommitToJunitStepTests extends ApmBasePipelineTest { @Test void testSuccessWithAllPreCommitStages() throws Exception { def file = 'pre-commit.xml' - script.call(input: 'pre-commit.txt', output: file) + script.call(input: 'pre-commit.txt', output: file, reportSkipped: true) printCallStack() assertJobStatusSuccess() assertTrue("The files differ!", FileUtils.contentEqualsIgnoreEOL( @@ -74,7 +74,7 @@ class PreCommitToJunitStepTests extends ApmBasePipelineTest { @Test void testSuccessWithSkippedPreCommitStages() throws Exception { def file = 'skipped.xml' - script.call(input: 'skipped.txt', output: file) + script.call(input: 'skipped.txt', output: file, reportSkipped: true) printCallStack() assertTrue("The files differ!", FileUtils.contentEqualsIgnoreEOL( new File("${compareWith}/${file}"), @@ -85,7 +85,7 @@ class PreCommitToJunitStepTests extends ApmBasePipelineTest { @Test void testSuccessWithGherkinDefects() throws Exception { def file = 'gherkin.xml' - script.call(input: 'gherkin.txt', output: file) + script.call(input: 'gherkin.txt', output: file, reportSkipped: true) printCallStack() assertTrue("The files differ!", FileUtils.contentEqualsIgnoreEOL( new File("${compareWith}/${file}"), @@ -99,4 +99,19 @@ class PreCommitToJunitStepTests extends ApmBasePipelineTest { printCallStack() assertTrue(ret.contains('name="foo" />')) } + + @Test + void test_reportSkipped_enabled() throws Exception { + def ret = script.toJunit('foo', 'skipped', 'isortno files to check', true) + printCallStack() + assertTrue(ret.contains('')) + } + + @Test + void test_reportSkipped_disabled() throws Exception { + def ret = script.toJunit('foo', 'skipped', 'isortno files to check', false) + printCallStack() + println ret + assertTrue(ret.equals('')) + } } diff --git a/vars/README.md b/vars/README.md index 7fef2bfd5..13d5b4170 100644 --- a/vars/README.md +++ b/vars/README.md @@ -1906,6 +1906,10 @@ Parse the pre-commit log file and generates a junit report preCommitToJunit(input: 'pre-commit.log', output: 'pre-commit-junit.xml') ``` +* input: the pre-commit output. Mandatory +* output: the junit output. Mandatory +* enableSkipped: whether to report skipped linting stages. Optional. Default false + ## publishToCDN Publish to the [CDN](https://cloud.google.com/cdn) the given set of source files to the target bucket with the given headers. diff --git a/vars/preCommitToJunit.groovy b/vars/preCommitToJunit.groovy index 219501b8f..5a203e377 100644 --- a/vars/preCommitToJunit.groovy +++ b/vars/preCommitToJunit.groovy @@ -20,9 +20,16 @@ preCommitToJunit(input: 'pre-commit.log', output: 'pre-commit-junit.xml') */ +<<<<<<< HEAD def call(Map params = [:]) { def input = params.containsKey('input') ? params.input : error('preCommitToJunit: input parameter is required.') def output = params.containsKey('output') ? params.output : error('preCommitToJunit: output parameter is required.') +======= +def call(Map args = [:]) { + def input = args.containsKey('input') ? args.input : error('preCommitToJunit: input parameter is required.') + def output = args.containsKey('output') ? args.output : error('preCommitToJunit: output parameter is required.') + def reportSkipped = args.get('reportSkipped', false) +>>>>>>> ef76384d... Disable/Enable pre-commit skipped tests in the report (#977) def content = readFile(file: input) def id, status, message = '', inprogress = false @@ -31,7 +38,7 @@ def call(Map params = [:]) { def matcher = line =~ '(.+)(\\.Passed|\\)Skipped|\\.Skipped|\\.Failed)$' if (matcher.find()) { if (id) { - data += toJunit(id, status, message) + data += toJunit(id, status, message, reportSkipped) } id = matcher.group(1).replaceAll(/[\W_&&[^\s]]/, '').replaceAll('\\.\\.\\.','').trim() status = matcher.group(2) @@ -42,16 +49,16 @@ def call(Map params = [:]) { } } if (inprogress) { - data += toJunit(id, status, message) + data += toJunit(id, status, message, reportSkipped) } data += '' writeFile file: output, text: data, encoding: 'UTF-8' } -def toJunit(String name, String status, String message) { +def toJunit(String name, String status, String message, reportSkipped=false) { String output = "" } else if (status?.toLowerCase()?.contains('failed')) { output += ">" diff --git a/vars/preCommitToJunit.txt b/vars/preCommitToJunit.txt index c6e263dd8..deb6b17d1 100644 --- a/vars/preCommitToJunit.txt +++ b/vars/preCommitToJunit.txt @@ -3,3 +3,7 @@ Parse the pre-commit log file and generates a junit report ``` preCommitToJunit(input: 'pre-commit.log', output: 'pre-commit-junit.xml') ``` + +* input: the pre-commit output. Mandatory +* output: the junit output. Mandatory +* enableSkipped: whether to report skipped linting stages. Optional. Default false