Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add support to gather all patches produced by different tools in one … (
#849) * add support to gather all patches produced by different tools in one common list * refactored test file
- Loading branch information
1 parent
5ecfd81
commit 54c8b09
Showing
1 changed file
with
114 additions
and
0 deletions.
There are no files selected for viewing
114 changes: 114 additions & 0 deletions
114
...pipeline/src/test/java/fr/inria/spirals/repairnator/process/inspectors/TestJobStatus.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,114 @@ | ||
package fr.inria.spirals.repairnator.process.inspectors; | ||
|
||
import ch.qos.logback.classic.Level; | ||
import fr.inria.jtravis.entities.Build; | ||
import fr.inria.spirals.repairnator.BuildToBeInspected; | ||
import fr.inria.spirals.repairnator.process.step.repair.NPERepair; | ||
import fr.inria.spirals.repairnator.process.step.repair.nopol.NopolSingleTestRepair; | ||
import fr.inria.spirals.repairnator.utils.Utils; | ||
import fr.inria.spirals.repairnator.config.RepairnatorConfig; | ||
import fr.inria.spirals.repairnator.process.files.FileHelper; | ||
import fr.inria.spirals.repairnator.process.step.StepStatus; | ||
import fr.inria.spirals.repairnator.process.step.CloneRepository; | ||
import fr.inria.spirals.repairnator.process.step.TestProject; | ||
import fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutBuggyBuild; | ||
import fr.inria.spirals.repairnator.process.step.gatherinfo.BuildShouldFail; | ||
import fr.inria.spirals.repairnator.process.step.gatherinfo.GatherTestInformation; | ||
import fr.inria.spirals.repairnator.process.step.paths.ComputeClasspath; | ||
import fr.inria.spirals.repairnator.process.step.paths.ComputeSourceDir; | ||
import fr.inria.spirals.repairnator.process.utils4tests.Utils4Tests; | ||
import fr.inria.spirals.repairnator.serializer.AbstractDataSerializer; | ||
import fr.inria.spirals.repairnator.states.ScannedBuildStatus; | ||
import org.hamcrest.core.Is; | ||
import org.hamcrest.core.IsNull; | ||
import org.junit.After; | ||
import org.junit.Before; | ||
import org.junit.Test; | ||
|
||
import java.io.File; | ||
import java.io.IOException; | ||
import java.nio.file.Files; | ||
import java.util.*; | ||
|
||
import static org.hamcrest.CoreMatchers.is; | ||
import static org.hamcrest.CoreMatchers.notNullValue; | ||
import static org.junit.Assert.assertThat; | ||
import static org.junit.Assert.assertTrue; | ||
|
||
public class TestJobStatus { | ||
|
||
private File tmpDir; | ||
|
||
@Before | ||
public void setup() { | ||
RepairnatorConfig config = RepairnatorConfig.getInstance(); | ||
config.setZ3solverPath(Utils4Tests.getZ3SolverPath()); | ||
Utils.setLoggersLevel(Level.ERROR); | ||
} | ||
|
||
@After | ||
public void tearDown() throws IOException { | ||
RepairnatorConfig.deleteInstance(); | ||
FileHelper.deleteFile(tmpDir); | ||
} | ||
|
||
@Test | ||
public void testGatheringPatches() throws IOException { | ||
long buildId = 382484026; // surli/failingProject build | ||
Build build = this.checkBuildAndReturn(buildId, false); | ||
|
||
tmpDir = Files.createTempDirectory("test_nopolrepair").toFile(); | ||
BuildToBeInspected toBeInspected = new BuildToBeInspected(build, null, ScannedBuildStatus.ONLY_FAIL, ""); | ||
ProjectInspector inspector = new ProjectInspector(toBeInspected, tmpDir.getAbsolutePath(), null, null); | ||
|
||
CloneRepository cloneStep = new CloneRepository(inspector); | ||
NopolSingleTestRepair nopolRepair = new NopolSingleTestRepair(); | ||
nopolRepair.setProjectInspector(inspector); | ||
NPERepair npeRepair = new NPERepair(); | ||
npeRepair.setProjectInspector(inspector); | ||
|
||
RepairnatorConfig.getInstance().setRepairTools(new HashSet<>(Arrays.asList(nopolRepair.getRepairToolName(), npeRepair.getRepairToolName()))); | ||
|
||
cloneStep.addNextStep(new CheckoutBuggyBuild(inspector, true)) | ||
.addNextStep(new TestProject(inspector)) | ||
.addNextStep(new GatherTestInformation(inspector, true, new BuildShouldFail(), false)) | ||
.addNextStep(new ComputeClasspath(inspector, true)) | ||
.addNextStep(new ComputeSourceDir(inspector, true, false)) | ||
.addNextStep(nopolRepair) | ||
.addNextStep(npeRepair); | ||
cloneStep.execute(); | ||
|
||
assertThat(nopolRepair.isShouldStop(), is(false)); | ||
assertThat(npeRepair.isShouldStop(), is(false)); | ||
|
||
List<StepStatus> stepStatusList = inspector.getJobStatus().getStepStatuses(); | ||
assertThat(stepStatusList.size(), is(8)); | ||
StepStatus nopolStatus = stepStatusList.get(6); | ||
assertThat(nopolStatus.getStep(), is(nopolRepair)); | ||
StepStatus npeStatus = stepStatusList.get(7); | ||
assertThat(npeStatus.getStep(), is(npeRepair)); | ||
|
||
for (StepStatus stepStatus : stepStatusList) { | ||
assertThat(stepStatus.isSuccess(), is(true)); | ||
} | ||
|
||
String finalStatus = AbstractDataSerializer.getPrettyPrintState(inspector); | ||
assertThat(finalStatus, is("PATCHED")); | ||
|
||
List<RepairPatch> allPatches = inspector.getJobStatus().getAllPatches(); | ||
assertThat(allPatches.size(), is(16)); // 12 (nopol) + 4 (npe) | ||
assertThat(inspector.getJobStatus().getToolDiagnostic().get(nopolRepair.getRepairToolName()), notNullValue()); | ||
} | ||
|
||
private Build checkBuildAndReturn(long buildId, boolean isPR) { | ||
Optional<Build> optionalBuild = RepairnatorConfig.getInstance().getJTravis().build().fromId(buildId); | ||
assertTrue(optionalBuild.isPresent()); | ||
|
||
Build build = optionalBuild.get(); | ||
assertThat(build, IsNull.notNullValue()); | ||
assertThat(buildId, Is.is(build.getId())); | ||
assertThat(build.isPullRequest(), Is.is(isPR)); | ||
|
||
return build; | ||
} | ||
} |