mirror of
https://github.com/SAP/jenkins-library.git
synced 2024-12-14 11:03:09 +02:00
74366631b5
* Project "Piper" Template: framework and structure This is the first in a series of Pull-Requests to provide a fully functional Pipeline template into the library. This PR contains: * general Pipeline structure incl. tests * Pipeline initialization incl. tests * Hollow pipeline stages incl. tests * first set of default values * add gitUrls to commonPipelineEnvironment * set correct git information on commonPipelineEnvironment
121 lines
3.5 KiB
Groovy
121 lines
3.5 KiB
Groovy
#!groovy
|
|
import org.junit.Before
|
|
import org.junit.Rule
|
|
import org.junit.Test
|
|
import org.junit.rules.RuleChain
|
|
import util.BasePiperTest
|
|
import util.JenkinsLoggingRule
|
|
import util.JenkinsReadYamlRule
|
|
import util.JenkinsStepRule
|
|
import util.Rules
|
|
|
|
import static org.hamcrest.CoreMatchers.containsString
|
|
import static org.hamcrest.CoreMatchers.is
|
|
import static org.junit.Assert.assertThat
|
|
|
|
class PiperStageWrapperTest extends BasePiperTest {
|
|
|
|
private JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
|
|
private JenkinsStepRule stepRule = new JenkinsStepRule(this)
|
|
|
|
private Map lockMap = [:]
|
|
private int countNodeUsage = 0
|
|
private String nodeLabel = ''
|
|
|
|
@Rule
|
|
public RuleChain rules = Rules
|
|
.getCommonRules(this)
|
|
.around(new JenkinsReadYamlRule(this))
|
|
.around(loggingRule)
|
|
.around(stepRule)
|
|
|
|
@Before
|
|
void init() throws Exception {
|
|
|
|
helper.registerAllowedMethod('deleteDir', [], {return null})
|
|
helper.registerAllowedMethod('lock', [Map.class, Closure.class], {m, body ->
|
|
assertThat(m.resource.toString(), containsString('/10'))
|
|
lockMap = m
|
|
body()
|
|
})
|
|
helper.registerAllowedMethod('milestone', [Integer.class], {ordinal ->
|
|
assertThat(ordinal, is(10))
|
|
})
|
|
helper.registerAllowedMethod('node', [String.class, Closure.class], {s, body ->
|
|
nodeLabel = s
|
|
countNodeUsage++
|
|
body()
|
|
|
|
})
|
|
helper.registerAllowedMethod('fileExists', [String.class], {s ->
|
|
return false
|
|
})
|
|
}
|
|
|
|
@Test
|
|
void testDefault() {
|
|
def executed = false
|
|
stepRule.step.piperStageWrapper(
|
|
script: nullScript,
|
|
juStabUtils: utils,
|
|
ordinal: 10,
|
|
stageName: 'test'
|
|
|
|
) {
|
|
executed = true
|
|
}
|
|
assertThat(executed, is(true))
|
|
assertThat(lockMap.size(), is(2))
|
|
assertThat(countNodeUsage, is(1))
|
|
}
|
|
|
|
@Test
|
|
void testNoLocking() {
|
|
def executed = false
|
|
stepRule.step.piperStageWrapper(
|
|
script: nullScript,
|
|
juStabUtils: utils,
|
|
nodeLabel: 'testLabel',
|
|
ordinal: 10,
|
|
stageLocking: false,
|
|
stageName: 'test'
|
|
|
|
) {
|
|
executed = true
|
|
}
|
|
assertThat(executed, is(true))
|
|
assertThat(lockMap.size(), is(0))
|
|
assertThat(countNodeUsage, is(1))
|
|
assertThat(nodeLabel, is('testLabel'))
|
|
}
|
|
|
|
@Test
|
|
void testStageExit() {
|
|
helper.registerAllowedMethod('fileExists', [String.class], {s ->
|
|
return (s == '.pipeline/extensions/test.groovy')
|
|
})
|
|
|
|
helper.registerAllowedMethod('load', [String.class], {
|
|
return helper.loadScript('test/resources/stages/test.groovy')
|
|
})
|
|
nullScript.commonPipelineEnvironment.gitBranch = 'testBranch'
|
|
|
|
def executed = false
|
|
stepRule.step.piperStageWrapper(
|
|
script: nullScript,
|
|
juStabUtils: utils,
|
|
ordinal: 10,
|
|
stageName: 'test'
|
|
) {
|
|
executed = true
|
|
}
|
|
|
|
assertThat(executed, is(true))
|
|
assertThat(loggingRule.log, containsString('[piperStageWrapper] Running project interceptor \'.pipeline/extensions/test.groovy\' for test.'))
|
|
assertThat(loggingRule.log, containsString('Stage Name: test'))
|
|
assertThat(loggingRule.log, containsString('Config: ['))
|
|
assertThat(loggingRule.log, containsString('testBranch'))
|
|
}
|
|
}
|
|
|