github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/util/JenkinsFileExistsRule.groovy (about) 1 package util 2 3 import com.lesfurets.jenkins.unit.BasePipelineTest 4 import org.junit.rules.TestRule 5 import org.junit.runner.Description 6 import org.junit.runners.model.Statement 7 8 class JenkinsFileExistsRule implements TestRule { 9 10 final BasePipelineTest testInstance 11 final List existingFiles 12 13 /** 14 * The List of files that have been queried via `fileExists` 15 */ 16 final List queriedFiles = [] 17 18 JenkinsFileExistsRule(BasePipelineTest testInstance) { 19 this(testInstance,[]) 20 } 21 22 JenkinsFileExistsRule(BasePipelineTest testInstance, List existingFiles) { 23 this.testInstance = testInstance 24 this.existingFiles = existingFiles 25 } 26 27 JenkinsFileExistsRule registerExistingFile(String file) { 28 existingFiles.add(file) 29 return this 30 } 31 32 JenkinsFileExistsRule setExistingFiles(List files) { 33 existingFiles.clear() 34 existingFiles.addAll(files) 35 return this 36 } 37 38 @Override 39 Statement apply(Statement base, Description description) { 40 return statement(base) 41 } 42 43 private Statement statement(final Statement base) { 44 return new Statement() { 45 @Override 46 void evaluate() throws Throwable { 47 48 testInstance.helper.registerAllowedMethod('fileExists', [String.class], {s -> 49 queriedFiles.add(s.toString()) 50 return s.toString() in existingFiles 51 }) 52 53 testInstance.helper.registerAllowedMethod('fileExists', [Map.class], {m -> 54 queriedFiles.add(m.file.toString()) 55 return m.file.toString() in existingFiles} 56 ) 57 58 base.evaluate() 59 } 60 } 61 } 62 63 }