package hudson.plugins.checkstyle.parser; import static org.junit.Assert.*; import hudson.plugins.analysis.util.model.FileAnnotation; import hudson.plugins.analysis.util.model.MavenModule; import hudson.plugins.analysis.util.model.Priority; import hudson.plugins.analysis.util.model.WorkspaceFile; import hudson.plugins.checkstyle.rules.CheckStyleRules; import java.io.InputStream; import java.lang.reflect.InvocationTargetException; import java.util.Collection; import java.util.Iterator; import org.junit.Test; /** * Tests the extraction of Checkstyle analysis results. */ public class CheckStyleParserTest { /** * Tests parsing of a simple Checkstyle file. * * @throws InvocationTargetException Signals that an I/O exception has occurred */ @Test public void analyseCheckStyleFile() throws InvocationTargetException { CheckStyleRules.getInstance().initialize(); InputStream inputStream = CheckStyleParserTest.class.getResourceAsStream("checkstyle.xml"); Collection<FileAnnotation> annotations = new CheckStyleParser().parse(inputStream, "empty"); MavenModule module = new MavenModule(); module.addAnnotations(annotations); assertEquals("Wrong number of annotations detected.", 6, module.getNumberOfAnnotations()); Collection<WorkspaceFile> files = module.getFiles(); assertEquals("Wrong number of files detected.", 1, files.size()); WorkspaceFile file = files.iterator().next(); assertEquals("CsharpNamespaceDetector.java not detected.", "X:/Build/Results/jobs/Maven/workspace/tasks/src/main/java/hudson/plugins/tasks/parser/CsharpNamespaceDetector.java", file.getName()); assertEquals("Wrong number of annotations detected.", 6, file.getNumberOfAnnotations()); Iterator<FileAnnotation> iterator = file.getAnnotations().iterator(); boolean hasChecked = false; while (iterator.hasNext()) { FileAnnotation annotation = iterator.next(); assertTrue("Annotations is of wrong type.", annotation instanceof Warning); Warning warning = (Warning)annotation; assertEquals("Wrong number of line ranges detected.", 1, warning.getLineRanges().size()); if (warning.getPrimaryLineNumber() == 22) { assertEquals("Wrong category detected.", "Design", warning.getCategory()); assertEquals("Wrong type detected.", "DesignForExtensionCheck", warning.getType()); assertEquals("Wrong priority detected.", Priority.HIGH, warning.getPriority()); assertTrue("Wrong description detected.", warning.getToolTip().contains( "Checks that classes are designed for extension.")); assertEquals( "Wrong message detected.", "Die Methode 'detectPackageName' ist nicht fr Vererbung entworfen - muss abstract, final oder leer sein.", warning.getMessage()); hasChecked = true; } } assertTrue("Warning is not in checkstyle.xml file.", hasChecked); } } /* Copyright (c) Avaloq Evolution AG */