Skip to content

Commit 4cdf687

Browse files
authored
Merge pull request #49 from test-summary/dont_deference_null
Don't deference null
2 parents 92b70a8 + d0d420b commit 4cdf687

File tree

4 files changed

+144
-15
lines changed

4 files changed

+144
-15
lines changed

package-lock.json

+14-14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/test_parser.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ async function parseJunitXml(xml: any): Promise<TestResult> {
249249

250250
const element = failure_or_error[0]
251251

252-
message = element.$.message
252+
message = element.$ ? element.$.message : undefined
253253
details = element._
254254

255255
counts.failed++

test/junit.ts

+4
Original file line numberDiff line numberDiff line change
@@ -146,4 +146,8 @@ describe("junit", async () => {
146146
expect(result.counts.skipped).to.eql(0)
147147
expect(result.suites.length).to.eql(0)
148148
})
149+
150+
it("parses testsuite with no failure message", async () => {
151+
const result = await parseJunitFile(`${resourcePath}/07-no-failure-message.xml`)
152+
})
149153
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<testsuite errors="0" failures="4" hostname="hypnotoad" name="test" skipped="2" tests="10" time="0.033" timestamp="2022-03-23T23:30:24">
3+
<properties>
4+
<property name="ant.project.invoked-targets" value="test" />
5+
<property name="java.runtime.name" value="OpenJDK Runtime Environment" />
6+
<property name="java.vm.version" value="17.0.1+12-LTS" />
7+
<property name="sun.boot.library.path" value="/Library/Java/JavaVirtualMachines/microsoft-17.jdk/Contents/Home/lib" />
8+
<property name="ant.library.dir" value="/usr/local/share/apache-ant-1.9.16/lib" />
9+
<property name="ant.version" value="Apache Ant(TM) version 1.9.16 compiled on July 10 2021" />
10+
<property name="ant.java.version" value="17" />
11+
<property name="java.vm.vendor" value="Microsoft" />
12+
<property name="java.vendor.url" value="https://www.microsoft.com" />
13+
<property name="path.separator" value=":" />
14+
<property name="java.vm.name" value="OpenJDK 64-Bit Server VM" />
15+
<property name="user.country" value="US" />
16+
<property name="sun.java.launcher" value="SUN_STANDARD" />
17+
<property name="java.vm.specification.name" value="Java Virtual Machine Specification" />
18+
<property name="user.dir" value="/Users/ethomson/Projects/test-summary/examples/java-junit" />
19+
<property name="java.vm.compressedOopsMode" value="Zero based" />
20+
<property name="java.runtime.version" value="17.0.1+12-LTS" />
21+
<property name="basedir" value="/Users/ethomson/Projects/test-summary/examples/java-junit" />
22+
<property name="os.arch" value="x86_64" />
23+
<property name="ant.project.default-target" value="test" />
24+
<property name="java.io.tmpdir" value="/var/folders/7b/lthkg9qn6lbdqlbz092gnwmm0000gn/T/" />
25+
<property name="ant.core.lib" value="/usr/local/share/apache-ant-1.9.16/lib/ant.jar" />
26+
<property name="line.separator" value="&#xa;" />
27+
<property name="ant.file.example" value="/Users/ethomson/Projects/test-summary/examples/java-junit/build.xml" />
28+
<property name="java.vm.specification.vendor" value="Oracle Corporation" />
29+
<property name="os.name" value="Mac OS X" />
30+
<property name="ant.home" value="/usr/local/share/apache-ant-1.9.16" />
31+
<property name="ant.project.name" value="example" />
32+
<property name="sun.jnu.encoding" value="UTF-8" />
33+
<property name="java.library.path" value="/Users/ethomson/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:." />
34+
<property name="jdk.debug" value="release" />
35+
<property name="java.class.version" value="61.0" />
36+
<property name="java.specification.name" value="Java Platform API Specification" />
37+
<property name="sun.management.compiler" value="HotSpot 64-Bit Tiered Compilers" />
38+
<property name="os.version" value="12.1" />
39+
<property name="ant.file" value="/Users/ethomson/Projects/test-summary/examples/java-junit/build.xml" />
40+
<property name="http.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16" />
41+
<property name="user.home" value="/Users/ethomson" />
42+
<property name="file.encoding" value="UTF-8" />
43+
<property name="java.specification.version" value="17" />
44+
<property name="user.name" value="ethomson" />
45+
<property name="java.class.path" value="/usr/local/share/apache-ant-1.9.16/lib/ant-launcher.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-commons-net.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-junit4.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-jai.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-resolver.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-jdepend.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-regexp.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-log4j.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-javamail.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-bcel.jar:/usr/local/share/apache-ant-1.9.16/lib/ant.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-netrexx.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-swing.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-jsch.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-junit.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-launcher.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-antlr.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-testutil.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-oro.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-jmf.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-xalan2.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-apache-bsf.jar:/usr/local/share/apache-ant-1.9.16/lib/ant-commons-logging.jar" />
46+
<property name="java.vm.specification.version" value="17" />
47+
<property name="sun.arch.data.model" value="64" />
48+
<property name="sun.java.command" value="org.apache.tools.ant.launch.Launcher -cp " />
49+
<property name="java.home" value="/Library/Java/JavaVirtualMachines/microsoft-17.jdk/Contents/Home" />
50+
<property name="user.language" value="en" />
51+
<property name="java.specification.vendor" value="Oracle Corporation" />
52+
<property name="java.vm.info" value="mixed mode, sharing" />
53+
<property name="java.version" value="17.0.1" />
54+
<property name="native.encoding" value="UTF-8" />
55+
<property name="java.vendor" value="Microsoft" />
56+
<property name="sun.stderr.encoding" value="UTF-8" />
57+
<property name="ant.file.type.example" value="file" />
58+
<property name="file.separator" value="/" />
59+
<property name="java.version.date" value="2021-10-19" />
60+
<property name="java.vendor.url.bug" value="https://github.com/microsoft/openjdk/issues" />
61+
<property name="sun.io.unicode.encoding" value="UnicodeBig" />
62+
<property name="sun.cpu.endian" value="little" />
63+
<property name="java.vendor.version" value="Microsoft-28056" />
64+
<property name="sun.stdout.encoding" value="UTF-8" />
65+
<property name="ant.file.type" value="file" />
66+
<property name="socksNonProxyHosts" value="local|*.local|169.254/16|*.169.254/16" />
67+
<property name="ftp.nonProxyHosts" value="local|*.local|169.254/16|*.169.254/16" />
68+
</properties>
69+
<testcase classname="test" name="passesTestOne" time="0.0" />
70+
<testcase classname="test" name="passesTestTwo" time="0.0" />
71+
<testcase classname="test" name="passesTestThree" time="0.0" />
72+
<testcase classname="test" name="passesTestFour" time="0.0" />
73+
<testcase classname="test" name="failsTestFive" time="0.002">
74+
<failure>junit.framework.AssertionFailedError: expected:&lt;42&gt; but was:&lt;43&gt;
75+
at test.failsTestFive(Unknown Source)
76+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
77+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
78+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
79+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
80+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
81+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
82+
</failure>
83+
</testcase>
84+
<testcase classname="test" name="failsTestSix" time="0.005">
85+
<failure type="junit.framework.AssertionFailedError">junit.framework.AssertionFailedError: expected:&lt;99&gt; but was:&lt;98&gt;
86+
at test.failsTestSix(Unknown Source)
87+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
88+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
89+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
90+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
91+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
92+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
93+
</failure>
94+
</testcase>
95+
<testcase classname="test" name="failsTestSeven" time="0.001">
96+
<failure type="junit.framework.AssertionFailedError">junit.framework.AssertionFailedError: expected:&lt;[hello]&gt; but was:&lt;[world]&gt;
97+
at test.failsTestSeven(Unknown Source)
98+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
99+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
100+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
101+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
102+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
103+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
104+
</failure>
105+
</testcase>
106+
<testcase classname="test" name="failsTestEight" time="0.002">
107+
<failure>junit.framework.AssertionFailedError: expected:&lt;[world]&gt; but was:&lt;[hello]&gt;
108+
at test.failsTestEight(Unknown Source)
109+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
110+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
111+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
112+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
113+
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
114+
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
115+
</failure>
116+
</testcase>
117+
<testcase classname="test" name="skipsTestNine" time="0.0">
118+
<skipped />
119+
</testcase>
120+
<testcase classname="test" name="skipsTestTen" time="0.0">
121+
<skipped />
122+
</testcase>
123+
<system-out><![CDATA[]]></system-out>
124+
<system-err><![CDATA[]]></system-err>
125+
</testsuite>

0 commit comments

Comments
 (0)