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  }