@@ -645,4 +625,54 @@
master
https://github.com/utPLSQL/utPLSQL-SQLDeveloper
+
+
+
+
+
+ default
+
+ true
+
+
+
+
+ org.apache.maven.plugins
+ 3.10.1
+ maven-compiler-plugin
+
+
+
+ ${jdk.version}
+ ${jdk.test.version}
+
+
+
+
+
+
+ idea
+
+ false
+
+ idea.maven.embedder.version
+
+
+
+
+
+ org.apache.maven.plugins
+ 3.10.1
+ maven-compiler-plugin
+
+
+
+ ${jdk.test.version}
+ ${jdk.test.version}
+
+
+
+
+
+
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/coverage/CodeCoverageReporter.java b/sqldev/src/main/java/org/utplsql/sqldev/coverage/CodeCoverageReporter.java
index 8935af0..79bcaa7 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/coverage/CodeCoverageReporter.java
+++ b/sqldev/src/main/java/org/utplsql/sqldev/coverage/CodeCoverageReporter.java
@@ -190,7 +190,7 @@ private void run() {
PreferenceModel preferences;
try {
preferences = PreferenceModel.getInstance(Preferences.getPreferences());
- } catch (NoClassDefFoundError error) {
+ } catch (NoClassDefFoundError | ExceptionInInitializerError error) {
// not running in SQL Developer (in tests)
preferences = PreferenceModel.getInstance(null);
}
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestTemplate.java b/sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestTemplate.java
index daef240..7bbdff3 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestTemplate.java
+++ b/sqldev/src/main/java/org/utplsql/sqldev/oddgen/TestTemplate.java
@@ -41,9 +41,9 @@ public String generateSpec() {
final String packageName = context.getTestPackagePrefix() + objectName + context.getTestPackageSuffix();
sb.append("create or replace package ");
sb.append(packageName);
- sb.append(" is\n\n");
+ sb.append(" is\n");
if (context.isGenerateComments()) {
- sb.append("\t-- generated by utPLSQL for SQL Developer on ");
+ sb.append("\n\t-- generated by utPLSQL for SQL Developer on ");
sb.append(today);
sb.append("\n\n");
}
@@ -53,8 +53,9 @@ public String generateSpec() {
if (!context.getSuitePath().isEmpty()) {
sb.append("\t--%suitepath(");
sb.append(context.getSuitePath());
- sb.append(")\n\n");
+ sb.append(")\n");
}
+ sb.append("\n");
for (final String u : units) {
final String unit = u.toLowerCase();
if (context.getNumberOfTestsPerUnit() > 1
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlWorksheetRunner.java b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlWorksheetRunner.java
index ebc0e7c..5a0773b 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlWorksheetRunner.java
+++ b/sqldev/src/main/java/org/utplsql/sqldev/runner/UtplsqlWorksheetRunner.java
@@ -77,30 +77,30 @@ private CharSequence getCode() {
StringBuilder sb = new StringBuilder();
if (!debug) {
if (preferences.isResetPackage()) {
- sb.append("EXECUTE dbms_session.reset_package;\n");
+ sb.append("execute dbms_session.reset_package;\n");
}
- sb.append("SET SERVEROUTPUT ON SIZE UNLIMITED\n");
+ sb.append("set serveroutput on size unlimited\n");
if (preferences.isClearScreen()) {
- sb.append("CLEAR SCREEN\n");
+ sb.append("clear screen\n");
}
if (pathList.size() == 1) {
- sb.append("EXECUTE ut.run('");
+ sb.append("execute ut.run('");
sb.append(pathList.get(0));
sb.append("');\n");
} else {
// we want a horizontal dense output because we resize the worksheet to fit the command in common cases
- sb.append("EXECUTE ut.run(ut_varchar2_list(");
+ sb.append("execute ut.run(ut_varchar2_list(");
sb.append(StringTools.getCSV(pathList, "").replace("\n", ""));
sb.append("));\n");
}
} else {
- sb.append("BEGIN\n");
+ sb.append("begin\n");
sb.append(" ut.run(\n");
sb.append(" ut_varchar2_list(\n");
sb.append(StringTools.getCSV(pathList, 9));
sb.append(" )\n");
sb.append(" );\n");
- sb.append("END;\n");
+ sb.append("end;\n");
}
return sb;
}
diff --git a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java
index 3182a89..5f225a8 100644
--- a/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java
+++ b/sqldev/src/main/java/org/utplsql/sqldev/ui/runner/RunnerPanel.java
@@ -568,7 +568,7 @@ private void syncDetailTab() {
private PreferenceModel getPreferenceModel() {
try {
return PreferenceModel.getInstance(Preferences.getPreferences());
- } catch (NoClassDefFoundError e) {
+ } catch (NoClassDefFoundError | ExceptionInInitializerError e) {
// running outside of SQL Developer
return PreferenceModel.getInstance(null);
}
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java
index 4ff779a..991dbc8 100644
--- a/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/runner/UtplsqlRunnerTest.java
@@ -46,7 +46,12 @@ public void setupDefaultPreferences() {
preferences = PreferenceModel.getInstance(null);
// the second call will call will succeed and use preferences from user.home
// this ensures that the test and the runner use the same preferences
- preferences = PreferenceModel.getInstance(Preferences.getPreferences());
+ try {
+ preferences = PreferenceModel.getInstance(Preferences.getPreferences());
+ } catch (NoClassDefFoundError e2) {
+ // the second call also failed. no other option left (new behavior with Java17)
+ preferences = PreferenceModel.getInstance(null);
+ }
} finally {
// set defaults manually, since all tests are using the same preference store
preferences.setShowSuccessfulTests(true);
diff --git a/sqldev/src/test/java/org/utplsql/sqldev/test/template/TemplateTest.java b/sqldev/src/test/java/org/utplsql/sqldev/test/template/TemplateTest.java
new file mode 100644
index 0000000..534bdc7
--- /dev/null
+++ b/sqldev/src/test/java/org/utplsql/sqldev/test/template/TemplateTest.java
@@ -0,0 +1,228 @@
+package org.utplsql.sqldev.test.template;
+
+import org.junit.After;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.utplsql.sqldev.model.oddgen.GenContext;
+import org.utplsql.sqldev.oddgen.TestTemplate;
+import org.utplsql.sqldev.test.AbstractJdbcTest;
+import org.utplsql.sqldev.test.coverage.CodeCoverageReporterTest;
+
+import java.sql.SQLException;
+
+public class TemplateTest extends AbstractJdbcTest {
+
+ @Before
+ public void setup() {
+ executeAndIgnore(jdbcTemplate, """
+ create or replace package junit_pkg is
+ procedure proc;
+ end;
+ """);
+ }
+
+
+ @After
+ public void teardown() {
+ executeAndIgnore(jdbcTemplate, "drop package junit_pkg");
+ }
+
+ @Test
+ public void spec_no_comment_no_disable_no_path() throws SQLException {
+ // arrange
+ var context = new GenContext();
+ context.setConn(dataSource.getConnection());
+ context.setObjectType("PACKAGE");
+ context.setObjectName("JUNIT_PKG");
+ context.setTestPackagePrefix("");
+ context.setTestPackageSuffix("_test");
+ context.setTestUnitPrefix("");
+ context.setTestUnitSuffix("");
+ context.setNumberOfTestsPerUnit(1);
+ context.setGenerateComments(false);
+ context.setDisableTests(false);
+ context.setSuitePath("");
+ context.setIndentSpaces(3);
+
+ // act
+ var template = new TestTemplate(context);
+ var actual = template.generateSpec();
+
+ // assert
+ var expected = """
+ create or replace package junit_pkg_test is
+ --%suite(junit_pkg_test)
+
+ --%test
+ procedure proc;
+
+ end junit_pkg_test;
+ /
+ """.trim();
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void spec_no_comment_no_disable_with_path() throws SQLException {
+ // arrange
+ var context = new GenContext();
+ context.setConn(dataSource.getConnection());
+ context.setObjectType("PACKAGE");
+ context.setObjectName("JUNIT_PKG");
+ context.setTestPackagePrefix("");
+ context.setTestPackageSuffix("_test");
+ context.setTestUnitPrefix("");
+ context.setTestUnitSuffix("");
+ context.setNumberOfTestsPerUnit(1);
+ context.setGenerateComments(false);
+ context.setDisableTests(false);
+ context.setSuitePath("org.utplsql");
+ context.setIndentSpaces(3);
+
+ // act
+ var template = new TestTemplate(context);
+ var actual = template.generateSpec();
+
+ // assert
+ var expected = """
+ create or replace package junit_pkg_test is
+ --%suite(junit_pkg_test)
+ --%suitepath(org.utplsql)
+
+ --%test
+ procedure proc;
+
+ end junit_pkg_test;
+ /
+ """.trim();
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void spec_no_comment_disable_with_path() throws SQLException {
+ // arrange
+ var context = new GenContext();
+ context.setConn(dataSource.getConnection());
+ context.setObjectType("PACKAGE");
+ context.setObjectName("JUNIT_PKG");
+ context.setTestPackagePrefix("");
+ context.setTestPackageSuffix("_test");
+ context.setTestUnitPrefix("");
+ context.setTestUnitSuffix("");
+ context.setNumberOfTestsPerUnit(1);
+ context.setGenerateComments(false);
+ context.setDisableTests(true);
+ context.setSuitePath("org.utplsql");
+ context.setIndentSpaces(3);
+
+ // act
+ var template = new TestTemplate(context);
+ var actual = template.generateSpec();
+
+ // assert
+ var expected = """
+ create or replace package junit_pkg_test is
+ --%suite(junit_pkg_test)
+ --%suitepath(org.utplsql)
+
+ --%test
+ --%disabled
+ procedure proc;
+
+ end junit_pkg_test;
+ /
+ """.trim();
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void spec_comment_disable_with_path() throws SQLException {
+ // arrange
+ var context = new GenContext();
+ context.setConn(dataSource.getConnection());
+ context.setObjectType("PACKAGE");
+ context.setObjectName("JUNIT_PKG");
+ context.setTestPackagePrefix("");
+ context.setTestPackageSuffix("_test");
+ context.setTestUnitPrefix("");
+ context.setTestUnitSuffix("");
+ context.setNumberOfTestsPerUnit(1);
+ context.setGenerateComments(true);
+ context.setDisableTests(true);
+ context.setSuitePath("org.utplsql");
+ context.setIndentSpaces(3);
+
+ // act
+ var template = new TestTemplate(context);
+ var actual = template.generateSpec()
+ .replaceAll("[0-9]{4}-[0-9]{2}-[0-9]{2}[ ]{1}[0-9]{2}:[0-9]{2}:[0-9]{2}", "datetime");
+
+ // assert
+ var expected = """
+ create or replace package junit_pkg_test is
+
+ -- generated by utPLSQL for SQL Developer on datetime
+
+ --%suite(junit_pkg_test)
+ --%suitepath(org.utplsql)
+
+ --%test
+ --%disabled
+ procedure proc;
+
+ end junit_pkg_test;
+ /
+ """.trim();
+ Assert.assertEquals(expected, actual);
+ }
+
+ @Test
+ public void spec_comment_disable_with_path_two_units() throws SQLException {
+ // arrange
+ var context = new GenContext();
+ context.setConn(dataSource.getConnection());
+ context.setObjectType("PACKAGE");
+ context.setObjectName("JUNIT_PKG");
+ context.setTestPackagePrefix("");
+ context.setTestPackageSuffix("_test");
+ context.setTestUnitPrefix("");
+ context.setTestUnitSuffix("");
+ context.setNumberOfTestsPerUnit(2);
+ context.setGenerateComments(true);
+ context.setDisableTests(true);
+ context.setSuitePath("org.utplsql");
+ context.setIndentSpaces(3);
+
+ // act
+ var template = new TestTemplate(context);
+ var actual = template.generateSpec()
+ .replaceAll("[0-9]{4}-[0-9]{2}-[0-9]{2}[ ]{1}[0-9]{2}:[0-9]{2}:[0-9]{2}", "datetime");
+
+ // assert
+ var expected = """
+ create or replace package junit_pkg_test is
+
+ -- generated by utPLSQL for SQL Developer on datetime
+
+ --%suite(junit_pkg_test)
+ --%suitepath(org.utplsql)
+
+ --%context(proc)
+
+ --%test
+ --%disabled
+ procedure proc1;
+
+ --%test
+ --%disabled
+ procedure proc2;
+
+ --%endcontext
+
+ end junit_pkg_test;
+ /
+ """.trim();
+ Assert.assertEquals(expected, actual);
+ }
+}
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