mirror of
https://github.com/SAP/jenkins-library.git
synced 2025-01-30 05:59:39 +02:00
handlePipelineStepErrors: extract error message to template (#350)
* add template for handleStepErrors * add tests * use template * fix indent * fix typo * Update HandlePipelineStepErrorTest.groovy * Update HandlePipelineStepErrorTest.groovy
This commit is contained in:
parent
18078b3bdb
commit
dabbc724ad
21
resources/com.sap.piper/templates/error.log
Normal file
21
resources/com.sap.piper/templates/error.log
Normal file
@ -0,0 +1,21 @@
|
||||
----------------------------------------------------------
|
||||
--- ERROR OCCURRED IN LIBRARY STEP: ${stepName}
|
||||
----------------------------------------------------------
|
||||
|
||||
FOLLOWING PARAMETERS WERE AVAILABLE TO THIS STEP:
|
||||
***
|
||||
${stepParameters}
|
||||
***
|
||||
|
||||
ERROR WAS:
|
||||
***
|
||||
${error}
|
||||
***
|
||||
|
||||
FURTHER INFORMATION:
|
||||
* Documentation of library step ${stepName}: https://sap.github.io/jenkins-library/steps/${stepName}/
|
||||
* Source code of library step ${stepName}: https://github.com/SAP/jenkins-library/blob/master/vars/${stepName}.groovy
|
||||
* Library documentation: https://sap.github.io/jenkins-library/
|
||||
* Library repository: https://github.com/SAP/jenkins-library
|
||||
|
||||
----------------------------------------------------------
|
82
test/groovy/HandlePipelineStepErrorTest.groovy
Normal file
82
test/groovy/HandlePipelineStepErrorTest.groovy
Normal file
@ -0,0 +1,82 @@
|
||||
#!groovy
|
||||
import static org.hamcrest.Matchers.is
|
||||
import static org.hamcrest.Matchers.not
|
||||
import static org.hamcrest.Matchers.containsString
|
||||
|
||||
import org.junit.Rule
|
||||
import org.junit.Test
|
||||
import org.junit.rules.ExpectedException
|
||||
import org.junit.rules.RuleChain
|
||||
import static org.junit.Assert.assertThat
|
||||
|
||||
import util.BasePiperTest
|
||||
import util.JenkinsLoggingRule
|
||||
import util.JenkinsStepRule
|
||||
import util.Rules
|
||||
|
||||
class HandlePipelineStepErrorsTest extends BasePiperTest {
|
||||
private JenkinsStepRule jsr = new JenkinsStepRule(this)
|
||||
private JenkinsLoggingRule jlr = new JenkinsLoggingRule(this)
|
||||
private ExpectedException thrown = ExpectedException.none()
|
||||
|
||||
@Rule
|
||||
public RuleChain rules = Rules
|
||||
.getCommonRules(this)
|
||||
.around(jlr)
|
||||
.around(jsr)
|
||||
.around(thrown)
|
||||
|
||||
@Test
|
||||
void testBeginAndEndMessage() {
|
||||
def isExecuted
|
||||
jsr.step.handlePipelineStepErrors([
|
||||
stepName: 'testStep',
|
||||
stepParameters: ['something': 'anything']
|
||||
]) {
|
||||
isExecuted = true
|
||||
}
|
||||
// asserts
|
||||
assertThat(isExecuted, is(true))
|
||||
assertThat(jlr.log, containsString('--- BEGIN LIBRARY STEP: testStep'))
|
||||
assertThat(jlr.log, containsString('--- END LIBRARY STEP: testStep'))
|
||||
}
|
||||
|
||||
@Test
|
||||
void testNonVerbose() {
|
||||
try {
|
||||
jsr.step.handlePipelineStepErrors([
|
||||
stepName: 'testStep',
|
||||
stepParameters: ['something': 'anything'],
|
||||
echoDetails: false
|
||||
]) {
|
||||
throw new Exception('TestError')
|
||||
}
|
||||
} catch (ignore) {
|
||||
} finally {
|
||||
// asserts
|
||||
assertThat(jlr.log, not(containsString('--- BEGIN LIBRARY STEP: testStep')))
|
||||
assertThat(jlr.log, not(containsString('--- END LIBRARY STEP: testStep')))
|
||||
assertThat(jlr.log, not(containsString('--- ERROR OCCURRED IN LIBRARY STEP: testStep')))
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testErrorsMessage() {
|
||||
def isReported
|
||||
try {
|
||||
jsr.step.handlePipelineStepErrors([
|
||||
stepName: 'testStep',
|
||||
stepParameters: ['something': 'anything']
|
||||
]) {
|
||||
throw new Exception('TestError')
|
||||
}
|
||||
} catch (ignore) {
|
||||
isReported = true
|
||||
} finally {
|
||||
// asserts
|
||||
assertThat(isReported, is(true))
|
||||
assertThat(jlr.log, containsString('--- ERROR OCCURRED IN LIBRARY STEP: testStep'))
|
||||
assertThat(jlr.log, containsString('[something:anything]'))
|
||||
}
|
||||
}
|
||||
}
|
@ -1,50 +1,34 @@
|
||||
import groovy.text.SimpleTemplateEngine
|
||||
import groovy.transform.Field
|
||||
|
||||
@Field STEP_NAME = 'handlePipelineStepErrors'
|
||||
|
||||
|
||||
void call(Map parameters = [:], body) {
|
||||
|
||||
def stepParameters = parameters.stepParameters //mandatory
|
||||
def stepName = parameters.stepName //mandatory
|
||||
def echoDetails = parameters.get('echoDetails', true)
|
||||
|
||||
def verbose = parameters.get('echoDetails', true)
|
||||
def message = ''
|
||||
try {
|
||||
|
||||
if (stepParameters == null && stepName == null)
|
||||
error "step handlePipelineStepErrors requires following mandatory parameters: stepParameters, stepName"
|
||||
|
||||
if (echoDetails)
|
||||
echo "--- BEGIN LIBRARY STEP: ${stepName}.groovy ---"
|
||||
if (verbose)
|
||||
echo "--- BEGIN LIBRARY STEP: ${stepName} ---"
|
||||
|
||||
body()
|
||||
|
||||
} catch (Throwable err) {
|
||||
if (echoDetails)
|
||||
echo """----------------------------------------------------------
|
||||
--- ERROR OCCURRED IN LIBRARY STEP: ${stepName}
|
||||
----------------------------------------------------------
|
||||
|
||||
FOLLOWING PARAMETERS WERE AVAILABLE TO THIS STEP:
|
||||
***
|
||||
${stepParameters?.toString()}
|
||||
***
|
||||
|
||||
ERROR WAS:
|
||||
***
|
||||
${err}
|
||||
***
|
||||
|
||||
FURTHER INFORMATION:
|
||||
* Documentation of library step ${stepName}: https://sap.github.io/jenkins-library/steps/${stepName}/
|
||||
* Source code of library step ${stepName}: https://github.com/SAP/jenkins-library/blob/master/vars/${stepName}.groovy
|
||||
* Library documentation: https://sap.github.io/jenkins-library/
|
||||
* Library repository: https://github.com/SAP/jenkins-library
|
||||
|
||||
----------------------------------------------------------"""
|
||||
if (verbose)
|
||||
message += SimpleTemplateEngine.newInstance()
|
||||
.createTemplate(libraryResource('com.sap.piper/templates/error.log'))
|
||||
.make([
|
||||
stepName: stepName,
|
||||
stepParameters: stepParameters?.toString(),
|
||||
error: err
|
||||
]).toString()
|
||||
throw err
|
||||
} finally {
|
||||
if (echoDetails)
|
||||
echo "--- END LIBRARY STEP: ${stepName}.groovy ---"
|
||||
if (verbose)
|
||||
message += "--- END LIBRARY STEP: ${stepName} ---"
|
||||
echo message
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user