package fr.emse.gitlab.saref.api; import java.io.File; import java.io.PrintWriter; import java.io.StringWriter; import fr.emse.gitlab.saref.api.JobRunner; import fr.emse.gitlab.saref.entities.TestCase; import fr.emse.gitlab.saref.entities.TestCase.Status; import fr.emse.gitlab.saref.entities.TestSuite; import fr.emse.gitlab.saref.entities.TestSuites; public abstract class AbstractJobRunner implements JobRunner { private final TestSuite testSuite = new TestSuite(); protected final File directory; public AbstractJobRunner(File dir) { this.directory = dir; } public final void doJob(TestSuites testSuites) { doJob0(); testSuites.addTestsuite(testSuite); } protected abstract void doJob0(); protected void error(String name, Exception ex) { TestCase tc = new TestCase(name); StringWriter sw = new StringWriter(); PrintWriter pw = new PrintWriter(sw); ex.printStackTrace(pw); tc.setSystemErr(sw.toString()); tc.setError(ex.getClass().getCanonicalName(), ex.getMessage()); testSuite.addTestcase(tc); } protected void error(String name) { TestCase tc = new TestCase(name); tc.setStatus(Status.ERROR); testSuite.addTestcase(tc); } protected void warning(String name) { TestCase tc = new TestCase(name); tc.setStatus(Status.WARNING); testSuite.addTestcase(tc); } protected void failure(String name) { TestCase tc = new TestCase(name); tc.setStatus(Status.FAILURE); testSuite.addTestcase(tc); } protected void failure(String name, String type, String message) { TestCase tc = new TestCase(name); tc.setFailure(type, message); testSuite.addTestcase(tc); } protected void success(String name) { testSuite.addTestcase(new TestCase(name)); } }