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  }