diff --git a/test/groovy/util/JenkinsStepRule.groovy b/test/groovy/util/JenkinsStepRule.groovy new file mode 100644 index 000000000..2dbe5446b --- /dev/null +++ b/test/groovy/util/JenkinsStepRule.groovy @@ -0,0 +1,32 @@ +package util + +import com.lesfurets.jenkins.unit.BasePipelineTest + +import java.beans.Introspector + +import org.junit.rules.TestRule +import org.junit.runner.Description +import org.junit.runners.model.Statement + +class JenkinsStepRule implements TestRule { + final BasePipelineTest testInstance + + def step + + JenkinsStepRule(BasePipelineTest testInstance) { + this.testInstance = testInstance + } + + @Override + Statement apply(Statement base, Description description) { + return new Statement() { + @Override + void evaluate() throws Throwable { + def testClassName = testInstance.getClass().getSimpleName() + def stepName = Introspector.decapitalize(testClassName.replaceAll('Test$', '')) + this.step = testInstance.loadScript("${stepName}.groovy") + base.evaluate() + } + } + } +}