Skip to content

Commit a36ac6a

Browse files
committed
test coverage runner
1 parent 67f76a8 commit a36ac6a

11 files changed

Lines changed: 133 additions & 67 deletions

File tree

.editorconfig

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ charset = utf-8
1717
[*.xml]
1818
indent_style = space
1919
indent_size = 2
20+
max_line_length = 150
2021

2122
[*.java]
2223
indent_style = space
2324
indent_size = 4
25+
max_line_length = 250
2426

2527
# Tab indentation (no size specified)
2628
[Makefile]

.github/workflows/build-on-pull-request.yml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
name: build and test on pull request
22
on:
33
pull_request:
4-
branches: [master]
4+
branches: [main]
55
jobs:
66
build-and-test:
77
runs-on: ubuntu-latest
88
steps:
99
- uses: actions/checkout@v5
10-
- name: Malware Scanner # https://github.com/dell/common-github-actions/blob/main/malware-scanner/README.md
11-
uses: dell/common-github-actions/malware-scanner@main
12-
with:
13-
directories: .
14-
options: -ri
1510
- name: Set up JDK 8 for x64
1611
uses: actions/setup-java@v4
1712
with:
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
name: scan-codecoverage
2+
on:
3+
pull_request:
4+
branches: [main]
5+
jobs:
6+
scan-codecoverage:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v5
10+
- name: Set up JDK 21 for x64
11+
uses: actions/setup-java@v4
12+
with:
13+
java-version: "21"
14+
distribution: "temurin"
15+
architecture: x64
16+
- run: mvn jacoco:report
17+
- run:
18+
- run: zip -r coverage-report-html.zip jacoco/*
19+
working-directory: target/site/
20+
- uses: actions/upload-artifact@v4
21+
with:
22+
name: code-coverage
23+
path: target/site/coverage-report-html.zip
24+
# runs jacoco check which has 100% coverage rules. see pom.xml
25+
- run: mvn verify

.github/workflows/scan-malware.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: scan-malware
22
on:
33
pull_request:
4-
branches: [master]
4+
branches: [main]
55
jobs:
66
scan-malware:
77
runs-on: ubuntu-latest

Jenkinsfile

Whitespace-only changes.

pom.xml

Lines changed: 60 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
<?xml version="1.0" encoding="UTF-8"?>
2-
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3-
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<project
3+
xmlns="http://maven.apache.org/POM/4.0.0"
4+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"
6+
>
47
<modelVersion>4.0.0</modelVersion>
58
<groupId>io.codeclou</groupId>
69
<artifactId>java-junit-xml-merger</artifactId>
7-
<version>1.2.0</version>
10+
<version>1.3.0</version>
811
<organization>
912
<name>codeclou.io</name>
1013
<url>http://codeclou.io/</url>
@@ -22,7 +25,8 @@
2225
<dependency>
2326
<groupId>commons-cli</groupId>
2427
<artifactId>commons-cli</artifactId>
25-
<version>1.4</version>
28+
<version>1.11.0</version>
29+
<scope>compile</scope>
2630
</dependency>
2731
<dependency>
2832
<groupId>junit</groupId>
@@ -33,19 +37,7 @@
3337
<dependency>
3438
<groupId>com.openpojo</groupId>
3539
<artifactId>openpojo</artifactId>
36-
<version>0.8.6</version>
37-
<scope>test</scope>
38-
</dependency>
39-
<dependency>
40-
<groupId>org.powermock</groupId>
41-
<artifactId>powermock-module-junit4</artifactId>
42-
<version>${powermock.version}</version>
43-
<scope>test</scope>
44-
</dependency>
45-
<dependency>
46-
<groupId>org.powermock</groupId>
47-
<artifactId>powermock-api-mockito</artifactId>
48-
<version>${powermock.version}</version>
40+
<version>0.9.1</version>
4941
<scope>test</scope>
5042
</dependency>
5143
<dependency>
@@ -54,20 +46,9 @@
5446
<version>1.10.19</version>
5547
<scope>test</scope>
5648
</dependency>
57-
<dependency>
58-
<groupId>org.powermock</groupId>
59-
<artifactId>powermock-api-mockito-common</artifactId>
60-
<version>1.7.0</version>
61-
<scope>test</scope>
62-
</dependency>
6349
</dependencies>
6450
<build>
6551
<plugins>
66-
<plugin>
67-
<groupId>org.openclover</groupId>
68-
<artifactId>clover-maven-plugin</artifactId>
69-
<version>4.2.0</version>
70-
</plugin>
7152
<plugin>
7253
<artifactId>maven-assembly-plugin</artifactId>
7354
<version>3.1.0</version>
@@ -93,10 +74,59 @@
9374
</execution>
9475
</executions>
9576
</plugin>
77+
<plugin>
78+
<groupId>org.jacoco</groupId>
79+
<artifactId>jacoco-maven-plugin</artifactId>
80+
<version>0.8.14</version>
81+
<executions>
82+
<execution>
83+
<id>prepare-agent</id>
84+
<goals>
85+
<goal>prepare-agent</goal>
86+
</goals>
87+
</execution>
88+
<execution>
89+
<id>report</id>
90+
<goals>
91+
<goal>report</goal>
92+
</goals>
93+
<configuration>
94+
<formats>
95+
<format>XML</format>
96+
</formats>
97+
</configuration>
98+
</execution>
99+
<execution>
100+
<id>jacoco-check</id>
101+
<goals>
102+
<goal>check</goal>
103+
</goals>
104+
<configuration>
105+
<rules>
106+
<rule>
107+
<element>BUNDLE</element>
108+
<limits>
109+
<limit>
110+
<counter>INSTRUCTION</counter>
111+
<value>COVEREDRATIO</value>
112+
<minimum>1</minimum>
113+
<!-- WE AIM FOR 100% COVERAGE -->
114+
</limit>
115+
<limit>
116+
<counter>CLASS</counter>
117+
<value>MISSEDCOUNT</value>
118+
<maximum>0</maximum>
119+
</limit>
120+
</limits>
121+
</rule>
122+
</rules>
123+
</configuration>
124+
</execution>
125+
</executions>
126+
</plugin>
96127
</plugins>
97128
</build>
98129
<properties>
99-
<powermock.version>1.7.0</powermock.version>
100130
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
101131
<maven.compiler.source>1.8</maven.compiler.source>
102132
<maven.compiler.target>1.8</maven.compiler.target>

src/test/java/io/codeclou/java/junit/xml/merger/JunitXmlParserTest.java

Lines changed: 23 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,16 @@
2323
*/
2424
package io.codeclou.java.junit.xml.merger;
2525

