github.com/ouraigua/jenkins-library@v0.0.0-20231028010029-fbeaf2f3aa9b/test/groovy/util/JenkinsReadJsonRule.groovy (about) 1 package util 2 3 import com.lesfurets.jenkins.unit.BasePipelineTest 4 import groovy.json.JsonSlurper 5 import org.junit.rules.TestRule 6 import org.junit.runner.Description 7 import org.junit.runners.model.Statement 8 9 class JenkinsReadJsonRule implements TestRule { 10 11 final BasePipelineTest testInstance 12 final String testRoot 13 14 JenkinsReadJsonRule(BasePipelineTest testInstance, testRoot = '') { 15 this.testInstance = testInstance 16 this.testRoot = testRoot 17 } 18 19 @Override 20 Statement apply(Statement base, Description description) { 21 return statement(base) 22 } 23 24 private Statement statement(final Statement base) { 25 return new Statement() { 26 @Override 27 void evaluate() throws Throwable { 28 testInstance.helper.registerAllowedMethod("readJSON", [Map], { Map m -> 29 if(m.text) { 30 def js = new JsonSlurper() 31 return js.parseText(m.text) 32 } else if(m.file) { 33 def js = new JsonSlurper() 34 def reader = new BufferedReader(new FileReader( "${this.testRoot}${m.file}" )) 35 return js.parse(reader) 36 } else { 37 throw new IllegalArgumentException("Key 'text' is missing in map ${m}.") 38 } 39 }) 40 41 base.evaluate() 42 } 43 } 44 } 45 }