getTypeMapping() {
+ return typeMapping;
+ }
+
+ public Integer getOwnerSubexpression() {
+ return ownerSubexpression;
+ }
+
+ public Integer getNameSubexpression() {
+ return nameSubexpression;
+ }
+
+ public Integer getTypeSubexpression() {
+ return typeSubexpression;
+ }
+}
diff --git a/src/main/java/org/utplsql/cli/config/ReporterConfig.java b/src/main/java/org/utplsql/cli/config/ReporterConfig.java
new file mode 100644
index 0000000..8729848
--- /dev/null
+++ b/src/main/java/org/utplsql/cli/config/ReporterConfig.java
@@ -0,0 +1,29 @@
+package org.utplsql.cli.config;
+
+import java.beans.ConstructorProperties;
+
+public class ReporterConfig {
+
+ private final String name;
+ private final String output;
+ private boolean screen = false;
+
+ @ConstructorProperties({"name", "output", "screen"})
+ public ReporterConfig( String name, String output, Boolean screen ) {
+ this.name = name;
+ this.output = output;
+ if ( screen != null ) this.screen = screen;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public String getOutput() {
+ return output;
+ }
+
+ public boolean isScreen() {
+ return screen;
+ }
+}
diff --git a/src/main/java/org/utplsql/cli/config/TestRunnerConfig.java b/src/main/java/org/utplsql/cli/config/TestRunnerConfig.java
new file mode 100644
index 0000000..18f95b8
--- /dev/null
+++ b/src/main/java/org/utplsql/cli/config/TestRunnerConfig.java
@@ -0,0 +1,67 @@
+package org.utplsql.cli.config;
+
+
+import java.beans.ConstructorProperties;
+
+public class TestRunnerConfig extends ConnectionConfig {
+
+ private final String[] suitePaths;
+ private final ReporterConfig[] reporters;
+ private boolean outputAnsiColor = false;
+ private final Integer failureExitCode;
+ private boolean skipCompatibilityCheck = false;
+ private final String[] includePackages;
+ private final String[] excludePackages;
+ private final FileMapperConfig sourceMapping;
+ private final FileMapperConfig testMapping;
+
+ @ConstructorProperties({"connectString", "suitePaths", "reporters", "outputAnsiColor", "failureExitCode", "skipCompatibilityCheck", "includePackages", "excludePackages", "sourceMapping", "testMapping"})
+ public TestRunnerConfig(String connectString, String[] suitePaths, ReporterConfig[] reporters, boolean outputAnsiColor, Integer failureExitCode, boolean skipCompatibilityCheck, String[] includePackages, String[] excludePackages, FileMapperConfig sourceMapping, FileMapperConfig testMapping) {
+ super(connectString);
+ this.suitePaths = suitePaths;
+ this.reporters = reporters;
+ this.outputAnsiColor = outputAnsiColor;
+ this.failureExitCode = failureExitCode;
+ this.skipCompatibilityCheck = skipCompatibilityCheck;
+ this.includePackages = includePackages;
+ this.excludePackages = excludePackages;
+ this.sourceMapping = sourceMapping;
+ this.testMapping = testMapping;
+ }
+
+ public String[] getSuitePaths() {
+ return suitePaths;
+ }
+
+ public ReporterConfig[] getReporters() {
+ return reporters;
+ }
+
+ public boolean isOutputAnsiColor() {
+ return outputAnsiColor;
+ }
+
+ public Integer getFailureExitCode() {
+ return failureExitCode;
+ }
+
+ public boolean isSkipCompatibilityCheck() {
+ return skipCompatibilityCheck;
+ }
+
+ public String[] getIncludePackages() {
+ return includePackages;
+ }
+
+ public String[] getExcludePackages() {
+ return excludePackages;
+ }
+
+ public FileMapperConfig getSourceMapping() {
+ return sourceMapping;
+ }
+
+ public FileMapperConfig getTestMapping() {
+ return testMapping;
+ }
+}
diff --git a/src/test/java/org/utplsql/cli/YmlConfigTest.java b/src/test/java/org/utplsql/cli/YmlConfigTest.java
new file mode 100644
index 0000000..1271cbb
--- /dev/null
+++ b/src/test/java/org/utplsql/cli/YmlConfigTest.java
@@ -0,0 +1,64 @@
+package org.utplsql.cli;
+
+import com.beust.jcommander.JCommander;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
+import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+import org.junit.jupiter.api.Test;
+import org.utplsql.cli.config.TestRunnerConfig;
+
+import java.io.File;
+import java.io.IOException;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+public class YmlConfigTest {
+
+ @Test
+ public void letsPlayAround() throws IOException {
+
+ ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
+
+ String testConfigFile = "src/test/resources/test-config.yml";
+
+ TestRunnerConfig config = mapper.readValue(new File(testConfigFile), TestRunnerConfig.class);
+
+ System.out.println(ReflectionToStringBuilder.toString(config, ToStringStyle.MULTI_LINE_STYLE));
+ }
+
+ @Test
+ public void configTest() {
+ JCommander jc = new JCommander();
+ jc.setProgramName("utplsql");
+
+ CommandProvider cmdProvider = new CommandProvider();
+
+ cmdProvider.commands().forEach(cmd -> jc.addCommand(cmd.getCommand(), cmd));
+
+ jc.parse("run", TestHelper.getConnectionString(),
+ "-f=ut_coverage_html_reporter", "-o=test.html",
+ "-f=ut_documentation_reporter", "-s",
+ "-exclude=app.award_bonus,app.betwnstr");
+
+ RunCommand cmd = (RunCommand) cmdProvider.getCommand(jc.getParsedCommand());
+
+ TestRunnerConfig config = cmd.getConfig();
+
+ assertEquals(TestHelper.getConnectionString(), config.getConnectString());
+ assertEquals(2, config.getReporters().length);
+ assertEquals("ut_coverage_html_reporter", config.getReporters()[0].getName());
+ assertEquals("test.html", config.getReporters()[0].getOutput());
+ assertEquals(false, config.getReporters()[0].isScreen());
+ assertEquals("ut_documentation_reporter", config.getReporters()[1].getName());
+ assertNull(config.getReporters()[1].getOutput());
+ assertEquals(true, config.getReporters()[1].isScreen());
+ assertEquals("app.award_bonus", config.getExcludePackages()[0]);
+ assertEquals("app.betwnstr", config.getExcludePackages()[1]);
+
+ }
+
+
+}
diff --git a/src/test/resources/test b/src/test/resources/test
new file mode 100644
index 0000000..abf95a1
--- /dev/null
+++ b/src/test/resources/test
@@ -0,0 +1,26 @@
+utPLSQL-cli/bin/utplsql run test_runner/pass@db_url \
+ -p=hr,app \
+ -f=ut_documentation_reporter \
+ -f=ut_coverage_html_reporter \
+ -o=coverage.html \
+ -f=ut_sonar_test_reporter \
+ -o=sonar.txt \
+ -s \
+ -c \
+ --failure-exit-code=2 \
+ -scc \
+ -include=app.betwnstr,mypackage \
+ -exclude=mypackage.blugg,stuff \
+ -source_path=sources \
+ -regex_expression="/(\w+)/(\w+)/(\w+)\..{3}$" \
+ -type_mapping="packages_bodies=PACKAGE BODY/types_bodies=TYPE BODY/triggers=TRIGGER/procedures=PROCEDURE/functions=FUNCTION" \
+ -owner_subexpression=2 \
+ -name_subexpression=3 \
+ -type_subexpression=4 \
+ -test_path=tests -regex_expression="/(\w+)/(\w+)/(\w+)\..{3}$" \
+ -type_mapping="body=PACKAGE BODY/type_body=TYPE BODY/trigger=TRIGGER" \
+ -owner_subexpression=2 \
+ -name_subexpression=3 \
+ -type_subexpression=4 \
+ -f=ut_coverage_html_reporter -o=coverage.html \
+ -f=ut_sonar_test_reporter -o=test_results.xml
\ No newline at end of file
diff --git a/src/test/resources/test-config.yml b/src/test/resources/test-config.yml
new file mode 100644
index 0000000..f8afb4a
--- /dev/null
+++ b/src/test/resources/test-config.yml
@@ -0,0 +1,44 @@
+# utPLSQL cli Test-Config
+---
+connectString: app/app@localhost:1522/ORCLPDB1
+suitePaths:
+ - app.betwnstr
+ - app
+reporters:
+ - name: ut_documentation_reporter
+ - name: ut_coverage_html_reporter
+ output: coverage.html
+ - name: ut_sonar_test_reporter
+ output: sonar.txt
+ screen: true
+outputAnsiColor: true
+failureExitCode: 2
+skipCompatibilityCheck: true
+includePackages: [app.betwnstr, mypackage]
+excludePackages:
+ - mypackage.blubb
+ - stuff
+sourceMapping:
+ path: path/to/source
+ owner: app
+ regexExpression: /(\w+)/(\w+)/(\w+)\..{3}$
+ typeMapping:
+ packages_bodies: PACKAGE BODY
+ types_bodies: TYPE BODY
+ triggers: TRIGGER
+ procedures: PROCEDURE
+ functions: FUNCTION
+ ownerSubexpression: 1
+ nameSubexpression: 3
+ typeSubexpression: 2
+testMapping:
+ path: path/to/test
+ owner: app
+ regexExpression: /(\w+)/(\w+)/(\w+)\..{3}$
+ typeMapping:
+ body: PACKAGE BODY
+ type_body: TYPE BODY
+ trigger: TRIGGER
+ ownerSubexpression: 1
+ nameSubexpression: 3
+ typeSubexpression: 2
\ No newline at end of file
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy