package org.pitest.maven; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.when; import java.io.File; import java.util.Collections; import org.apache.maven.project.MavenProject; import org.junit.Rule; import org.junit.Test; import org.junit.experimental.categories.Category; import org.junit.rules.TemporaryFolder; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; @Category(SystemTest.class) @RunWith(MockitoJUnitRunner.class) public class NonEmptyProjectCheckIT { @Rule public TemporaryFolder realDir = new TemporaryFolder(); NonEmptyProjectCheck testee = new NonEmptyProjectCheck(); @Mock private MavenProject project; @Test public void shouldTreatProjectWithCodeAndTestsAsNonEmpty() { when(project.getTestCompileSourceRoots()).thenReturn(Collections.singletonList(dirThatExists())); when(project.getCompileSourceRoots()).thenReturn(Collections.singletonList(dirThatExists())); assertThat(testee.apply(project)).isTrue(); } @Test public void shouldTreatProjectWithNoTestsAsEmpty() { when(project.getTestCompileSourceRoots()).thenReturn(Collections.singletonList(dirThatExists())); when(project.getCompileSourceRoots()).thenReturn(Collections.singletonList(nonExistentDir())); assertThat(testee.apply(project)).isFalse(); } @Test public void shouldTreatProjectWithNoCodeAsEmpty() { when(project.getTestCompileSourceRoots()).thenReturn(Collections.singletonList(nonExistentDir())); when(project.getCompileSourceRoots()).thenReturn(Collections.singletonList(dirThatExists())); assertThat(testee.apply(project)).isFalse(); } private String dirThatExists() { return realDir.getRoot().getAbsolutePath(); } private String nonExistentDir() { return new File("ifthisfileexistsbybizarrechancethetestwillfail").getAbsolutePath(); } }