use of fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild in project repairnator by Spirals-Team.
the class TestComputeSourceDir method testComputeSourceDirWithMultiModuleProject4.
@Test
public void testComputeSourceDirWithMultiModuleProject4() throws IOException {
// pac4j/pac4j
int buildId = 216674182;
int patchedBuildId = 218753299;
Build build = BuildHelper.getBuildFromId(buildId, null);
assertThat(build, notNullValue());
assertThat(buildId, is(build.getId()));
Build patchedBuild = BuildHelper.getBuildFromId(patchedBuildId, null);
assertThat(patchedBuild, notNullValue());
assertThat(patchedBuildId, is(patchedBuild.getId()));
Path tmpDirPath = Files.createTempDirectory("test_computesourcedir3");
File tmpDir = tmpDirPath.toFile();
tmpDir.deleteOnExit();
File repoDir = new File(tmpDir, "repo");
BuildToBeInspected toBeInspected = new BuildToBeInspected(build, patchedBuild, ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES, "");
ProjectInspector inspector = mock(ProjectInspector.class);
when(inspector.getWorkspace()).thenReturn(tmpDir.getAbsolutePath());
when(inspector.getRepoLocalPath()).thenReturn(tmpDir.getAbsolutePath() + "/repo");
when(inspector.getBuildToBeInspected()).thenReturn(toBeInspected);
when(inspector.getBuggyBuild()).thenReturn(build);
when(inspector.getPatchedBuild()).thenReturn(patchedBuild);
when(inspector.getM2LocalPath()).thenReturn(tmpDir.getAbsolutePath() + "/.m2");
when(inspector.getGitHelper()).thenReturn(new GitHelper());
JobStatus jobStatus = new JobStatus(tmpDir.getAbsolutePath() + "/repo");
jobStatus.setFailingModulePath(repoDir.getAbsolutePath());
when(inspector.getJobStatus()).thenReturn(jobStatus);
CloneRepository cloneStep = new CloneRepository(inspector);
ComputeSourceDir computeSourceDir = new ComputeSourceDir(inspector, false);
cloneStep.setNextStep(new CheckoutPatchedBuild(inspector)).setNextStep(computeSourceDir);
cloneStep.execute();
assertThat(computeSourceDir.shouldStop, is(false));
assertThat(computeSourceDir.getPipelineState(), is(PipelineState.SOURCEDIRCOMPUTED));
assertThat(jobStatus.getPipelineState(), is(PipelineState.SOURCEDIRCOMPUTED));
assertThat(jobStatus.getRepairSourceDir(), is(new File[] { new File(repoDir.getAbsolutePath() + "/pac4j-core/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-config/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-oauth/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-cas/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-openid/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-http/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-saml/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-gae/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-oidc/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-jwt/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-ldap/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-sql/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-mongo/src/main/java"), new File(repoDir.getAbsolutePath() + "/pac4j-stormpath/src/main/java") }));
}
use of fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild in project repairnator by Spirals-Team.
the class ProjectInspector method run.
public void run() {
if (this.buildToBeInspected.getStatus() != ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) {
AbstractStep cloneRepo = new CloneRepository(this);
cloneRepo.setNextStep(new CheckoutBuggyBuild(this)).setNextStep(new ComputeSourceDir(this, true)).setNextStep(new ComputeTestDir(this)).setNextStep(new ResolveDependency(this)).setNextStep(new BuildProject(this)).setNextStep(new TestProject(this)).setNextStep(new GatherTestInformation(this, new BuildShouldFail(), false)).setNextStep(new InitRepoToPush(this)).setNextStep(new PushIncriminatedBuild(this)).setNextStep(new NPERepair(this)).setNextStep(new ComputeClasspath(this)).setNextStep(new ComputeSourceDir(this, false)).setNextStep(new AstorRepair(this)).setNextStep(new NopolRepair(this)).setNextStep(new CommitPatch(this, false)).setNextStep(new CheckoutPatchedBuild(this)).setNextStep(new BuildProject(this)).setNextStep(new TestProject(this)).setNextStep(new GatherTestInformation(this, new BuildShouldPass(), true)).setNextStep(new CommitPatch(this, true));
cloneRepo.setDataSerializer(this.serializers);
cloneRepo.setNotifiers(this.notifiers);
cloneRepo.setPipelineState(PipelineState.INIT);
try {
cloneRepo.execute();
} catch (Exception e) {
this.jobStatus.addStepError("Unknown", e.getMessage());
this.logger.error("Exception catch while executing steps: ", e);
this.jobStatus.setFatalError(e);
ErrorNotifier errorNotifier = ErrorNotifier.getInstance();
if (errorNotifier != null) {
errorNotifier.observe(this);
}
for (AbstractDataSerializer serializer : this.serializers) {
serializer.serializeData(this);
}
}
} else {
this.logger.debug("Scanned build is not a failing build.");
}
}
use of fr.inria.spirals.repairnator.process.step.checkoutrepository.CheckoutPatchedBuild in project repairnator by Spirals-Team.
the class ProjectInspector4Bears method run.
public void run() {
AbstractStep firstStep;
AbstractStep cloneRepo = new CloneRepository(this);
if (this.getBuildToBeInspected().getStatus() == ScannedBuildStatus.FAILING_AND_PASSING) {
cloneRepo.setNextStep(new CheckoutBuggyBuild(this)).setNextStep(new ComputeSourceDir(this, true)).setNextStep(new ComputeTestDir(this)).setNextStep(new ResolveDependency(this)).setNextStep(new BuildProject(this, BuildProject.class.getSimpleName() + "PreviousBuild")).setNextStep(new TestProject(this, TestProject.class.getSimpleName() + "PreviousBuild")).setNextStep(new GatherTestInformation(this, new BuildShouldFail(), false, GatherTestInformation.class.getSimpleName() + "PreviousBuild")).setNextStep(new InitRepoToPush(this)).setNextStep(new ComputeClasspath(this)).setNextStep(new NopolRepair(this)).setNextStep(new CommitPatch(this, false)).setNextStep(new CheckoutPatchedBuild(this)).setNextStep(new BuildProject(this, BuildProject.class.getSimpleName() + "Build")).setNextStep(new TestProject(this, TestProject.class.getSimpleName() + "Build")).setNextStep(new GatherTestInformation(this, new BuildShouldPass(), true, GatherTestInformation.class.getSimpleName() + "Build")).setNextStep(new PushIncriminatedBuild(this)).setNextStep(new CommitPatch(this, true));
} else {
if (this.getBuildToBeInspected().getStatus() == ScannedBuildStatus.PASSING_AND_PASSING_WITH_TEST_CHANGES) {
cloneRepo.setNextStep(new CheckoutPatchedBuild(this)).setNextStep(new ComputeSourceDir(this, true)).setNextStep(new ComputeTestDir(this)).setNextStep(new CheckoutBuggyBuildSourceCode(this)).setNextStep(new ResolveDependency(this)).setNextStep(new BuildProject(this, BuildProject.class.getSimpleName() + "PreviousBuildSourceCode")).setNextStep(new TestProject(this, TestProject.class.getSimpleName() + "PreviousBuildSourceCode")).setNextStep(new GatherTestInformation(this, new BuildShouldFail(), false, GatherTestInformation.class.getSimpleName() + "PreviousBuildSourceCode")).setNextStep(new InitRepoToPush(this)).setNextStep(new ComputeClasspath(this)).setNextStep(new NopolRepair(this)).setNextStep(new CommitPatch(this, false)).setNextStep(new CheckoutPatchedBuild(this)).setNextStep(new BuildProject(this, BuildProject.class.getSimpleName() + "Build")).setNextStep(new TestProject(this, TestProject.class.getSimpleName() + "Build")).setNextStep(new GatherTestInformation(this, new BuildShouldPass(), true, GatherTestInformation.class.getSimpleName() + "Build")).setNextStep(new PushIncriminatedBuild(this)).setNextStep(new CommitPatch(this, true));
} else {
this.logger.debug("The pair of scanned builds is not interesting.");
return;
}
}
firstStep = cloneRepo;
firstStep.setDataSerializer(this.getSerializers());
firstStep.setNotifiers(this.getNotifiers());
firstStep.setPipelineState(PipelineState.INIT);
try {
firstStep.execute();
} catch (Exception e) {
this.getJobStatus().addStepError("Unknown", e.getMessage());
this.logger.debug("Exception catch while executing steps: ", e);
}
}
Aggregations