@Override public boolean apply(InputFile f) { return type == f.type(); }
@CheckForNull @Override public MutableTestable loadPerspective(Class<MutableTestable> perspectiveClass, InputComponent component) { if (component.isFile()) { InputFile inputFile = (InputFile) component; if (inputFile.type() == Type.MAIN) { return new DefaultTestable((DefaultInputFile) inputFile); } } return null; } }
@Override public MutableTestCase setCoverageBlock(InputFile mainFile, List<Integer> lines) { Preconditions.checkArgument(mainFile.type() == Type.MAIN, "Test file can only cover a main file"); DefaultInputFile coveredFile = (DefaultInputFile) mainFile; if (coverageBlocksByTestedFile.containsKey(coveredFile)) { throw new CoverageAlreadyExistsException("The link between " + name() + " and " + coveredFile.key() + " already exists"); } coverageBlocksByTestedFile.put(coveredFile, new DefaultCoverageBlock(this, coveredFile, lines)); return this; }
@Test public void scanProjectWithTestDir() throws IOException { File test = new File(baseDir, "test"); test.mkdir(); File xooFile = new File(test, "sampleTest.xoo"); FileUtils.write(xooFile, "Sample test xoo\ncontent", StandardCharsets.UTF_8); AnalysisResult result = tester.newAnalysis() .properties(builder .put("sonar.sources", "") .put("sonar.tests", "test") .build()) .execute(); assertThat(result.inputFiles()).hasSize(1); assertThat(result.inputFile("test/sampleTest.xoo").type()).isEqualTo(InputFile.Type.TEST); }
@Test public void scanProjectWithSourceDir() throws IOException { File srcDir = new File(baseDir, "src"); srcDir.mkdir(); File xooFile = new File(srcDir, "sample.xoo"); FileUtils.write(xooFile, "Sample xoo\ncontent", StandardCharsets.UTF_8); AnalysisResult result = tester.newAnalysis() .properties(builder .put("sonar.sources", "src") .build()) .execute(); assertThat(result.inputFiles()).hasSize(1); assertThat(result.inputFile("src/sample.xoo").type()).isEqualTo(InputFile.Type.MAIN); assertThat(result.inputFile("src/sample.xoo").relativePath()).isEqualTo("src/sample.xoo"); }
private void updateCoverageFromLineData(final InputFile inputFile) { if (inputFile.type() != Type.MAIN) { return;
@Test public void indexAnyFile() throws IOException { File srcDir = new File(baseDir, "src"); srcDir.mkdir(); File xooFile = new File(srcDir, "sample.xoo"); FileUtils.write(xooFile, "Sample xoo\ncontent"); File otherFile = new File(srcDir, "sample.other"); FileUtils.write(otherFile, "Sample other\ncontent"); AnalysisResult result = tester.newAnalysis() .properties(builder .put("sonar.sources", "src") .build()) .execute(); assertThat(result.inputFiles()).hasSize(2); assertThat(result.inputFile("src/sample.other").type()).isEqualTo(InputFile.Type.MAIN); assertThat(result.inputFile("src/sample.other").relativePath()).isEqualTo("src/sample.other"); assertThat(result.inputFile("src/sample.other").language()).isNull(); }
private void parseFiles(SMInputCursor fileCursor, SensorContext context) throws XMLStreamException { while (fileCursor.getNext() != null) { checkElementName(fileCursor, "file"); String filePath = mandatoryAttribute(fileCursor, "path"); InputFile inputFile = context.fileSystem().inputFile(context.fileSystem().predicates().hasPath(filePath)); if (inputFile == null) { numberOfUnknownFiles++; if (numberOfUnknownFiles <= MAX_STORED_UNKNOWN_FILE_PATHS) { firstUnknownFiles.add(filePath); } continue; } Preconditions.checkState( inputFile.language() != null, "Line %s of report refers to a file with an unknown language: %s", fileCursor.getCursorLocation().getLineNumber(), filePath); Preconditions.checkState( inputFile.type() != InputFile.Type.MAIN, "Line %s of report refers to a file which is not configured as a test file: %s", fileCursor.getCursorLocation().getLineNumber(), filePath); matchedFileKeys.add(inputFile.absolutePath()); MutableTestPlan testPlan = testPlanBuilder.loadPerspective(MutableTestPlan.class, inputFile); SMInputCursor testCaseCursor = fileCursor.childElementCursor(); while (testCaseCursor.getNext() != null) { parseTestCase(testCaseCursor, testPlan); } } }
@Override public boolean apply(InputFile f) { return type == f.type(); }
@Override public boolean apply(InputFile f) { return type == f.type(); }
@Override public boolean apply(InputFile f) { return type == f.type(); }
@CheckForNull @Override public MutableTestable loadPerspective(Class<MutableTestable> perspectiveClass, InputComponent component) { if (component.isFile()) { InputFile inputFile = (InputFile) component; if (inputFile.type() == Type.MAIN) { return new DefaultTestable((DefaultInputFile) inputFile); } } return null; } }
@VisibleForTesting public void scanFile(InputFile inputFile) { if (inputFile.type() == InputFile.Type.MAIN) { scanMainFile(inputFile); } else { scanTestFile(inputFile); } }
@Override public FileType type() { String type = inputFile.type().name(); return FileType.valueOf(type); }
private File getFile(InputFile file) { if (file.type() == InputFile.Type.MAIN) { return getMainResource(file); } else { return getTestResource(file); } }
@Override public MutableTestCase setCoverageBlock(InputFile mainFile, List<Integer> lines) { Preconditions.checkArgument(mainFile.type() == Type.MAIN, "Test file can only cover a main file"); DefaultInputFile coveredFile = (DefaultInputFile) mainFile; if (coverageBlocksByTestedFile.containsKey(coveredFile)) { throw new CoverageAlreadyExistsException("The link between " + name() + " and " + coveredFile.key() + " already exists"); } coverageBlocksByTestedFile.put(coveredFile, new DefaultCoverageBlock(this, coveredFile, lines)); return this; }
@Override public FileType type() { String type = inputFile.type().name(); return FileType.valueOf(type); }
@Override public MutableTestCase setCoverageBlock(InputFile mainFile, List<Integer> lines) { Preconditions.checkArgument(mainFile.type() == Type.MAIN, "Test file can only cover a main file"); DefaultInputFile coveredFile = (DefaultInputFile) mainFile; if (coverageBlocksByTestedFile.containsKey(coveredFile)) { throw new CoverageAlreadyExistsException("The link between " + name() + " and " + coveredFile.key() + " already exists"); } coverageBlocksByTestedFile.put(coveredFile, new DefaultCoverageBlock(this, coveredFile, lines)); return this; }
@CheckForNull @Override public MutableTestable loadPerspective(Class<MutableTestable> perspectiveClass, BatchComponent component) { if (component.isFile()) { InputFile inputFile = (InputFile) component.inputComponent(); if (inputFile.type() == Type.MAIN) { return new DefaultTestable((DefaultInputFile) inputFile); } } return null; } }
private InputFile getResource(ISourceFileCoverage coverage) { String className = fullyQualifiedClassName(coverage.getPackageName(), coverage.getName()); InputFile inputFile = javaResourceLocator.findResourceByClassName(className); if (inputFile == null) { // Do not save measures on resource which doesn't exist in the context return null; } if (inputFile.type() == InputFile.Type.TEST) { return null; } return inputFile; }