@Override public Optional<CloseableIterator<String>> readFileSource(int fileRef) { ensureInitialized(); File file = delegate.readFileSource(fileRef); if (file == null) { return Optional.empty(); } try { return Optional.of(new CloseableLineIterator(IOUtils.lineIterator(FileUtils.openInputStream(file), UTF_8))); } catch (IOException e) { throw new IllegalStateException("Fail to traverse file: " + file, e); } }
@Test public void return_null_when_no_file_source() { assertThat(underTest.readFileSource(UNKNOWN_COMPONENT_REF)).isNull(); } }
@Test public void read_file_source() throws Exception { ScannerReportWriter writer = new ScannerReportWriter(dir); try (FileOutputStream outputStream = new FileOutputStream(writer.getSourceFile(1))) { IOUtils.write("line1\nline2", outputStream); } try (InputStream inputStream = FileUtils.openInputStream(underTest.readFileSource(1))) { assertThat(IOUtils.readLines(inputStream)).containsOnly("line1", "line2"); } }
@Test public void read_source_lines() throws Exception { ScannerReportWriter writer = new ScannerReportWriter(dir); File file = writer.getFileStructure().fileFor(FileStructure.Domain.SOURCE, 1); FileUtils.writeLines(file, Lists.newArrayList("line1", "line2")); File sourceFile = new ScannerReportReader(dir).readFileSource(1); assertThat(sourceFile).isEqualTo(file); }
@Test public void should_not_skip_report_for_unchanged_files_in_short_branch() { // sanity check, normally report gets generated AnalysisResult result = getResult(tester); assertThat(getResult(tester).getReportComponent(result.inputFile(FILE_PATH))).isNotNull(); int fileId = 2; assertThat(result.getReportReader().readChangesets(fileId)).isNotNull(); assertThat(result.getReportReader().hasCoverage(fileId)).isTrue(); assertThat(result.getReportReader().readFileSource(fileId)).isNotNull(); // file is not skipped for short branches (need coverage, duplications coming soon) AnalysisResult result2 = getResult(tester.setBranchType(BranchType.SHORT)); assertThat(result2.getReportComponent(result2.inputFile(FILE_PATH))).isNotNull(); assertThat(result2.getReportReader().readChangesets(fileId)).isNull(); assertThat(result2.getReportReader().hasCoverage(fileId)).isTrue(); assertThat(result2.getReportReader().readFileSource(fileId)).isNull(); }
@Override public Optional<CloseableIterator<String>> readFileSource(int fileRef) { ensureInitialized(); File file = delegate.readFileSource(fileRef); if (file == null) { return Optional.empty(); } try { return Optional.of(new CloseableLineIterator(IOUtils.lineIterator(FileUtils.openInputStream(file), UTF_8))); } catch (IOException e) { throw new IllegalStateException("Fail to traverse file: " + file, e); } }