Skip to content

Commit 0018779

Browse files
authored
Merge pull request #180 from utPLSQL/feature/support_a_coverage_schemes
Support `a_coverage_schemes` option of utPLSQL
2 parents ba997a9 + 2a7e716 commit 0018779

8 files changed

+194
-23
lines changed

README.md

+3
Original file line numberDiff line numberDiff line change
@@ -179,6 +179,9 @@ utplsql run "my/Username"/"myP@ssword"@connectstring
179179
180180
-seed - Sets the seed to use for random test execution order. If set, it sets -random to true
181181
(--random-test-order-seed)
182+
183+
--coverage-schemes - A comma separated list of schemas on which coverage should be gathered
184+
Format: --coverage-schemes=schema1[,schema2[,schema3]]
182185
```
183186

184187
Parameters -f, -o, -s are correlated. That is parameters -o and -s are controlling outputs for reporter specified by the preceding -f parameter.

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
<groupId>org.utplsql</groupId>
66
<artifactId>cli</artifactId>
7-
<version>3.1.8-SNAPSHOT</version>
7+
<version>3.1.9-SNAPSHOT</version>
88
<packaging>jar</packaging>
99

1010
<name>cli</name>
@@ -23,7 +23,7 @@
2323
<dependency>
2424
<groupId>org.utplsql</groupId>
2525
<artifactId>java-api</artifactId>
26-
<version>3.1.8</version>
26+
<version>3.1.9-SNAPSHOT</version>
2727
<scope>compile</scope>
2828
<exclusions>
2929
<exclusion>

src/main/java/org/utplsql/cli/RunAction.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ TestRunner newTestRunner(List<Reporter> reporterList) {
165165
.excludeObjects(Arrays.asList(config.getExcludePackages()))
166166
.randomTestOrder(config.isRandomTestOrder())
167167
.randomTestOrderSeed(config.getRandomTestOrderSeed())
168-
.addTags(Arrays.asList(config.getTags()));
168+
.addTags(Arrays.asList(config.getTags()))
169+
.addCoverageSchemes(Arrays.asList(config.getCoverageSchemes()));
169170
}
170171

171172
private void outputMainInformation() {

src/main/java/org/utplsql/cli/RunPicocliCommand.java

+24-17
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ public class RunPicocliCommand implements IRunCommand {
2828
split = ",")
2929
private List<String> tags = new ArrayList<>();
3030

31+
@Option(names = {"--coverage-schemes"},
32+
description = "comma-separated list of schemas on which coverage should be gathered",
33+
split = ",")
34+
private List<String> coverageSchemes = new ArrayList<>();
35+
3136

3237
@Option(
3338
names = {"-c", "--color"},
@@ -222,23 +227,25 @@ public RunCommandConfig getRunCommandConfig() {
222227
}
223228
}
224229

225-
return new RunCommandConfig(
226-
connectionString,
227-
suitePaths.toArray(new String[0]),
228-
reporterConfigs.toArray(new ReporterConfig[0]),
229-
colorConsole,
230-
failureExitCode,
231-
skipCompatibilityCheck,
232-
splitOrEmpty(includeObjects),
233-
splitOrEmpty(excludeObjects),
234-
sourceFileMapping,
235-
testFileMapping,
236-
loggerConfigLevel,
237-
timeoutInMinutes,
238-
enableDbmsOutput,
239-
randomTestOrder,
240-
randomTestOrderSeed,
241-
tags.toArray(new String[0]));
230+
return new RunCommandConfig.Builder()
231+
.connectString(connectionString)
232+
.suitePaths(suitePaths.toArray(new String[0]))
233+
.reporters(reporterConfigs.toArray(new ReporterConfig[0]))
234+
.outputAnsiColor(colorConsole)
235+
.failureExitCode(failureExitCode)
236+
.skipCompatibilityCheck(skipCompatibilityCheck)
237+
.includePackages(splitOrEmpty(includeObjects))
238+
.excludePackages(splitOrEmpty(excludeObjects))
239+
.sourceMapping(sourceFileMapping)
240+
.testMapping(testFileMapping)
241+
.logConfigLevel(loggerConfigLevel)
242+
.timeoutInMinutes(timeoutInMinutes)
243+
.dbmsOutput(enableDbmsOutput)
244+
.randomTestOrder(randomTestOrder)
245+
.randomTestOrderSeed(randomTestOrderSeed)
246+
.tags(tags.toArray(new String[0]))
247+
.coverageSchemes(coverageSchemes.toArray(new String[0]))
248+
.create();
242249
}
243250

244251
private RunAction getRunAction() {

src/main/java/org/utplsql/cli/config/RunCommandConfig.java

+118-2
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,10 @@ public class RunCommandConfig extends ConnectionConfig {
2222
private boolean randomTestOrder = false;
2323
private final Integer randomTestOrderSeed;
2424
private final String[] tags;
25+
private final String[] coverageSchemes;
2526

26-
@ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags"})
27-
public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags) {
27+
@ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping", "logConfigLevel", "timeoutInMinutes", "dbmsOutput", "randomTestOrder", "randomTestOrderSeed", "tags", "coverageSchemes"})
28+
public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping, ConfigLevel logConfigLevel, Integer timeoutInMinutes, boolean dbmsOutput, boolean randomTestOrder, Integer randomTestOrderSeed, String[] tags, String[] coverageSchemes) {
2829
super(connectString);
2930
this.suitePaths = suitePaths;
3031
this.reporters = reporters;
@@ -41,6 +42,7 @@ public RunCommandConfig(String connectString, String[] suitePaths, ReporterConfi
4142
this.randomTestOrder = randomTestOrder;
4243
this.randomTestOrderSeed = randomTestOrderSeed;
4344
this.tags = tags;
45+
this.coverageSchemes = coverageSchemes;
4446
}
4547

4648
public String[] getSuitePaths() {
@@ -102,4 +104,118 @@ public boolean isRandomTestOrder() {
102104
public Integer getRandomTestOrderSeed() {
103105
return randomTestOrderSeed;
104106
}
107+
108+
public String[] getCoverageSchemes() {
109+
return coverageSchemes;
110+
}
111+
112+
public static class Builder {
113+
114+
private String connectString;
115+
private String[] suitePaths = new String[0];
116+
private ReporterConfig[] reporters;
117+
private boolean outputAnsiColor;
118+
private Integer failureExitCode;
119+
private boolean skipCompatibilityCheck;
120+
private String[] includePackages = new String[0];
121+
private String[] excludePackages = new String[0];
122+
private FileMapperConfig sourceMapping;
123+
private FileMapperConfig testMapping;
124+
private ConfigLevel logConfigLevel;
125+
private Integer timeoutInMinutes;
126+
private boolean dbmsOutput;
127+
private boolean randomTestOrder;
128+
private Integer randomTestOrderSeed;
129+
private String[] tags = new String[0];
130+
private String[] coverageSchemes = new String[0];
131+
132+
public Builder connectString(String connectString) {
133+
this.connectString = connectString;
134+
return this;
135+
}
136+
137+
public Builder suitePaths(String[] suitePaths) {
138+
this.suitePaths = suitePaths;
139+
return this;
140+
}
141+
142+
public Builder reporters(ReporterConfig[] reporters) {
143+
this.reporters = reporters;
144+
return this;
145+
}
146+
147+
public Builder outputAnsiColor(boolean outputAnsiColor) {
148+
this.outputAnsiColor = outputAnsiColor;
149+
return this;
150+
}
151+
152+
public Builder failureExitCode(Integer failureExitCode) {
153+
this.failureExitCode = failureExitCode;
154+
return this;
155+
}
156+
157+
public Builder skipCompatibilityCheck(boolean skipCompatibilityCheck) {
158+
this.skipCompatibilityCheck = skipCompatibilityCheck;
159+
return this;
160+
}
161+
162+
public Builder includePackages(String[] includePackages) {
163+
this.includePackages = includePackages;
164+
return this;
165+
}
166+
167+
public Builder excludePackages(String[] excludePackages) {
168+
this.excludePackages = excludePackages;
169+
return this;
170+
}
171+
172+
public Builder sourceMapping(FileMapperConfig sourceMapping) {
173+
this.sourceMapping = sourceMapping;
174+
return this;
175+
}
176+
177+
public Builder testMapping(FileMapperConfig testMapping) {
178+
this.testMapping = testMapping;
179+
return this;
180+
}
181+
182+
public Builder logConfigLevel(ConfigLevel logConfigLevel) {
183+
this.logConfigLevel = logConfigLevel;
184+
return this;
185+
}
186+
187+
public Builder timeoutInMinutes(Integer timeoutInMinutes) {
188+
this.timeoutInMinutes = timeoutInMinutes;
189+
return this;
190+
}
191+
192+
public Builder dbmsOutput(boolean dbmsOutput) {
193+
this.dbmsOutput = dbmsOutput;
194+
return this;
195+
}
196+
197+
public Builder randomTestOrder(boolean randomTestOrder) {
198+
this.randomTestOrder = randomTestOrder;
199+
return this;
200+
}
201+
202+
public Builder randomTestOrderSeed(Integer randomTestOrderSeed) {
203+
this.randomTestOrderSeed = randomTestOrderSeed;
204+
return this;
205+
}
206+
207+
public Builder tags(String[] tags) {
208+
this.tags = tags;
209+
return this;
210+
}
211+
212+
public Builder coverageSchemes(String[] coverageSchemes) {
213+
this.coverageSchemes = coverageSchemes;
214+
return this;
215+
}
216+
217+
public RunCommandConfig create() {
218+
return new RunCommandConfig(connectString, suitePaths, reporters, outputAnsiColor, failureExitCode, skipCompatibilityCheck, includePackages, excludePackages, sourceMapping, testMapping, logConfigLevel, timeoutInMinutes, dbmsOutput, randomTestOrder, randomTestOrderSeed, tags, coverageSchemes);
219+
}
220+
}
105221
}

src/test/java/org/utplsql/cli/PicocliRunCommandTest.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ void runCommandAllArguments() throws Exception {
4848
"-type_mapping=\"tsql=PACKAGE BODY\"",
4949
"-owner_subexpression=1",
5050
"-type_subexpression=2",
51-
"-name_subexpression=3");
51+
"-name_subexpression=3",
52+
"--coverage-schemes=schema1,other_schema");
5253

5354
assertNotNull(config.getConnectString());
5455
assertThat( config.getSuitePaths(), is(new String[]{"app.betwnstr", "app.basic"}));
@@ -65,6 +66,7 @@ void runCommandAllArguments() throws Exception {
6566
assertEquals( 123, config.getRandomTestOrderSeed() );
6667
assertNotNull( config.getReporters() );
6768
assertEquals( 1, config.getReporters().length );
69+
assertThat( config.getCoverageSchemes(), is(new String[]{"schema1", "other_schema"}) );
6870

6971
// Source FileMapping
7072
assertNotNull(config.getSourceMapping());

src/test/java/org/utplsql/cli/RunCommandArgumentsTest.java

+11
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public void allArgumentsAreRecognized() {
1818
"-o=sonar_result.xml",
1919
"-s",
2020
"--tags=tag1,tag2",
21+
"--coverage-schemes=schema1,some_other_schema",
2122
"-d",
2223
"-c",
2324
"--failure-exit-code=10",
@@ -64,4 +65,14 @@ void provideTags() {
6465
TestRunner testRunner = runCmd.newTestRunner(new ArrayList<>());
6566
assertThat( testRunner.getOptions().tags, contains("tag1", "tag.2") );
6667
}
68+
69+
@Test
70+
void provideCoverageSchemes() {
71+
IRunCommand runCmd = TestHelper.createRunCommand(TestHelper.getConnectionString(),
72+
"--coverage-schemes=schema-1,some_other_schema"
73+
);
74+
75+
TestRunner testRunner = runCmd.newTestRunner(new ArrayList<>());
76+
assertThat( testRunner.getOptions().coverageSchemes, contains("schema-1", "some_other_schema") );
77+
}
6778
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package org.utplsql.cli;
2+
3+
import org.junit.jupiter.api.Test;
4+
import org.utplsql.api.TestRunner;
5+
import org.utplsql.cli.config.RunCommandConfig;
6+
7+
import java.util.ArrayList;
8+
9+
import static org.hamcrest.MatcherAssert.assertThat;
10+
import static org.hamcrest.Matchers.contains;
11+
12+
public class RunCommandConfigParamsArePassedToTestRunnerTest {
13+
14+
@Test
15+
void tags() {
16+
RunCommandConfig config = new RunCommandConfig.Builder()
17+
.tags(new String[]{"tag1", "tag2"})
18+
.create();
19+
TestRunner testRunner = new RunAction(config).newTestRunner(new ArrayList<>());
20+
assertThat( testRunner.getOptions().tags, contains("tag1", "tag2") );
21+
}
22+
23+
@Test
24+
void coverageSchemes() {
25+
RunCommandConfig config = new RunCommandConfig.Builder()
26+
.coverageSchemes(new String[]{"schema1", "another_schema", "and-another-one"})
27+
.create();
28+
TestRunner testRunner = new RunAction(config).newTestRunner(new ArrayList<>());
29+
assertThat( testRunner.getOptions().coverageSchemes, contains("schema1", "another_schema", "and-another-one") );
30+
}
31+
}

0 commit comments

Comments
 (0)