AbstractJobRunner.java 1.75 KB
Newer Older
Maxime Lefrançois's avatar
Maxime Lefrançois committed
package fr.emse.gitlab.saref.api;
Maxime Lefrançois's avatar
Maxime Lefrançois committed

import java.io.File;
import java.io.PrintWriter;
import java.io.StringWriter;

Maxime Lefrançois's avatar
Maxime Lefrançois committed
import fr.emse.gitlab.saref.api.JobRunner;
Maxime Lefrançois's avatar
Maxime Lefrançois committed
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));
	}

}