Skip to content

Parser crash when the Cucumber test reference contains a double quote

Looking at the code (https://gitlab.com/henixdevelopment/open-source/opentestfactory/java-plugins/-/blob/main/otf-plugins-springboot-parent/OTF-cucumber-report-interpreter/src/main/java/org/opentestfactory/plugins/report/interpreter/cucumber/application/CucumberReportParser.java):
image
image
it seems that the parser will have problems it the test reference contains a double quote.

So I tested with the following test reference:
image

I got the following error

[2022-10-26 15:19:54,683] ERROR in cucumber-report-interpreter: Unexpected XPath error.
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:174)
        at org.opentestfactory.utils.document.DocumentUtils.getNodes(DocumentUtils.java:83)
        at org.opentestfactory.utils.document.DocumentUtils.evaluateXPath(DocumentUtils.java:70)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportParser.extractStatus(CucumberReportParser.java:74)
        at org.opentestfactory.plugins.report.interpreter.base.application.AbstractReportParser.retrieveXmlStatus(AbstractReportParser.java:71)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildWithMap(ReportInterpreterOutputBuilder.java:42)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildOutput(ReportInterpreterOutputBuilder.java:30)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportInterpreterTask.doTask(CucumberReportInterpreterTask.java:54)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:38)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:627)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:545)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1911)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1699)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1608)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1570)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1289)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1208)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1114)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1035)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:977)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:902)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:842)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:806)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:779)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:762)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:138)
        at java.xml/com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:207)
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:166)
        ... 9 common frames omitted
[2022-10-26 15:19:54,684] ERROR in cucumber-report-interpreter: Unexpected XPath error.
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:174)
        at org.opentestfactory.utils.document.DocumentUtils.getNodes(DocumentUtils.java:83)
        at org.opentestfactory.utils.document.DocumentUtils.evaluateXPath(DocumentUtils.java:70)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportParser.extractStatus(CucumberReportParser.java:74)
        at org.opentestfactory.plugins.report.interpreter.base.application.AbstractReportParser.retrieveXmlStatus(AbstractReportParser.java:71)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildWithMap(ReportInterpreterOutputBuilder.java:42)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildOutput(ReportInterpreterOutputBuilder.java:30)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportInterpreterTask.doTask(CucumberReportInterpreterTask.java:54)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:38)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:627)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:545)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1911)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1699)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1608)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1570)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1289)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1208)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1114)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1035)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:977)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:902)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:842)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:806)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:779)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:762)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:138)
        at java.xml/com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:207)
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:166)
        ... 9 common frames omitted
[2022-10-26 15:19:54,686] ERROR in cucumber-report-interpreter: Unexpected XPath error.
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:174)
        at org.opentestfactory.utils.document.DocumentUtils.getNodes(DocumentUtils.java:83)
        at org.opentestfactory.utils.document.DocumentUtils.evaluateXPath(DocumentUtils.java:70)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportParser.extractStatus(CucumberReportParser.java:74)
        at org.opentestfactory.plugins.report.interpreter.base.application.AbstractReportParser.retrieveXmlStatus(AbstractReportParser.java:71)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildWithMap(ReportInterpreterOutputBuilder.java:42)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildOutput(ReportInterpreterOutputBuilder.java:30)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportInterpreterTask.doTask(CucumberReportInterpreterTask.java:54)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:38)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:627)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:545)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1911)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1699)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1608)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1570)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1289)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1208)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1114)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1035)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:977)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:902)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:842)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:806)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:779)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:762)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:138)
        at java.xml/com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:207)
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:166)
        ... 9 common frames omitted
[2022-10-26 15:19:54,687] ERROR in cucumber-report-interpreter: Unexpected XPath error.
javax.xml.xpath.XPathExpressionException: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:174)
        at org.opentestfactory.utils.document.DocumentUtils.getNodes(DocumentUtils.java:83)
        at org.opentestfactory.utils.document.DocumentUtils.evaluateXPath(DocumentUtils.java:70)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportParser.extractStatus(CucumberReportParser.java:82)
        at org.opentestfactory.plugins.report.interpreter.base.application.AbstractReportParser.retrieveXmlStatus(AbstractReportParser.java:71)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildWithMap(ReportInterpreterOutputBuilder.java:42)
        at org.opentestfactory.plugins.report.interpreter.base.application.ReportInterpreterOutputBuilder.buildOutput(ReportInterpreterOutputBuilder.java:30)
        at org.opentestfactory.plugins.report.interpreter.cucumber.application.CucumberReportInterpreterTask.doTask(CucumberReportInterpreterTask.java:54)
        at org.opentestfactory.services.components.logger.WorkflowTask.run(WorkflowTask.java:38)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: javax.xml.transform.TransformerException: Expected ], but found: test
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.error(XPathParser.java:627)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.consumeExpected(XPathParser.java:545)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Predicate(XPathParser.java:1911)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Step(XPathParser.java:1699)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelativeLocationPath(XPathParser.java:1608)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.LocationPath(XPathParser.java:1570)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.PathExpr(XPathParser.java:1289)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnionExpr(XPathParser.java:1208)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.UnaryExpr(XPathParser.java:1114)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.MultiplicativeExpr(XPathParser.java:1035)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AdditiveExpr(XPathParser.java:977)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.RelationalExpr(XPathParser.java:902)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.EqualityExpr(XPathParser.java:842)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.AndExpr(XPathParser.java:806)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.OrExpr(XPathParser.java:779)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.Expr(XPathParser.java:762)
        at java.xml/com.sun.org.apache.xpath.internal.compiler.XPathParser.initXPath(XPathParser.java:138)
        at java.xml/com.sun.org.apache.xpath.internal.XPath.<init>(XPath.java:207)
        at java.xml/com.sun.org.apache.xpath.internal.jaxp.XPathImpl.compile(XPathImpl.java:166)
        ... 9 common frames omitted
[2022-10-26 15:19:54,688] ERROR in cucumber-report-interpreter: Parsing report from the test reference : '20221020bis/src/test/resources/stringtest/246_reverse.feature#mon "test"' returned an error status

The problem is probably also present for some technologies other than Cucumber.