package e2e;
import org.apache.maven.shared.invoker.MavenInvocationException;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Test;
import scaffolding.MavenExecutionException;
import scaffolding.MvnRunner;
import scaffolding.TestProject;
import java.io.IOException;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
import static scaffolding.GitMatchers.hasCleanWorkingDirectory;
public class TestRunningTest {
final TestProject projectWithTestsThatFail = TestProject.moduleWithTestFailure();
@BeforeClass
public static void installPluginToLocalRepo() throws MavenInvocationException {
MvnRunner.installReleasePluginToLocalRepo();
}
@Test
public void doesNotReleaseIfThereAreTestFailuresButTagsAreStillWritten() throws Exception {
try {
projectWithTestsThatFail.mvnRelease("1");
Assert.fail("Should have failed");
} catch (MavenExecutionException e) {
}
assertThat(projectWithTestsThatFail.local, hasCleanWorkingDirectory());
assertThat(projectWithTestsThatFail.local.tagList().call().get(0).getName(), is("refs/tags/module-with-test-failure-1.0.1"));
assertThat(projectWithTestsThatFail.origin.tagList().call().get(0).getName(), is("refs/tags/module-with-test-failure-1.0.1"));
}
@Test
public void ifTestsAreSkippedYouCanReleaseWithoutRunningThem() throws IOException {
projectWithTestsThatFail.mvn(
"-DbuildNumber=1", "-DskipTests",
"releaser:release");
}
}