private static void addFileDataPerModule(MultiModuleProjectRepository data, List<ComponentDto> moduleChildren, List<FilePathWithHashDto> files) { Map<String, String> moduleKeysByUuid = newHashMap(); for (ComponentDto module : moduleChildren) { moduleKeysByUuid.put(module.uuid(), module.getKey()); } for (FilePathWithHashDto file : files) { FileData fileData = new FileData(file.getSrcHash(), file.getRevision()); data.addFileDataToModule(moduleKeysByUuid.get(file.getModuleUuid()), file.getPath(), fileData); } }
@Test public void add_file_data_to_nodule() { FileData fileData1 = new FileData("123", "456"); FileData fileData2 = new FileData("153", "6432"); FileData fileData3 = new FileData("987", "6343"); repository.addFileDataToModule("Module1", "/Abc.java", fileData1); repository.addFileDataToModule("Module1", "/Xyz.java", fileData2); repository.addFileDataToModule("Module2", "/Def.java", fileData3); assertThat(repository.repositoriesByModule()).hasSize(2); assertThat(repository.fileData("Module1", "/Xyz.java")).isEqualTo(fileData2); assertThat(repository.fileData("Module2", "/Def.java")).isEqualTo(fileData3); }
@Test public void add_file_does_not_add_the_file_without_path() { FileData fileData = new FileData("123", "456"); repository.addFileDataToModule("module1", null, fileData); assertThat(repository.repositoriesByModule()).hasSize(0); }
@Test public void add_file_does_not_add_the_file_without_revision_and_hash() { FileData fileData = new FileData(null, null); repository.addFileDataToModule("module2", "/Abc.java", fileData); assertThat(repository.repositoriesByModule()).hasSize(0); } }
@Test public void use_old_file_structure_for_projects_with_submodules() { String projectKey = "org.codehaus.sonar:sonar"; ProjectRepositories projectRepositories = new MultiModuleProjectRepository() .addFileDataToModule("module-1", "src/main/java/SomeClass.java", new FileData("789456", "123456789")); when(projectDataLoader.load(any(ProjectDataQuery.class))).thenReturn(projectRepositories); WsProjectResponse wsProjectResponse = ws.newRequest() .setParam("key", projectKey) .setParam("profile", "Default") .executeProtobuf(WsProjectResponse.class); assertThat(wsProjectResponse.getFileDataByPathMap()).isEmpty(); assertThat(wsProjectResponse.getFileDataByModuleAndPathCount()).isEqualTo(1); WsProjectResponse.FileDataByPath moduleData = wsProjectResponse.getFileDataByModuleAndPathMap().get("module-1"); assertThat(moduleData).isNotNull(); assertThat(moduleData.getFileDataByPathCount()).isEqualTo(1); WsProjectResponse.FileData fileData = moduleData.getFileDataByPathMap().get("src/main/java/SomeClass.java"); assertThat(fileData).isNotNull(); assertThat(fileData.getHash()).isEqualTo("789456"); assertThat(fileData.getRevision()).isEqualTo("123456789"); } }
/** * SONAR-7084 */ @Test public void do_not_fail_when_a_path_is_null() { String projectKey = "org.codehaus.sonar:sonar"; ProjectRepositories projectRepositories = new MultiModuleProjectRepository() .addFileDataToModule("module-1", null, new FileData(null, null)); when(projectDataLoader.load(any(ProjectDataQuery.class))).thenReturn(projectRepositories); WsProjectResponse wsProjectResponse = ws.newRequest() .setParam("key", projectKey) .setParam("profile", "Default") .executeProtobuf(WsProjectResponse.class); assertThat(wsProjectResponse.getFileDataByModuleAndPathMap()).isEmpty(); }