package com.sonyericsson.jenkins.plugins.bfa;
import com.sonyericsson.jenkins.plugins.bfa.tasks.DefineAFailureCause;
import com.sonyericsson.jenkins.plugins.bfa.tasks.configuration.LineInTheBuildLog;
import net.serenitybdd.screenplay.Actor;
import net.serenitybdd.screenplay.Task;
import net.thucydides.core.annotations.Step;
import static net.serenitybdd.integration.utils.Nulls.getOrElse;
import static net.serenitybdd.screenplay.Tasks.instrumented;
public class DefineABuildLogIndicatedFailureCause implements Task {
public static DefineABuildLogIndicatedFailureCause called(String name) {
return instrumented(DefineABuildLogIndicatedFailureCause.class, name);
}
public DefineABuildLogIndicatedFailureCause describedAs(String description) {
this.description = description;
return this;
}
public DefineABuildLogIndicatedFailureCause matching(String regex) {
this.regex = regex;
return this;
}
@Step("{0} defines what constitutes a problem with '#name'")
@Override
public <T extends Actor> void performAs(T actor) {
actor.attemptsTo(
DefineAFailureCause.called(name).describedAs(getOrElse(description, name)).indicatedBy(
LineInTheBuildLog.matching(regex)
)
);
}
public DefineABuildLogIndicatedFailureCause(String name) {
this.name = name;
}
private String name = "Shell Script Failure";
private String regex = "Build step 'Execute shell' marked build as failure";
private String description;
}