diff options
author | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-10-13 10:33:56 +0200 |
---|---|---|
committer | Sébastien Lesaint <sebastien.lesaint@sonarsource.com> | 2015-10-14 11:50:47 +0200 |
commit | 48ba89d7ff49ed5355761e6148beb5efb1fb69a6 (patch) | |
tree | 6c6ff732464e58e42f35dec39843eb4cfbf54f00 | |
parent | 844fb1f476fa55d9c1d6b0f49cb86f879d2abb85 (diff) | |
download | sonarqube-48ba89d7ff49ed5355761e6148beb5efb1fb69a6.tar.gz sonarqube-48ba89d7ff49ed5355761e6148beb5efb1fb69a6.zip |
SONAR-6397 remove last line trick from ComputeFileSourceData
added an extra empty line to the end of the file source iterator is now implemented directly into the CloseableIterator returned by the SourceLinesRepository
3 files changed, 12 insertions, 73 deletions
diff --git a/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java b/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java index 1b86cda3504..af395d43438 100644 --- a/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java +++ b/server/sonar-server/src/main/java/org/sonar/server/computation/source/ComputeFileSourceData.java @@ -46,12 +46,7 @@ public class ComputeFileSourceData { Data data = new Data(numberOfLines); while (linesIterator.hasNext()) { currentLine++; - read(data, linesIterator.next(), hasNextLine()); - } - // Process last line - if (hasNextLine()) { - currentLine++; - read(data, "", false); + read(data, linesIterator.next(), linesIterator.hasNext()); } return data; } @@ -68,10 +63,6 @@ public class ComputeFileSourceData { } } - private boolean hasNextLine() { - return linesIterator.hasNext() || currentLine < numberOfLines; - } - public static class Data { private static final Joiner LINE_RETURN_JOINER = Joiner.on('\n'); diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java index 42ca4aad098..e2b93ce96d0 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/source/ComputeFileSourceDataTest.java @@ -59,22 +59,6 @@ public class ComputeFileSourceDataTest { } @Test - public void compute_missing_last_line() { - ComputeFileSourceData computeFileSourceData = new ComputeFileSourceData( - newArrayList("line1").iterator(), - Lists.<LineReader>newArrayList(new MockLineReader()), - // There's only one line in the line iterator but the file has 2 lines - 2); - - ComputeFileSourceData.Data data = computeFileSourceData.compute(); - assertThat(data.getLineHashes()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b\n"); - assertThat(data.getSrcHash()).isEqualTo("1ddab9058a07abc0db2605ab02a61a00"); - assertThat(data.getFileSourceData().getLinesList()).hasSize(2); - assertThat(data.getFileSourceData().getLines(0).getHighlighting()).isEqualTo("h-1"); - assertThat(data.getFileSourceData().getLines(1).getHighlighting()).isEqualTo("h-2"); - } - - @Test public void remove_tabs_and_spaces_in_line_hashes() { String refLineHashes = new ComputeFileSourceData( newArrayList("line1").iterator(), diff --git a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java index 9e5a893d02d..db6a0748f47 100644 --- a/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java +++ b/server/sonar-server/src/test/java/org/sonar/server/computation/step/PersistFileSourcesStepTest.java @@ -52,39 +52,33 @@ import static org.mockito.Mockito.when; public class PersistFileSourcesStepTest extends BaseStepTest { private static final int FILE_REF = 3; - private static final String PROJECT_UUID = "PROJECT"; private static final String PROJECT_KEY = "PROJECT_KEY"; private static final String FILE_UUID = "FILE"; + private static final long NOW = 123456789L; - System2 system2 = mock(System2.class); + private System2 system2 = mock(System2.class); @Rule public DbTester dbTester = DbTester.create(system2); - @Rule public TreeRootHolderRule treeRootHolder = new TreeRootHolderRule(); - @Rule public BatchReportReaderRule reportReader = new BatchReportReaderRule(); - @Rule public ScmInfoRepositoryRule scmInfoRepository = new ScmInfoRepositoryRule(); - @Rule public SourceLinesRepositoryRule fileSourceRepository = new SourceLinesRepositoryRule(); - DbClient dbClient = dbTester.getDbClient(); - DbSession session = dbTester.getSession(); - - PersistFileSourcesStep underTest; + private DbClient dbClient = dbTester.getDbClient(); + private DbSession session = dbTester.getSession(); - long now = 123456789L; + private PersistFileSourcesStep underTest; @Before public void setup() { dbTester.truncateTables(); - when(system2.now()).thenReturn(now); + when(system2.now()).thenReturn(NOW); underTest = new PersistFileSourcesStep(dbClient, system2, treeRootHolder, reportReader, fileSourceRepository, scmInfoRepository); } @@ -106,8 +100,8 @@ public class PersistFileSourcesStepTest extends BaseStepTest { assertThat(fileSourceDto.getBinaryData()).isNotEmpty(); assertThat(fileSourceDto.getDataHash()).isNotEmpty(); assertThat(fileSourceDto.getLineHashes()).isNotEmpty(); - assertThat(fileSourceDto.getCreatedAt()).isEqualTo(now); - assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now); + assertThat(fileSourceDto.getCreatedAt()).isEqualTo(NOW); + assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); DbFileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData()); assertThat(data.getLinesCount()).isEqualTo(2); @@ -118,35 +112,6 @@ public class PersistFileSourcesStepTest extends BaseStepTest { } @Test - public void persist_last_line() { - treeRootHolder.setRoot(ReportComponent.builder(Component.Type.PROJECT, 1).setUuid(PROJECT_UUID).setKey(PROJECT_KEY).addChildren( - ReportComponent.builder(Component.Type.FILE, FILE_REF).setUuid(FILE_UUID).setKey("PROJECT_KEY:file").build()) - .build()); - - reportReader.putComponent(BatchReport.Component.newBuilder() - .setRef(1) - .setType(Constants.ComponentType.PROJECT) - .addChildRef(FILE_REF) - .build()); - reportReader.putComponent(BatchReport.Component.newBuilder() - .setRef(FILE_REF) - .setType(Constants.ComponentType.FILE) - // Lines is set to 3 but only 2 lines are read from the file -> the last lines should be added - .setLines(3) - .build()); - fileSourceRepository.addLines(FILE_REF, "line 1;", "line 2;"); - - underTest.execute(); - - assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); - FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID); - DbFileSources.Data data = FileSourceDto.decodeSourceData(fileSourceDto.getBinaryData()); - assertThat(data.getLinesCount()).isEqualTo(3); - assertThat(data.getLines(2).getLine()).isEqualTo(3); - assertThat(data.getLines(2).getSource()).isEmpty(); - } - - @Test public void persist_source_hashes() { initBasicReport(2); @@ -393,7 +358,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past); - assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now); + assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1"); } @@ -425,7 +390,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past); - assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now); + assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getSrcHash()).isEqualTo("137f72c3708c6bd0de00a0e5a69c699b"); } @@ -464,7 +429,7 @@ public class PersistFileSourcesStepTest extends BaseStepTest { assertThat(dbTester.countRowsOfTable("file_sources")).isEqualTo(1); FileSourceDto fileSourceDto = dbClient.fileSourceDao().selectSourceByFileUuid(session, FILE_UUID); assertThat(fileSourceDto.getCreatedAt()).isEqualTo(past); - assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(now); + assertThat(fileSourceDto.getUpdatedAt()).isEqualTo(NOW); assertThat(fileSourceDto.getRevision()).isEqualTo("rev-1"); } @@ -509,7 +474,6 @@ public class PersistFileSourcesStepTest extends BaseStepTest { reportReader.putComponent(BatchReport.Component.newBuilder() .setRef(FILE_REF) .setType(Constants.ComponentType.FILE) - .setLines(numberOfLines) .build()); for (int i = 1; i <= numberOfLines; i++) { |