package com.lassekoskela.maven.buildevents;
import static java.util.Collections.unmodifiableList;
import java.util.List;
import org.hamcrest.Matcher;
import org.hamcrest.Matchers;
import org.junit.After;
import org.junit.Before;
import com.lassekoskela.maven.logging.Log;
import com.lassekoskela.time.Clock;
public abstract class AbstractBuildEventLogTest {
private Log logger;
private List<BuildStep> reportSteps;
protected BuildEventLog log;
protected boolean reportWasCreated;
protected EventSimulator simulator;
private void recordReportedSteps(List<BuildStep> steps) {
this.reportSteps = steps;
}
public List<BuildStep> getReportedSteps() {
return unmodifiableList(reportSteps);
}
@Before
public final void _createFixtureObjects() throws Exception {
Clock.freeze();
logger = new FakeLogger();
reportWasCreated = false;
log = new BuildEventLog(logger) {
@Override
protected BuildEventLogReport createReport(Log logger,
final List<BuildStep> steps) {
return new BuildEventLogReport(logger, steps) {
@Override
public void report() {
recordReportedSteps(steps);
reportWasCreated = true;
}
};
}
};
simulator = new EventSimulator(log);
}
@After
public final void _tearDownFixtureObjects() throws Exception {
Clock.reset();
}
protected Matcher<Iterable<? super BuildStep>> hasBuildStep(String phase,
String goal) {
return hasBuildStep(simulator.project, phase, goal);
}
protected Matcher<Iterable<? super BuildStep>> hasBuildStep(String project,
String phase, String goal) {
BuildStep step = new BuildStep(project, phase, simulator.groupId,
simulator.artifactId, goal);
return Matchers.hasItem(step);
}
}