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 }