github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/JenkinsMaterializeLogTest.groovy (about)

     1  import hudson.FilePath
     2  import org.junit.Assert
     3  import org.junit.Rule
     4  import org.junit.Test
     5  import org.junit.rules.ExpectedException
     6  import org.junit.rules.RuleChain
     7  
     8  import util.BasePiperTest
     9  import util.JenkinsLoggingRule
    10  import util.JenkinsReadYamlRule
    11  import util.JenkinsStepRule
    12  import util.JenkinsWriteFileRule
    13  import util.Rules
    14  import com.sap.piper.JenkinsUtils
    15  
    16  class JenkinsMaterializeLogTest extends BasePiperTest {
    17  
    18  	private ExpectedException thrown = ExpectedException.none()
    19  	private JenkinsLoggingRule loggingRule = new JenkinsLoggingRule(this)
    20  	private JenkinsWriteFileRule writeFileRule = new JenkinsWriteFileRule(this)
    21  	private JenkinsStepRule stepRule = new JenkinsStepRule(this)
    22  
    23  	class JenkinsUtilsMock extends JenkinsUtils {
    24  		def getInstance() {
    25  			def map = [getComputer:{return null}];
    26  			return map
    27  		}
    28  	}
    29  
    30  	class AnnotatedLargeTextMock {
    31  		void writeLogTo(i, out) {}
    32  	}
    33  
    34  	@Rule
    35  	public RuleChain ruleChain = Rules
    36  	.getCommonRules(this)
    37  	.around(new JenkinsReadYamlRule(this))
    38  	.around(thrown)
    39  	.around(loggingRule)
    40  	.around(writeFileRule)
    41  	.around(stepRule)
    42  
    43  	@Test
    44  	void testMaterializeLog() {
    45  		def map = [script: nullScript, jenkinsUtilsStub: new JenkinsUtilsMock()]
    46  		def body = { name -> def msg = "hello " + name }
    47  		binding.setVariable('currentBuild', [result: 'UNSTABLE', rawBuild: [getLogText: { return new AnnotatedLargeTextMock() } ]])
    48  		binding.setVariable('env', [NODE_NAME: 'anynode', WORKSPACE: '.'])
    49  		stepRule.step.jenkinsMaterializeLog(map, body)
    50  	}
    51  
    52      @Test
    53      void getFilePath_returnsValidFilePathObject() {
    54          final fileName = "mylog.txt"
    55          def expected = new FilePath(null, fileName)
    56          def script = loadScript("vars/jenkinsMaterializeLog.groovy")
    57          binding.setVariable('env', [NODE_NAME: 'anynode', WORKSPACE: '.'])
    58          def filePath = script.invokeMethod("getFilePath", fileName, new JenkinsUtilsMock())
    59          Assert.assertEquals(expected, filePath)
    60      }
    61  }