github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/com/sap/piper/versioning/DockerArtifactVersioningTest.groovy (about) 1 package com.sap.piper.versioning 2 3 import org.junit.Before 4 import org.junit.Rule 5 import org.junit.Test 6 import org.junit.rules.ExpectedException 7 import org.junit.rules.RuleChain 8 import util.BasePiperTest 9 import util.JenkinsLoggingRule 10 import util.JenkinsReadFileRule 11 import util.JenkinsWriteFileRule 12 import util.Rules 13 14 import static org.junit.Assert.assertEquals 15 import static org.junit.Assert.assertTrue 16 17 class DockerArtifactVersioningTest extends BasePiperTest{ 18 19 DockerArtifactVersioning av 20 21 String passedDir 22 23 JenkinsReadFileRule readFileRule = new JenkinsReadFileRule(this, 'test/resources/versioning/DockerArtifactVersioning') 24 JenkinsWriteFileRule writeFileRule = new JenkinsWriteFileRule(this) 25 JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this) 26 ExpectedException thrown = ExpectedException.none() 27 28 @Rule 29 public RuleChain ruleChain = Rules 30 .getCommonRules(this) 31 .around(readFileRule) 32 .around(writeFileRule) 33 .around(loggingRule) 34 .around(thrown) 35 36 @Before 37 public void init() { 38 39 helper.registerAllowedMethod("dir", [String.class, Closure.class], { s, closure -> 40 passedDir = s 41 return closure() 42 }) 43 } 44 45 @Test 46 void testVersioningFrom() { 47 av = new DockerArtifactVersioning(nullScript, [filePath: 'Dockerfile', dockerVersionSource: 'FROM']) 48 assertEquals('1.2.3', av.getVersion()) 49 av.setVersion('1.2.3-20180101') 50 assertEquals('1.2.3-20180101', writeFileRule.files['VERSION']) 51 assertTrue(loggingRule.log.contains('[DockerArtifactVersioning] Version from Docker base image tag: 1.2.3')) 52 } 53 54 @Test 55 void testVersioningFromWithRegistryPort() { 56 DockerArtifactVersioning av = new DockerArtifactVersioning(nullScript, [filePath: 'Dockerfile_registryPort', dockerVersionSource: 'FROM']) 57 assertEquals('1.2.3', av.getVersion()) 58 } 59 60 @Test 61 void testVersioningFromWithMissingTag() { 62 thrown.expectMessage('FROM statement does not contain an explicit image version') 63 new DockerArtifactVersioning(nullScript, [filePath: 'Dockerfile_registryPortNoTag', dockerVersionSource: 'FROM']).getVersion() 64 } 65 66 @Test 67 void testVersioningEnv() { 68 av = new DockerArtifactVersioning(nullScript, [filePath: 'Dockerfile', dockerVersionSource: 'TEST']) 69 assertEquals('2.3.4', av.getVersion()) 70 assertTrue(loggingRule.log.contains('[DockerArtifactVersioning] Version from Docker environment variable TEST: 2.3.4')) 71 } 72 }