Skip to content

Commit

Permalink
refactor: move almost all remaining tests to internal org and reactiv…
Browse files Browse the repository at this point in the history
…ate tests (#1218)
  • Loading branch information
andre15silva authored and monperrus committed Jun 3, 2021
1 parent ccdde62 commit d826e15
Show file tree
Hide file tree
Showing 14 changed files with 91 additions and 74 deletions.
Expand Up @@ -114,7 +114,7 @@ public ProjectInspector(BuildToBeInspected buildToBeInspected, String workspace,
this.gitSlug = getRepoSlug();
this.repoLocalPath = workspace + File.separator + getRepoSlug();
long buildId = buildToBeInspected != null ? buildToBeInspected.getBuggyBuild().getId() : 0;
this.repoToPushLocalPath = repoLocalPath+"_topush_" + buildId;
this.repoToPushLocalPath = repoLocalPath + "_topush_" + buildId;
this.m2LocalPath = new File(this.repoLocalPath + File.separator + ".m2").getAbsolutePath();
this.serializers = new ArrayList<AbstractDataSerializer>();
this.gitHelper = new GitHelper();
Expand Down
Expand Up @@ -29,13 +29,11 @@ public void tearDown() throws IOException {

@Test
public void TestPipelineSequencerRepairTool() throws Exception {
// 220926535 -> repairnator/failingProject -> test failure
// ec915681fbd6a8b2c30580b2618e62636204abe4 -> repairnator/failingProject -> syntax
Launcher launcher = new Launcher(new String[]{
"--jtravisendpoint", "https://api.travis-ci.com",
"--build", "220926535",
"--sequencerRepair",
"--gitrepo",
"--gitrepourl", "https://github.com/javierron/failingProject",
"--gitrepourl", "https://github.com/repairnator/failingProject",
"--gitrepoidcommit", "ec915681fbd6a8b2c30580b2618e62636204abe4",
"--launcherMode", "SEQUENCER_REPAIR",
"--workspace", workspaceFolder.getRoot().getAbsolutePath(),
Expand All @@ -58,11 +56,11 @@ public void TestPipelineSequencerRepairTool() throws Exception {

@Test
public void TestPipelineBuildPassBranch() throws Exception{
// e182ccb9ef41b5adab602ed12bfc71b744ff0241 -> javierron/faining project -> test failure
// e182ccb9ef41b5adab602ed12bfc71b744ff0241 -> repairnator/failingProject -> nofixes
Launcher launcher = new Launcher(new String[]{
"--sequencerRepair",
"--gitrepo",
"--gitrepourl", "https://github.com/javierron/failingProject",
"--gitrepourl", "https://github.com/repairnator/failingProject",
"--gitrepoidcommit", "e182ccb9ef41b5adab602ed12bfc71b744ff0241",
"--launcherMode", "SEQUENCER_REPAIR",
"--workspace", workspaceFolder.getRoot().getAbsolutePath(),
Expand All @@ -77,14 +75,12 @@ public void TestPipelineBuildPassBranch() throws Exception{

@Test
public void TestPipelineBuildFailBranch() throws Exception{
// 713361530 -> repairnator/failingProject -> syntax error
// ec915681fbd6a8b2c30580b2618e62636204abe4 -> repairnator/failingProject -> syntax error
Launcher launcher = new Launcher(new String[]{
"--jtravisendpoint", "https://api.travis-ci.com",
"--build", "220941672",
"--sequencerRepair",
"--gitrepo",
"--gitrepourl", "https://github.com/javierron/failingProject",
"--gitrepourl", "https://github.com/repairnator/failingProject",
"--gitrepoidcommit", "ec915681fbd6a8b2c30580b2618e62636204abe4",
"--sequencerRepair",
"--launcherMode", "SEQUENCER_REPAIR",
"--workspace", workspaceFolder.getRoot().getAbsolutePath(),
"--output", outputFolder.getRoot().getAbsolutePath()
Expand Down
Expand Up @@ -47,7 +47,7 @@ public class TestGlobalPatchAnalysis {
public void setup() {
RepairnatorConfig config = RepairnatorConfig.getInstance();
config.setZ3solverPath(Utils4Tests.getZ3SolverPath());
//config.setJTravisEndpoint("https://api.travis-ci.com");
config.setJTravisEndpoint("https://api.travis-ci.com");
}

@After
Expand Down Expand Up @@ -121,7 +121,7 @@ public void testODSPatchClassification() throws IOException {
RepairnatorConfig.getInstance().setPatchClassification(true);
RepairnatorConfig.getInstance().setPatchClassificationMode(RepairnatorConfig.PATCH_CLASSIFICATION_MODE.ODS);

long buildId = 203797975; // fermadeiral/TestingProject build
long buildId = 225936611; // https://travis-ci.com/github/repairnator/TestingProject/builds/225936611
Build build = this.checkBuildAndReturn(buildId, false);

tmpDir = Files.createTempDirectory("patch_classification").toFile();
Expand Down
Expand Up @@ -66,6 +66,7 @@ public void setUp() {
config.setPushRemoteRepo("");
config.setGithubUserEmail("noreply@github.com");
config.setGithubUserName("repairnator");
config.setJTravisEndpoint("https://api.travis-ci.com");
Utils.setLoggersLevel(Level.ERROR);

serializerEngine = mock(SerializerEngine.class);
Expand All @@ -88,8 +89,8 @@ public void tearDown() throws IOException {

@Test
public void testFailingPassingProject() throws IOException, GitAPIException {
long buildIdPassing = 203800961;
long buildIdFailing = 203797975;
long buildIdPassing = 226012005; // https://travis-ci.com/github/repairnator/TestingProject/builds/226012005
long buildIdFailing = 225936611; // https://travis-ci.com/github/repairnator/TestingProject/builds/225936611

tmpDir = Files.createTempDirectory("test_bears1").toFile();

Expand Down Expand Up @@ -142,8 +143,8 @@ public void testFailingPassingProject() throws IOException, GitAPIException {

@Test
public void testPassingPassingProject() throws IOException, GitAPIException {
long buildIdPassing = 201938881;
long buildIdPreviousPassing = 201938325;
long buildIdPassing = 226012099; // https://travis-ci.com/github/repairnator/TestingProject/builds/226012099
long buildIdPreviousPassing = 226012117; // https://travis-ci.com/github/repairnator/TestingProject/builds/226012117

tmpDir = Files.createTempDirectory("test_bears2").toFile();

Expand Down
Expand Up @@ -39,8 +39,7 @@

import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNull.notNullValue;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.*;

public class TestMetrics4BearsJsonFile {

Expand All @@ -61,6 +60,7 @@ public void setUp() {
config.setZ3solverPath(Utils4Tests.getZ3SolverPath());
config.setGithubUserEmail("noreply@github.com");
config.setGithubUserName("repairnator");
config.setJTravisEndpoint("https://api.travis-ci.com");

propertiesToIgnore = new ArrayList<>();
propertiesToIgnore.add("reproductionBuggyBuild.reproductionDateBeginning");
Expand Down Expand Up @@ -95,13 +95,10 @@ public void tearDown() throws IOException {
FileHelper.deleteFile(tmpDir);
}

// FIXME: this is critical: such test case results in error when running in Travis, but locally, running only this test, the test passes.
// Error presented in the Travis log: TestMetrics4BearsJsonFile.testBearsJsonFileWithPassingPassingBuilds:128 » FileNotFound
@Ignore
@Test
public void testBearsJsonFileWithPassingPassingBuilds() throws IOException, ProcessingException {
long buggyBuildCandidateId = 386337343; // https://travis-ci.org/fermadeiral/test-repairnator-bears/builds/386337343
long patchedBuildCandidateId = 386348522; // https://travis-ci.org/fermadeiral/test-repairnator-bears/builds/386348522
long buggyBuildCandidateId = 225920540; // https://travis-ci.com/github/repairnator/test-repairnator-bears/builds/225920540
long patchedBuildCandidateId = 225920529; // https://travis-ci.com/github/repairnator/test-repairnator-bears/builds/225920529

tmpDir = Files.createTempDirectory("test_bears_json_file_passing_passing_builds").toFile();

Expand All @@ -120,8 +117,14 @@ public void testBearsJsonFileWithPassingPassingBuilds() throws IOException, Proc

ObjectMapper jsonMapper = new ObjectMapper();
String workingDir = System.getProperty("user.dir");
workingDir = workingDir.substring(0, workingDir.lastIndexOf("repairnator/"));
String jsonSchemaFilePath = workingDir + "resources/bears-schema.json";
// In CI the base dir has a diferent name, and it changes with the PR
if (workingDir.contains("repairnator/")) {
workingDir = workingDir.substring(0, workingDir.lastIndexOf("repairnator/") + "repairnator/".length());
} else {
// We use the stable part (i.e. the sub-module) to get the workingDir
workingDir = workingDir.substring(0, workingDir.lastIndexOf("src/repairnator-pipeline"));
}
String jsonSchemaFilePath = workingDir + "/resources/bears-schema.json";
File jsonSchemaFile = new File(jsonSchemaFilePath);
JsonNode schemaObject = jsonMapper.readTree(jsonSchemaFile);

Expand Down Expand Up @@ -156,7 +159,7 @@ public void testBearsJsonFileWithPassingPassingBuilds() throws IOException, Proc
String fieldComparisonFailureName = fieldComparisonFailure.getField();
if (fieldComparisonFailureName.equals("tests.failingModule") ||
fieldComparisonFailureName.equals("reproductionBuggyBuild.projectRootPomPath")) {
String path = "fermadeiral/test-repairnator-bears/386337343";
String path = "repairnator/test-repairnator-bears";
String expected = (String) fieldComparisonFailure.getExpected();
expected = expected.substring(expected.indexOf(path), expected.length());
String actual = (String) fieldComparisonFailure.getActual();
Expand All @@ -172,10 +175,13 @@ public void testBearsJsonFileWithPassingPassingBuilds() throws IOException, Proc
}
}

// FIXME: This test is working locally, but there is an issue with the repoToPushLocalPath when running in CI.
// As far as I understood, it is using the repoToPushLocalPath from another test (TestProjectInspector#testPatchFailingProject)
// but wasn't able to fix it.
@Ignore
@Test
public void testRepairnatorJsonFileWithFailingBuild() throws IOException, ProcessingException {
long buggyBuildCandidateId = 208897371; // https://travis-ci.org/surli/failingProject/builds/208897371
long buggyBuildCandidateId = 220944190; // https://travis-ci.com/github/repairnator/failingProject/builds/220944190

tmpDir = Files.createTempDirectory("test_repairnator_json_file_failing_build").toFile();

Expand All @@ -187,15 +193,21 @@ public void testRepairnatorJsonFileWithFailingBuild() throws IOException, Proces
config.setLauncherMode(LauncherMode.REPAIR);
config.setRepairTools(new HashSet<>(Arrays.asList("NopolSingleTest")));

ProjectInspector inspector = new ProjectInspector(buildToBeInspected, tmpDir.getAbsolutePath(), null, null);
ProjectInspector inspector = InspectorFactory.getTravisInspector(buildToBeInspected, tmpDir.getAbsolutePath(), null);
inspector.run();

// check repairnator.json against schema

ObjectMapper jsonMapper = new ObjectMapper();
String workingDir = System.getProperty("user.dir");
workingDir = workingDir.substring(0, workingDir.lastIndexOf("repairnator/"));
String jsonSchemaFilePath = workingDir + "resources/repairnator-schema.json";
// In CI the base dir has a diferent name, and it changes with the PR
if (workingDir.contains("repairnator/")) {
workingDir = workingDir.substring(0, workingDir.lastIndexOf("repairnator/") + "repairnator/".length());
} else {
// We use the stable part (i.e. the sub-module) to get the workingDir
workingDir = workingDir.substring(0, workingDir.lastIndexOf("src/repairnator-pipeline"));
}
String jsonSchemaFilePath = workingDir + "/resources/repairnator-schema.json";
File jsonSchemaFile = new File(jsonSchemaFilePath);
JsonNode schemaObject = jsonMapper.readTree(jsonSchemaFile);

Expand Down Expand Up @@ -228,9 +240,15 @@ public void testRepairnatorJsonFileWithFailingBuild() throws IOException, Proces

for (FieldComparisonFailure fieldComparisonFailure : result.getFieldFailures()) {
String fieldComparisonFailureName = fieldComparisonFailure.getField();
if (fieldComparisonFailureName.equals("tests.failingModule") ||
if (fieldComparisonFailureName.equals("tests.failureDetails[0].detail")) {
String expected = (String) fieldComparisonFailure.getExpected();
String actual = (String) fieldComparisonFailure.getActual();
assertTrue("Property failing: " + fieldComparisonFailureName,
actual.replaceAll("\\s+", "")
.equals(expected.replaceAll("\\s+", "")));
} else if (fieldComparisonFailureName.equals("tests.failingModule") ||
fieldComparisonFailureName.equals("reproductionBuggyBuild.projectRootPomPath")) {
String path = "surli/failingProject/208897371";
String path = "repairnator/failingProject";
String expected = (String) fieldComparisonFailure.getExpected();
expected = expected.substring(expected.indexOf(path), expected.length());
String actual = (String) fieldComparisonFailure.getActual();
Expand Down
Expand Up @@ -267,8 +267,7 @@ public void testGatherTestInformationWhenErroring() throws IOException {

@Test
public void testGatherTestInformationWhenNotFailing() throws IOException {
RepairnatorConfig.getInstance().setJTravisEndpoint("https://api.travis-ci.org");
long buildId = 201176013; // fermadeiral/TestingProject
long buildId = 225938152; // https://travis-ci.com/github/repairnator/TestingProject/builds/225938152

Build build = this.checkBuildAndReturn(buildId, false);

Expand Down Expand Up @@ -323,8 +322,7 @@ public void testGatherTestInformationWhenNotFailing() throws IOException {

@Test
public void testGatherTestInformationWhenNotFailingWithPassingContract() throws IOException {
RepairnatorConfig.getInstance().setJTravisEndpoint("https://api.travis-ci.org");
long buildId = 201176013; // fermadeiral/TestingProject
long buildId = 225938152; // https://travis-ci.com/github/repairnator/TestingProject/builds/225938152

Build build = this.checkBuildAndReturn(buildId, false);

Expand Down
Expand Up @@ -112,8 +112,7 @@ public void testTestProjectWhenErroring() throws IOException {

@Test
public void testTestProjectWhenNotFailing() throws IOException {
RepairnatorConfig.getInstance().setJTravisEndpoint("https://api.travis-ci.org");
long buildId = 201176013; // fermadeiral/TestingProject
long buildId = 225938152; // https://travis-ci.com/github/repairnator/TestingProject/builds/225938152

Build build = this.checkBuildAndReturn(buildId, false);

Expand Down
Expand Up @@ -99,7 +99,7 @@ public void testComputeClasspathWithSingleModuleProject() throws IOException {

@Test
public void testComputeClasspathWithMultiModuleProject() throws IOException {
long buggyBuildCandidateId = 224302680; // andre15silva/test-repairnator-bears (this is temporary until the project is moved to the repairnator org)
long buggyBuildCandidateId = 225920529; // https://travis-ci.com/github/repairnator/test-repairnator-bears/builds/225920529

Build buggyBuildCandidate = this.checkBuildAndReturn(buggyBuildCandidateId, false);

Expand Down
Expand Up @@ -52,7 +52,7 @@ public void tearDown() throws IOException {

@Test
public void testComputeTestDirWithMultiModuleProject() throws IOException {
long buggyBuildCandidateId = 224302680; // andre15silva/test-repairnator-bears (this is temporary until the project is moved to the repairnator org)
long buggyBuildCandidateId = 225920529; // https://travis-ci.com/github/repairnator/test-repairnator-bears/builds/225920529

Build buggyBuildCandidate = this.checkBuildAndReturn(buggyBuildCandidateId, false);

Expand Down

0 comments on commit d826e15

Please sign in to comment.