26-
import io.codeclou.java.junit.xml.merger.model.TestSuite;
27-
import org.junit.Test;
28-
import org.mockito.internal.util.reflection.Whitebox;
26+
import static junit.framework.TestCase.assertFalse;
27+
import static org.junit.Assert.*;
2928

29+
import io.codeclou.java.junit.xml.merger.model.TestSuite;
3030
import java.io.File;
3131
import java.util.ArrayList;
3232
import java.util.Collection;
3333
import java.util.List;
34-
35-
import static junit.framework.TestCase.assertFalse;
36-
import static org.junit.Assert.*;
34+
import org.junit.Test;
35+
import org.mockito.internal.util.reflection.Whitebox;
3736

3837
public class JunitXmlParserTest {
3938

@@ -53,7 +52,7 @@ public void testParseSuites() throws Exception {
5352
assertFalse(c.isEmpty());
5453
assertEquals(2, c.size());
5554
assertEquals(l.get(0).getName(), "ut.io.codeclou.customfield.editor.model.rest.SortModelTestOne");
56-
assertEquals(l.get(1). getName(), "ut.io.codeclou.customfield.editor.model.rest.SortModelTestTwo");
55+
assertEquals(l.get(1).getName(), "ut.io.codeclou.customfield.editor.model.rest.SortModelTestTwo");
5756
}
5857

5958
@Test
@@ -93,7 +92,7 @@ public void testRunInvalidInput1() throws Exception {
9392

9493
@Test
9594
public void testRunInvalidInput2() throws Exception {
96-
String[] args = {"-i=foo"};
95+
String[] args = { "-i=foo" };
9796
JunitXmlParser parser = new JunitXmlParser();
9897
parser.run(args);
9998
Boolean hasCmdLineParameterErrors = (Boolean) Whitebox.getInternalState(parser, "hasCmdLineParameterErrors");
@@ -102,16 +101,28 @@ public void testRunInvalidInput2() throws Exception {
102101

103102
@Test
104103
public void testRunInvalidInput3() throws Exception {
105-
String[] args = {"-i=foo", "-o=bar.xml"};
104+
String[] args = { "-i=foo", "-o=bar.xml" };
106105
JunitXmlParser parser = new JunitXmlParser();
107106
parser.run(args);
108107
Boolean hasCmdLineParameterErrors = (Boolean) Whitebox.getInternalState(parser, "hasCmdLineParameterErrors");
109108
assertTrue(hasCmdLineParameterErrors);
110109
}
111110

111+
@Test
112+
public void testRunInvalidXmlFiles() throws Exception {
113+
// GIVEN
114+
String[] args = { "-i=src/test/resources/invalid-files/", "-o=bar.xml", "-s=foo bar" };
115+
JunitXmlParser parser = new JunitXmlParser();
116+
// WHEN
117+
parser.run(args);
118+
// THEN
119+
Boolean hasCmdLineParameterErrors = (Boolean) Whitebox.getInternalState(parser, "hasCmdLineParameterErrors");
120+
assertFalse(hasCmdLineParameterErrors);
121+
}
122+
112123
@Test
113124
public void testRunValidInputWithInvalidFolders() throws Exception {
114-
String[] args = {"-i=foo", "-o=?x/bar.xml", "-s=foo"};
125+
String[] args = { "-i=foo", "-o=?x/bar.xml", "-s=foo" };
115126
JunitXmlParser parser = new JunitXmlParser();
116127
parser.run(args);
117128
Boolean hasFileNotFoundErrors = (Boolean) Whitebox.getInternalState(parser, "hasFileNotFoundErrors");
@@ -120,7 +131,7 @@ public void testRunValidInputWithInvalidFolders() throws Exception {
120131

121132
@Test
122133
public void testRunValidInputWithValidFolders() throws Exception {
123-
String[] args = {"-i=src/test/resources/", "-o=output.xml", "-s=foo bar"};
134+
String[] args = { "-i=src/test/resources/", "-o=output.xml", "-s=foo bar" };
124135
JunitXmlParser parser = new JunitXmlParser();
125136
parser.run(args);
126137
Boolean hasCmdLineParameterErrors = (Boolean) Whitebox.getInternalState(parser, "hasCmdLineParameterErrors");
@@ -133,7 +144,7 @@ public void testRunValidInputWithValidFolders() throws Exception {
133144
public void testRunValidInputWithEmptyInputFolder() throws Exception {
134145
File emptyDir = new File("src/test/resources/empty/");
135146
emptyDir.mkdir();
136-
String[] args = {"-i=src/test/resources/empty/", "-o=output.xml", "-s=foo bar"};
147+
String[] args = { "-i=src/test/resources/empty/", "-o=output.xml", "-s=foo bar" };
137148
JunitXmlParser parser = new JunitXmlParser();
138149
parser.run(args);
139150
Boolean hasCmdLineParameterErrors = (Boolean) Whitebox.getInternalState(parser, "hasCmdLineParameterErrors");

src/test/java/io/codeclou/java/junit/xml/merger/MergerTest.java

Lines changed: 6 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,18 @@
2323
*/
2424
package io.codeclou.java.junit.xml.merger;
2525

26-
import org.junit.Before;
2726
import org.junit.Test;
28-
import org.junit.runner.RunWith;
29-
import org.mockito.Mock;
30-
import org.powermock.core.classloader.annotations.PrepareForTest;
31-
import org.powermock.modules.junit4.PowerMockRunner;
3227

33-
import static org.powermock.api.mockito.PowerMockito.whenNew;
34-
35-
@RunWith(PowerMockRunner.class)
3628
public class MergerTest {
3729

38-
@Mock
39-
private JunitXmlParser junitXmlParser;
40-
41-
@Before
42-
public void init() throws Exception {
43-
whenNew(JunitXmlParser.class).withNoArguments().thenReturn(junitXmlParser);
44-
}
45-
4630
@Test
47-
@PrepareForTest({Merger.class})
4831
public void testMergerValidInput() throws Exception {
49-
String[] args = {"-i foo", "-i bar"};
32+
String[] args = { "-i foo", "-i bar" };
5033
Merger.main(args);
5134
}
35+
36+
@Test
37+
public void testCoverage() throws Exception {
38+
new Merger();
39+
}
5240
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?xml version="1.0" encoding="UTF-8" ?>
2+
<testsuites>
3+
<testsuite tests="3" failures="0" name="ut.io.codeclou.customfield.editor.model.rest.SortModelTestOne" time="0.029" errors="0" skipped="0">
4+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testIsValid" time="0"/>
5+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testToSortCollator" time="0.029"/>
6+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testIsDescending" time="0"/>
7+
</testsuite>
8+
<testsuite tests="3" failures="0" name="ut.io.codeclou.customfield.editor.model.rest.SortModelTestTwo" time="0.029" errors="0" skipped="0">
9+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testIsValid" time="0"/>
10+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testToSortCollator" time="0.029"/>
11+
<testcase classname="ut.io.codeclou.customfield.editor.model.rest.SortModelTest" name="testIsDescending" time="0"/>
12+
</testsuite>
13+
</testsuites>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
<noxml>testsuites fails</noxml>

0 commit comments

Comments
 (0)