Issue #13672: Kill mutation for ImportControlLoader#13759
Issue #13672: Kill mutation for ImportControlLoader#13759romani merged 1 commit intocheckstyle:masterfrom
Conversation
|
Pitest failure , looks like more old survivals to remove from config is required. |
4466414 to
a4f0b8f
Compare
| catch (ParserConfigurationException | SAXException ex) { | ||
| throw new CheckstyleException("unable to parse " + uri | ||
| + " - " + ex.getMessage(), ex); | ||
| + " - " + ex, ex); |
There was a problem hiding this comment.
Please share cli output (before and after update) to reproduce this exception.
This will print name of exception in addition to message.
We should have Junit test to check message on parser error.
There was a problem hiding this comment.
@Kevin222004 , ping. Share a reason why there is delay/problem with fix.
There was a problem hiding this comment.
ok, I also see no point to remove the code after seeing difference becuase the message we are getting after updating code is already in stack after this cause(). I am creating an input-based test to cover this.
so the difference between this change and in current jar is
updated code jar
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to parse file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml - org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 55; Document root element "import-control", must match DOCTYPE root "null".
current checkstyle version jar
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to parse file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml - Document root element "import-control", must match DOCTYPE root "null".
code + config
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$ cat Test.java
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
public class Test {}
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$ cat config.xml
<?xml version="1.0"?>
<!DOCTYPE module PUBLIC "-//Checkstyle//DTD Checkstyle Configuration 1.3//EN" "https://checkstyle.org/dtds/configuration_1_3.dtd">
<module name="Checker">
<module name="TreeWalker">
<module name="ImportControl">
<property name="file" value="ImportControl.xml"/>
<property name="path" value="Test.java"/>
</module>
</module>
</module>
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$ cat ImportControl.xml
<import-control pkg=".*" strategyOnMismatch="allowed">
<disallow class="java.awt.Image"/>
<disallow class="java.io.File"/>
</import-control>
Cli with current version
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$ java -jar /home/kevin/Downloads/checkstyle-10.12.3-all.jar -c config.xml Test.java
com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - cannot initialize module ImportControl - Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:483)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:207)
at com.puppycrawl.tools.checkstyle.Main.runCheckstyle(Main.java:411)
at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:338)
at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:195)
at com.puppycrawl.tools.checkstyle.Main.main(Main.java:130)
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module ImportControl - Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:128)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:207)
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:478)
... 5 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.tryCopyProperty(AbstractAutomaticBean.java:247)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:200)
at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:123)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2128)
at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2109)
at org.apache.commons.beanutils.BeanUtilsBean.copyProperty(BeanUtilsBean.java:437)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.tryCopyProperty(AbstractAutomaticBean.java:237)
... 9 more
Caused by: java.lang.IllegalArgumentException: Unable to load file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheck.setFile(ImportControlCheck.java:306)
... 17 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to parse file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml - Document root element "import-control", must match DOCTYPE root "null".
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:275)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.loadUri(ImportControlLoader.java:292)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:255)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheck.setFile(ImportControlCheck.java:302)
... 17 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 55; Document root element "import-control", must match DOCTYPE root "null".
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1539)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1806)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:728)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1407)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1292)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3079)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:836)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)
at com.puppycrawl.tools.checkstyle.XmlLoader.parseInputSource(XmlLoader.java:81)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:270)
... 20 more
Checkstyle ends with 1 errors.
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$
See 2nd cause by from bottom
CLI with updated code
kevin@kevin-Inspiron-15-5510:~/Desktop/check_style/ImportControlMain$ java -jar /home/kevin/Desktop/check_style/checkstyle/checkstyle/target/checkstyle-10.12.4-SNAPSHOT-all.jar -c config.xml Test.java
com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module TreeWalker - cannot initialize module ImportControl - Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:483)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:207)
at com.puppycrawl.tools.checkstyle.Main.runCheckstyle(Main.java:411)
at com.puppycrawl.tools.checkstyle.Main.runCli(Main.java:338)
at com.puppycrawl.tools.checkstyle.Main.execute(Main.java:195)
at com.puppycrawl.tools.checkstyle.Main.main(Main.java:130)
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: cannot initialize module ImportControl - Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:128)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:207)
at com.puppycrawl.tools.checkstyle.Checker.setupChild(Checker.java:478)
... 5 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: Cannot set property 'file' to 'ImportControl.xml'
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.tryCopyProperty(AbstractAutomaticBean.java:247)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.configure(AbstractAutomaticBean.java:200)
at com.puppycrawl.tools.checkstyle.TreeWalker.setupChild(TreeWalker.java:123)
... 7 more
Caused by: java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.apache.commons.beanutils.PropertyUtilsBean.invokeMethod(PropertyUtilsBean.java:2128)
at org.apache.commons.beanutils.PropertyUtilsBean.setSimpleProperty(PropertyUtilsBean.java:2109)
at org.apache.commons.beanutils.BeanUtilsBean.copyProperty(BeanUtilsBean.java:437)
at com.puppycrawl.tools.checkstyle.AbstractAutomaticBean.tryCopyProperty(AbstractAutomaticBean.java:237)
... 9 more
Caused by: java.lang.IllegalArgumentException: Unable to load file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheck.setFile(ImportControlCheck.java:306)
... 17 more
Caused by: com.puppycrawl.tools.checkstyle.api.CheckstyleException: unable to parse file:/home/kevin/Desktop/check_style/ImportControlMain/ImportControl.xml - org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 55; Document root element "import-control", must match DOCTYPE root "null".
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:274)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.loadUri(ImportControlLoader.java:292)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:255)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlCheck.setFile(ImportControlCheck.java:302)
... 17 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 55; Document root element "import-control", must match DOCTYPE root "null".
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at java.xml/com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1539)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1806)
at java.xml/com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:728)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1407)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$ContentDriver.scanRootElementHook(XMLDocumentScannerImpl.java:1292)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3079)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:836)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:542)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:889)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:825)
at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:637)
at com.puppycrawl.tools.checkstyle.XmlLoader.parseInputSource(XmlLoader.java:81)
at com.puppycrawl.tools.checkstyle.checks.imports.ImportControlLoader.load(ImportControlLoader.java:270)
... 20 more
Checkstyle ends with 1 errors.
a4f0b8f to
5ee58ff
Compare
| }); | ||
|
|
||
| assertThat(ex.getCause().getCause().getCause().getCause().getCause().getMessage()) | ||
| .isEqualTo("unable to parse file:" + filePathOfImportControlXml |
There was a problem hiding this comment.
in Windows message duet path is different, like unable to parse file:C:\projects\checkstyle\
to avoid this problem you need to split messages validation in two statements
.startsWith("unable to parse file:") and .endsWith(" - Documen root ........")
5ee58ff to
6f1f39d
Compare
Issue #13672: Kill mutation for ImportControlLoader
Mutation
checkstyle/config/pitest-suppressions/pitest-imports-suppressions.xml
Lines 21 to 37 in ccc12eb
Explaination
Test