From 1afc55652f9fd97a37d16784170838d01245117a Mon Sep 17 00:00:00 2001 From: Simon Martinelli Date: Mon, 22 Nov 2021 17:26:56 +0100 Subject: [PATCH] Migration to GitHub Actions --- .github/init_scripts/1_install_utplsql.sh | 9 + .github/init_scripts/2_create_users.sql | 25 ++ .github/init_scripts/3_create_app_objects.sql | 263 ++++++++++++++++++ .../4_create_source_owner_objects.sql | 47 ++++ .../5_create_tests_owner_objects.sql | 215 ++++++++++++++ .../workflows/{maven-test.yml => build.yml} | 0 .travis.yml | 62 ----- README.md | 2 +- .../utplsql/maven/plugin/UtPLSQLMojoIT.java | 69 ++--- .../utplsql/coverage-sonar-reporter.xml | 10 +- .../foo/package_bodies/PKG_TEST_ME.sql | 3 +- .../utplsql/coverage-sonar-reporter.xml | 10 +- .../sources/app/packages/PKG_TEST_ME.bdy | 3 +- .../utplsql/coverage-sonar-reporter.xml | 10 +- .../scripts/sources/APP.PKG_TEST_ME.bdy | 3 +- .../utplsql/coverage-sonar-reporter.xml | 10 +- 16 files changed, 605 insertions(+), 136 deletions(-) create mode 100644 .github/init_scripts/1_install_utplsql.sh create mode 100644 .github/init_scripts/2_create_users.sql create mode 100644 .github/init_scripts/3_create_app_objects.sql create mode 100644 .github/init_scripts/4_create_source_owner_objects.sql create mode 100644 .github/init_scripts/5_create_tests_owner_objects.sql rename .github/workflows/{maven-test.yml => build.yml} (100%) delete mode 100644 .travis.yml diff --git a/.github/init_scripts/1_install_utplsql.sh b/.github/init_scripts/1_install_utplsql.sh new file mode 100644 index 0000000..f650ed1 --- /dev/null +++ b/.github/init_scripts/1_install_utplsql.sh @@ -0,0 +1,9 @@ +UTPLSQL_DOWNLOAD_URL=$(curl --silent https://api.github.com/repos/utPLSQL/utPLSQL/releases/latest | awk '/browser_download_url/ { print $2 }' | grep ".zip\"" | sed 's/"//g') + +curl -Lk "${UTPLSQL_DOWNLOAD_URL}" -o utPLSQL.zip + +unzip -q utPLSQL.zip + +cd utPLSQL/source + +sqlplus sys/oracle@//localhost/XE as sysdba @install_headless.sql UT3 UT3 users diff --git a/.github/init_scripts/2_create_users.sql b/.github/init_scripts/2_create_users.sql new file mode 100644 index 0000000..23ad31b --- /dev/null +++ b/.github/init_scripts/2_create_users.sql @@ -0,0 +1,25 @@ +define UTPLSQL_USER = 'UT3'; +define APP_USER = 'APP'; +define CODE_OWNER = 'CODE_OWNER'; +define TESTS_OWNER = 'TESTS_OWNER'; +define DB_PASS = 'pass'; + +grant execute any procedure to &UTPLSQL_USER; +grant create any procedure to &UTPLSQL_USER; +grant execute on dbms_lob to &UTPLSQL_USER; +grant execute on dbms_sql to &UTPLSQL_USER; +grant execute on dbms_xmlgen to &UTPLSQL_USER; +grant execute on dbms_lock to &UTPLSQL_USER; + +create user &APP_USER identified by &DB_PASS quota unlimited on USERS default tablespace USERS; +grant create session, create procedure, create type, create table, create sequence, create view to &APP_USER; +grant select any dictionary to &APP_USER; + +create user &CODE_OWNER identified by &DB_PASS quota unlimited on USERS default tablespace USERS; +grant create session, create procedure, create type, create table, create sequence, create view to &CODE_OWNER; + +create user &TESTS_OWNER identified by &DB_PASS quota unlimited on USERS default tablespace USERS; +grant create session, create procedure, create type, create table, create sequence, create view, create synonym to &TESTS_OWNER; +grant select any dictionary to &TESTS_OWNER; +grant select any table, delete any table, drop any table to &TESTS_OWNER; +grant execute any procedure to &TESTS_OWNER; diff --git a/.github/init_scripts/3_create_app_objects.sql b/.github/init_scripts/3_create_app_objects.sql new file mode 100644 index 0000000..f15cc3f --- /dev/null +++ b/.github/init_scripts/3_create_app_objects.sql @@ -0,0 +1,263 @@ +ALTER SESSION SET CURRENT_SCHEMA = APP; + +-- +-- This is a table used to demonstrate the UNIT test framework. +-- +CREATE TABLE TO_TEST_ME +( + SNAME VARCHAR2(10) +); +/ + +-- +-- This package is used TO demonstrate the utPL/SQL possibilities +-- +CREATE OR REPLACE PACKAGE PKG_TEST_ME AS + FUNCTION FC_TEST_ME(PPARAM1 IN VARCHAR2) RETURN NUMBER; + PROCEDURE PR_TEST_ME(PSNAME IN VARCHAR2); +END PKG_TEST_ME; +/ + +CREATE OR REPLACE PACKAGE BODY PKG_TEST_ME IS + -- + -- This + -- + FUNCTION FC_TEST_ME(PPARAM1 IN VARCHAR2) RETURN NUMBER IS + BEGIN + IF PPARAM1 IS NULL THEN + RETURN NULL; + ELSIF PPARAM1 = '1' THEN + RETURN 1; + ELSE + RETURN 0; + END IF; + END FC_TEST_ME; + + PROCEDURE PR_TEST_ME(PSNAME IN VARCHAR2) IS + BEGIN + IF PSNAME IS NULL THEN + NULL; + ELSE + INSERT INTO TO_TEST_ME (SNAME) VALUES (PSNAME); + COMMIT; + END IF; + END PR_TEST_ME; + +END PKG_TEST_ME; +/ + +CREATE OR REPLACE PACKAGE TEST_PKG_TEST_ME AS + -- %suite(TEST_PKG_TEST_ME) + -- %suitepath(plsql.examples) + -- + -- This package shows all the possibilities to unit test + -- your PL/SQL package. NOTE that it is not limited to + -- testing your package. You can do that on all your + -- procedure/functions... + -- + + /** + * This two parameters are used by the test framework in + * order to identify the test suite to run + */ + + /* + * This method is invoked once before any other method. + * It should contain all the setup code that is relevant + * for all your test. It might be inserting a register, + * creating a type, etc... + */ + -- %beforeall + PROCEDURE SETUP_GLOBAL; + + /* + * This method is invoked once after all other method. + * It can be used to clean up all the resources that + * you created in your script + */ + -- %afterall + PROCEDURE TEARDOWN_GLOBAL; + + /* + * This method is called once before each test. + */ + -- %beforeeach + PROCEDURE SETUP_TEST; + + /* + * This method is called once after each test. + */ + -- %aftereach + PROCEDURE TEARDOWN_TEST; + + /** + * This is a real test. The main test can declare a setup + * and teardown method in order to setup and cleanup things + * for that specific test. + */ + -- %test + -- %displayname(Checking if function ('1') returns 1) + -- %beforetest(SETUP_TEST_FC_INPUT_1) + -- %aftertest(TEARDOWN_TEST_FC_INPUT_1) + PROCEDURE TEST_FC_INPUT_1; + PROCEDURE SETUP_TEST_FC_INPUT_1; + PROCEDURE TEARDOWN_TEST_FC_INPUT_1; + + -- %test + -- %displayname(Checking if function ('0') returns 0) + PROCEDURE TEST_FC_INPUT_0; + + -- %test + -- %displayname(Checking if function (NULL) returns NULL) + PROCEDURE TEST_FC_INPUT_NULL; + + -- %test + -- %displayname(Checking if procedure (NULL) insert) + PROCEDURE TEST_PR_TEST_ME_NULL; + + -- %test + -- %displayname(Checking if procedure (NOT NULL) insert) + -- %rollback(manual) + PROCEDURE TEST_PR_TEST_ME_NOT_NULL; + + -- %test + -- %displayname(Checking if procedure (NOT NULL) insert while existing) + -- %rollback(manual) + -- %tags(exists) + PROCEDURE TEST_PR_TEST_ME_EXISTS; + + -- %test + -- %displayname(Demonstrating the use of cursor) + -- %rollback(manual) + -- %tags(cursor) + PROCEDURE TEST_PR_TEST_ME_CURSOR; + +END; +/ + +CREATE OR REPLACE PACKAGE BODY TEST_PKG_TEST_ME AS + + --------------------------------------------------------------------------- + PROCEDURE SETUP_GLOBAL IS + BEGIN + -- Put here the code which is valid for all tests and that should be + -- executed once. + NULL; + END SETUP_GLOBAL; + + --------------------------------------------------------------------------- + PROCEDURE TEARDOWN_GLOBAL IS + BEGIN + -- Put here the code that should be called only once after all the test + -- have executed + NULL; + END TEARDOWN_GLOBAL; + + --------------------------------------------------------------------------- + PROCEDURE SETUP_TEST IS + BEGIN + -- Nothing to clean up globally + NULL; + END SETUP_TEST; + + PROCEDURE TEARDOWN_TEST IS + BEGIN + -- Nothing to clean up globally + NULL; + END TEARDOWN_TEST; + + PROCEDURE TEST_FC_INPUT_1 IS + BEGIN + -- Ok this is a real test where I check that the function return 1 + -- when called with a '1' parameter + UT.EXPECT(PKG_TEST_ME.FC_TEST_ME('1')).TO_EQUAL(1); + END; + + PROCEDURE SETUP_TEST_FC_INPUT_1 IS + BEGIN + -- Nothing to be done really + NULL; + END; + + PROCEDURE TEARDOWN_TEST_FC_INPUT_1 IS + BEGIN + -- Nothing to be done really + NULL; + END; + + PROCEDURE TEST_FC_INPUT_0 IS + BEGIN + -- Ok this is a real test where I check that the function return 0 + -- when called with a '0' parameter + UT.EXPECT(PKG_TEST_ME.FC_TEST_ME('0')).TO_EQUAL(0); + END; + + PROCEDURE TEST_FC_INPUT_NULL IS + BEGIN + -- Ok I check that the function return NULL + -- when called with a NULL parameter + UT.EXPECT(PKG_TEST_ME.FC_TEST_ME(NULL)).TO_BE_NULL; + END TEST_FC_INPUT_NULL; + + PROCEDURE TEST_PR_TEST_ME_NULL IS + VNCOUNT1 PLS_INTEGER; + VNCOUNT2 PLS_INTEGER; + BEGIN + -- In this example I check that the procedure does + -- not insert anything when passing it a NULL parameter + SELECT COUNT(1) INTO VNCOUNT1 FROM TO_TEST_ME; + PKG_TEST_ME.PR_TEST_ME(NULL); + SELECT COUNT(1) INTO VNCOUNT2 FROM TO_TEST_ME; + UT.EXPECT(VNCOUNT1).TO_EQUAL(VNCOUNT2); + END; + + PROCEDURE TEST_PR_TEST_ME_NOT_NULL IS + VNCOUNT1 PLS_INTEGER; + VNCOUNT2 PLS_INTEGER; + VSNAME TO_TEST_ME.SNAME%TYPE; + BEGIN + -- In this test I will check that I do insert a value + -- when the parameter is not null. I futher check that + -- the procedure has inserted the value I specified. + SELECT COUNT(1) INTO VNCOUNT1 FROM TO_TEST_ME; + VSNAME := TO_CHAR(VNCOUNT1); + PKG_TEST_ME.PR_TEST_ME(VSNAME); + SELECT COUNT(1) INTO VNCOUNT2 FROM TO_TEST_ME; + + -- Check that I have inserted the value + UT.EXPECT(VNCOUNT1 + 1).TO_EQUAL(VNCOUNT2); + SELECT COUNT(1) INTO VNCOUNT2 FROM TO_TEST_ME T WHERE T.SNAME = VSNAME; + + -- Check that I inserted the one I said I would insert + UT.EXPECT(VNCOUNT2).TO_EQUAL(1); + DELETE FROM TO_TEST_ME T WHERE T.SNAME = VSNAME; + COMMIT; + END; + + PROCEDURE TEST_PR_TEST_ME_EXISTS IS + BEGIN + -- In case the value exists the procedure should fail with an exception. + BEGIN + PKG_TEST_ME.PR_TEST_ME('EXISTS'); + PKG_TEST_ME.PR_TEST_ME('EXISTS'); + EXCEPTION + WHEN OTHERS THEN + UT.FAIL('Unexpected exception raised'); + END; + END; + + PROCEDURE TEST_PR_TEST_ME_CURSOR IS + TYPE REF_CURSOR IS REF CURSOR; + VEXPECTED REF_CURSOR; + VACTUAL REF_CURSOR; + BEGIN + EXECUTE IMMEDIATE 'TRUNCATE TABLE TO_TEST_ME'; + OPEN VEXPECTED FOR + SELECT T.SNAME FROM TO_TEST_ME T; + OPEN VACTUAL FOR + SELECT T.SNAME FROM TO_TEST_ME T; + UT.EXPECT(VEXPECTED).TO_(EQUAL(VACTUAL)); + END; + +END; +/ diff --git a/.github/init_scripts/4_create_source_owner_objects.sql b/.github/init_scripts/4_create_source_owner_objects.sql new file mode 100644 index 0000000..0c16344 --- /dev/null +++ b/.github/init_scripts/4_create_source_owner_objects.sql @@ -0,0 +1,47 @@ +ALTER SESSION SET CURRENT_SCHEMA = CODE_OWNER; + +-- +-- This is a table used to demonstrate the UNIT test framework. +-- +CREATE TABLE TO_TEST_ME +( + SNAME VARCHAR2(10) +); +/ + +-- +-- This package is used TO demonstrate the utPL/SQL possibilities +-- +CREATE OR REPLACE PACKAGE CODE_OWNER.PKG_TEST_ME AS + FUNCTION FC_TEST_ME(PPARAM1 IN VARCHAR2) RETURN NUMBER; + PROCEDURE PR_TEST_ME(PSNAME IN VARCHAR2); +END PKG_TEST_ME; +/ + +CREATE OR REPLACE PACKAGE BODY PKG_TEST_ME IS + -- + -- This + -- + FUNCTION FC_TEST_ME(PPARAM1 IN VARCHAR2) RETURN NUMBER IS + BEGIN + IF PPARAM1 IS NULL THEN + RETURN NULL; + ELSIF PPARAM1 = '1' THEN + RETURN 1; + ELSE + RETURN 0; + END IF; + END FC_TEST_ME; + + PROCEDURE PR_TEST_ME(PSNAME IN VARCHAR2) IS + BEGIN + IF PSNAME IS NULL THEN + NULL; + ELSE + INSERT INTO TO_TEST_ME (SNAME) VALUES (PSNAME); + COMMIT; + END IF; + END PR_TEST_ME; + +END PKG_TEST_ME; +/ diff --git a/.github/init_scripts/5_create_tests_owner_objects.sql b/.github/init_scripts/5_create_tests_owner_objects.sql new file mode 100644 index 0000000..dddf677 --- /dev/null +++ b/.github/init_scripts/5_create_tests_owner_objects.sql @@ -0,0 +1,215 @@ +ALTER SESSION SET CURRENT_SCHEMA = TESTS_OWNER; + +CREATE OR REPLACE PACKAGE TEST_PKG_TEST_ME AS + -- %suite(TEST_PKG_TEST_ME) + -- %suitepath(plsql.examples) + -- + -- This package shows all the possibilities to unit test + -- your PL/SQL package. NOTE that it is not limited to + -- testing your package. You can do that on all your + -- procedure/functions... + -- + + /** + * This two parameters are used by the test framework in + * order to identify the test suite to run + */ + + /* + * This method is invoked once before any other method. + * It should contain all the setup code that is relevant + * for all your test. It might be inserting a register, + * creating a type, etc... + */ + -- %beforeall + PROCEDURE SETUP_GLOBAL; + + /* + * This method is invoked once after all other method. + * It can be used to clean up all the resources that + * you created in your script + */ + -- %afterall + PROCEDURE TEARDOWN_GLOBAL; + + /* + * This method is called once before each test. + */ + -- %beforeeach + PROCEDURE SETUP_TEST; + + /* + * This method is called once after each test. + */ + -- %aftereach + PROCEDURE TEARDOWN_TEST; + + /** + * This is a real test. The main test can declare a setup + * and teardown method in order to setup and cleanup things + * for that specific test. + */ + -- %test + -- %displayname(Checking if function ('1') returns 1) + -- %beforetest(SETUP_TEST_FC_INPUT_1) + -- %aftertest(TEARDOWN_TEST_FC_INPUT_1) + PROCEDURE TEST_FC_INPUT_1; + PROCEDURE SETUP_TEST_FC_INPUT_1; + PROCEDURE TEARDOWN_TEST_FC_INPUT_1; + + -- %test + -- %displayname(Checking if function ('0') returns 0) + PROCEDURE TEST_FC_INPUT_0; + + -- %test + -- %displayname(Checking if function (NULL) returns NULL) + PROCEDURE TEST_FC_INPUT_NULL; + + -- %test + -- %displayname(Checking if procedure (NULL) insert) + PROCEDURE TEST_PR_TEST_ME_NULL; + + -- %test + -- %displayname(Checking if procedure (NOT NULL) insert) + -- %rollback(manual) + PROCEDURE TEST_PR_TEST_ME_NOT_NULL; + + -- %test + -- %displayname(Checking if procedure (NOT NULL) insert while existing) + -- %rollback(manual) + PROCEDURE TEST_PR_TEST_ME_EXISTS; + + -- %test + -- %displayname(Demonstrating the use of cursor) + -- %rollback(manual) + PROCEDURE TEST_PR_TEST_ME_CURSOR; + +END; +/ + +CREATE OR REPLACE PACKAGE BODY TEST_PKG_TEST_ME AS + + --------------------------------------------------------------------------- + PROCEDURE SETUP_GLOBAL IS + BEGIN + -- Put here the code which is valid for all tests and that should be + -- executed once. + NULL; + END SETUP_GLOBAL; + + --------------------------------------------------------------------------- + PROCEDURE TEARDOWN_GLOBAL IS + BEGIN + -- Put here the code that should be called only once after all the test + -- have executed + NULL; + END TEARDOWN_GLOBAL; + + --------------------------------------------------------------------------- + PROCEDURE SETUP_TEST IS + BEGIN + -- Nothing to clean up globally + NULL; + END SETUP_TEST; + + PROCEDURE TEARDOWN_TEST IS + BEGIN + -- Nothing to clean up globally + NULL; + END TEARDOWN_TEST; + + PROCEDURE TEST_FC_INPUT_1 IS + BEGIN + -- Ok this is a real test where I check that the function return 1 + -- when called with a '1' parameter + UT.EXPECT(CODE_OWNER.PKG_TEST_ME.FC_TEST_ME('1')).TO_EQUAL(1); + END; + + PROCEDURE SETUP_TEST_FC_INPUT_1 IS + BEGIN + -- Nothing to be done really + NULL; + END; + + PROCEDURE TEARDOWN_TEST_FC_INPUT_1 IS + BEGIN + -- Nothing to be done really + NULL; + END; + + PROCEDURE TEST_FC_INPUT_0 IS + BEGIN + -- Ok this is a real test where I check that the function return 0 + -- when called with a '0' parameter + UT.EXPECT(CODE_OWNER.PKG_TEST_ME.FC_TEST_ME('0')).TO_EQUAL(0); + END; + + PROCEDURE TEST_FC_INPUT_NULL IS + BEGIN + -- Ok I check that the function return NULL + -- when called with a NULL parameter + UT.EXPECT(CODE_OWNER.PKG_TEST_ME.FC_TEST_ME(NULL)).TO_BE_NULL; + END TEST_FC_INPUT_NULL; + + PROCEDURE TEST_PR_TEST_ME_NULL IS + VNCOUNT1 PLS_INTEGER; + VNCOUNT2 PLS_INTEGER; + BEGIN + -- In this example I check that the procedure does + -- not insert anything when passing it a NULL parameter + SELECT COUNT(1) INTO VNCOUNT1 FROM CODE_OWNER.TO_TEST_ME; + CODE_OWNER.PKG_TEST_ME.PR_TEST_ME(NULL); + SELECT COUNT(1) INTO VNCOUNT2 FROM CODE_OWNER.TO_TEST_ME; + UT.EXPECT(VNCOUNT1).TO_EQUAL(VNCOUNT2); + END; + + PROCEDURE TEST_PR_TEST_ME_NOT_NULL IS + VNCOUNT1 PLS_INTEGER; + VNCOUNT2 PLS_INTEGER; + VSNAME CODE_OWNER.TO_TEST_ME.SNAME%TYPE; + BEGIN + -- In this test I will check that I do insert a value + -- when the parameter is not null. I futher check that + -- the procedure has inserted the value I specified. + SELECT COUNT(1) INTO VNCOUNT1 FROM CODE_OWNER.TO_TEST_ME; + VSNAME := TO_CHAR(VNCOUNT1); + CODE_OWNER.PKG_TEST_ME.PR_TEST_ME(VSNAME); + SELECT COUNT(1) INTO VNCOUNT2 FROM CODE_OWNER.TO_TEST_ME; + + -- Check that I have inserted the value + UT.EXPECT(VNCOUNT1 + 1).TO_EQUAL(VNCOUNT2); + SELECT COUNT(1) INTO VNCOUNT2 FROM CODE_OWNER.TO_TEST_ME T WHERE T.SNAME = VSNAME; + + -- Check that I inserted the one I said I would insert + UT.EXPECT(VNCOUNT2).TO_EQUAL(1); + DELETE FROM CODE_OWNER.TO_TEST_ME T WHERE T.SNAME = VSNAME; + COMMIT; + END; + + PROCEDURE TEST_PR_TEST_ME_EXISTS IS + BEGIN + -- In case the value exists the procedure should fail with an exception. + BEGIN + CODE_OWNER.PKG_TEST_ME.PR_TEST_ME('EXISTS'); + CODE_OWNER.PKG_TEST_ME.PR_TEST_ME('EXISTS'); + EXCEPTION + WHEN OTHERS THEN + UT.FAIL('Unexpected exception raised'); + END; + END; + + PROCEDURE TEST_PR_TEST_ME_CURSOR IS + TYPE REF_CURSOR IS REF CURSOR; + VEXPECTED REF_CURSOR; + VACTUAL REF_CURSOR; + BEGIN + EXECUTE IMMEDIATE 'TRUNCATE TABLE CODE_OWNER.TO_TEST_ME'; + OPEN VEXPECTED FOR + SELECT T.SNAME FROM CODE_OWNER.TO_TEST_ME T; + OPEN VACTUAL FOR + SELECT T.SNAME FROM CODE_OWNER.TO_TEST_ME T; + UT.EXPECT(VEXPECTED).TO_(EQUAL(VACTUAL)); + END; + +END; +/ diff --git a/.github/workflows/maven-test.yml b/.github/workflows/build.yml similarity index 100% rename from .github/workflows/maven-test.yml rename to .github/workflows/build.yml diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 0591815..0000000 --- a/.travis.yml +++ /dev/null @@ -1,62 +0,0 @@ -sudo: required -language: java - -services: - - docker - -jdk: - - openjdk8 - -env: - global: - - DOCKER_CFG=$HOME/.docker - - DOCKER_REPO="utplsqlv3/oracledb" - - CACHE_DIR=$HOME/.cache - - MAVEN_HOME=/usr/local/maven - - MAVEN_CFG=$HOME/.m2 - - DB_URL="127.0.0.1:1521:XE" - - DB_UT3_USER=ut3 - - DB_UT3_PASS=ut3 - - ORACLE_VERSION="11g-r2-xe" - - DOCKER_OPTIONS="--shm-size=1g" - -cache: - directories: - - $DOCKER_CFG - - $CACHE_DIR - - $MAVEN_CFG - -install: - - bash .travis/maven_cfg.sh - - bash .travis/start_db.sh - - bash .travis/install_utplsql.sh - - bash .travis/install_demo_project.sh - -script: - - echo "Run Verify with Coverage" - - mvn org.jacoco:jacoco-maven-plugin:prepare-agent verify -DdbUser="${DB_UT3_USER}" -DdbPass="${DB_UT3_PASS}" -DdbUrl="jdbc:oracle:thin:@${DB_URL}" - -before_deploy: - - echo $GPG_SECRET_KEYS | base64 --decode | ${GPG_EXECUTABLE} --import - - echo $GPG_OWNERTRUST | base64 --decode | ${GPG_EXECUTABLE} --import-ownertrust - -deploy: - - provider: script - skip_cleanup: true - script: bash .travis/deploy_snapshot.sh - on: - repo: utPLSQL/utPLSQL-maven-plugin - branch: develop - - provider: script - skip_cleanup: true - script: bash .travis/deploy_release.sh - on: - repo: utPLSQL/utPLSQL-maven-plugin - tags: true - -notifications: - slack: - rooms: - - secure: "Gz0pGOOM6xbnz8Q/B3RzOFoVr8QGXsDSHcgCloPnO3ZkEOh4JJikqWAVdZrksMxhewIBRpbdIWAZOgsNXvW+cEDXxfml3X9Clj2wg5Uon97UeI+5WEHDhLYHn7t9EYr9QvVSOuQgBIiddk6kURxY4N0eAA4VUti8BDcMRq+gPxF1w/toFJXVR/I/tkLxcHPTbWQ9X87nNWcQgMoHe2AixYpglntmtoLXJ5F8MF08fcyTX7GJQ5xjq7HbYy+/39nEhQo2ZPhHHfk2rS6gIUY0wc+MAqobxvesplgGDybdTQyrdl48VjJ/CiQDedglUbNN9VYTFjPIYMdWCUCLV1uL866aNMiBpB7CQoNhi5WS7RERE9gblVPX2k6tOda27fEWlhjha6OmdK6TQ9qTITU7U4OTSOz41dDPeVfqMHRggxo3ozlLONTiZ1y9fz/Ez9WjiJjtUDt60vgnVIo7BcQV/yDJcqAtQbfWyf0n73g5lMBvLGnO2Agm2N7hNEeCbpr+PZUoqkEM/e4SxdUCQGi8Ppi9Zp0E4v0iG7hyjzol+G4T8JN0bUGg0OOow/bfZa5J2aUsrC1qP/ZLpMA94NI6ZlL2wRHhZ9JtVSDLjtSwq9yW5XF7o7kdqBWBCslbGnYPoCoHOzfZuUvArSlRoGNu75dw/Qhoo9gFl1RG/RlChaU=" - on_success: change - on_failure: always diff --git a/README.md b/README.md index 68a32e6..536d11c 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build status](https://github.com/utPLSQL/utPLSQL-maven-plugin/actions/workflows/maven-test.yml/badge.svg)](https://github.com/utPLSQL/utPLSQL-maven-plugin/actions/workflows/maven-test.yml) +[![Build status](https://github.com/utPLSQL/utPLSQL-maven-plugin/actions/workflows/build.yml/badge.svg)](https://github.com/utPLSQL/utPLSQL-maven-plugin/actions/workflows/build.yml) [![Quality Gate](https://sonarcloud.io/api/project_badges/measure?project=org.utplsql%3Autplsql-maven-plugin&metric=alert_status)](https://sonarcloud.io/dashboard?id=org.utplsql%3Autplsql-maven-plugin) # utPLSQL-maven-plugin diff --git a/src/test/java/org/utplsql/maven/plugin/UtPLSQLMojoIT.java b/src/test/java/org/utplsql/maven/plugin/UtPLSQLMojoIT.java index bac7f18..1722a79 100644 --- a/src/test/java/org/utplsql/maven/plugin/UtPLSQLMojoIT.java +++ b/src/test/java/org/utplsql/maven/plugin/UtPLSQLMojoIT.java @@ -45,12 +45,7 @@ public void testSimpleProject() { File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); + verifier = createVerifier(testProject); verifier.executeGoal("test"); @@ -68,14 +63,7 @@ public void testRegexProject() { final String PROJECT_NAME = "regex-project"; File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); - Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); - + Verifier verifier = createVerifier(testProject); verifier.executeGoal("test"); checkReportsGenerated(PROJECT_NAME, "utplsql/sonar-test-reporter.xml", @@ -92,14 +80,7 @@ public void testTypeMappingProject() { final String PROJECT_NAME = "type-mapping-project"; File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); - Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); - + Verifier verifier = createVerifier(testProject); verifier.executeGoal("test"); checkReportsGenerated(PROJECT_NAME, "utplsql/sonar-test-reporter.xml", @@ -116,14 +97,7 @@ public void testOwnerParameterProject() { final String PROJECT_NAME = "owner-param-project"; File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); - Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); - + Verifier verifier = createVerifier(testProject); verifier.executeGoal("test"); checkReportsGenerated(PROJECT_NAME, "utplsql/sonar-test-reporter.xml", @@ -140,14 +114,7 @@ public void testMinimalistProject() { final String PROJECT_NAME = "minimalist-project"; File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); - Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); - + Verifier verifier = createVerifier(testProject); verifier.executeGoal("test"); } catch (Exception e) { e.printStackTrace(); @@ -161,14 +128,7 @@ public void testTagsProject() { final String PROJECT_NAME = "tags-project"; File testProject = ResourceExtractor.simpleExtractResources(getClass(), "/" + PROJECT_NAME); - Verifier verifier; - verifier = new Verifier(testProject.getAbsolutePath()); - verifier.addCliOption("-N"); - verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); - verifier.addCliOption("-DdbUrl=" + System.getProperty("dbUrl")); - verifier.addCliOption("-DdbUser=" + System.getProperty("dbUser")); - verifier.addCliOption("-DdbPass=" + System.getProperty("dbPass")); - + Verifier verifier = createVerifier(testProject); verifier.executeGoal("test"); checkReportsGenerated(PROJECT_NAME, "utplsql/sonar-test-reporter.xml"); @@ -199,11 +159,26 @@ private void checkReportsGenerated(String projectName, String... files) { stream.close(); Assert.assertEquals("The files differ!", - FileUtils.readFileToString(expectedOutputFile, "utf-8").replace("\r", ""), outputContent); + FileUtils.readFileToString(expectedOutputFile, "utf-8") + .replace("\r", "") + .replace("\n", ""), + outputContent.replace("\n", "")); } catch (IOException e) { e.printStackTrace(); Assert.fail("Unexpected Exception running the test : " + e.getMessage()); } } } + + private Verifier createVerifier(File testProject) throws VerificationException { + Verifier verifier; + verifier = new Verifier(testProject.getAbsolutePath()); + verifier.addCliOption("-N"); + verifier.addCliOption("-Dutplsql-maven-plugin-version=" + pluginVersion); + verifier.addCliOption("-DdbUrl=jdbc:oracle:thin:@localhost:1521:XE"); + verifier.addCliOption("-DdbUser=UT3"); + verifier.addCliOption("-DdbPass=UT3"); + return verifier; + } + } diff --git a/src/test/resources/owner-param-project/expected-output/utplsql/coverage-sonar-reporter.xml b/src/test/resources/owner-param-project/expected-output/utplsql/coverage-sonar-reporter.xml index 6718aa5..22f929c 100644 --- a/src/test/resources/owner-param-project/expected-output/utplsql/coverage-sonar-reporter.xml +++ b/src/test/resources/owner-param-project/expected-output/utplsql/coverage-sonar-reporter.xml @@ -1,12 +1,12 @@ + - - - + + + - - \ No newline at end of file + diff --git a/src/test/resources/owner-param-project/scripts/sources/foo/package_bodies/PKG_TEST_ME.sql b/src/test/resources/owner-param-project/scripts/sources/foo/package_bodies/PKG_TEST_ME.sql index 894119f..d6846b2 100644 --- a/src/test/resources/owner-param-project/scripts/sources/foo/package_bodies/PKG_TEST_ME.sql +++ b/src/test/resources/owner-param-project/scripts/sources/foo/package_bodies/PKG_TEST_ME.sql @@ -1,5 +1,4 @@ CREATE OR REPLACE PACKAGE BODY CODE_OWNER.PKG_TEST_ME IS - -- -- This -- @@ -25,4 +24,4 @@ CREATE OR REPLACE PACKAGE BODY CODE_OWNER.PKG_TEST_ME IS END PR_TEST_ME; END PKG_TEST_ME; -/ \ No newline at end of file +/ diff --git a/src/test/resources/regex-project/expected-output/utplsql/coverage-sonar-reporter.xml b/src/test/resources/regex-project/expected-output/utplsql/coverage-sonar-reporter.xml index 0628e51..b7a6aa2 100644 --- a/src/test/resources/regex-project/expected-output/utplsql/coverage-sonar-reporter.xml +++ b/src/test/resources/regex-project/expected-output/utplsql/coverage-sonar-reporter.xml @@ -1,12 +1,12 @@ + - - - + + + - - \ No newline at end of file + diff --git a/src/test/resources/regex-project/scripts/sources/app/packages/PKG_TEST_ME.bdy b/src/test/resources/regex-project/scripts/sources/app/packages/PKG_TEST_ME.bdy index 29cea5e..8769df3 100644 --- a/src/test/resources/regex-project/scripts/sources/app/packages/PKG_TEST_ME.bdy +++ b/src/test/resources/regex-project/scripts/sources/app/packages/PKG_TEST_ME.bdy @@ -1,5 +1,4 @@ CREATE OR REPLACE PACKAGE BODY APP.PKG_TEST_ME IS - -- -- This -- @@ -25,4 +24,4 @@ CREATE OR REPLACE PACKAGE BODY APP.PKG_TEST_ME IS END PR_TEST_ME; END PKG_TEST_ME; -/ \ No newline at end of file +/ diff --git a/src/test/resources/simple-project/expected-output/utplsql/coverage-sonar-reporter.xml b/src/test/resources/simple-project/expected-output/utplsql/coverage-sonar-reporter.xml index 5824011..4709376 100644 --- a/src/test/resources/simple-project/expected-output/utplsql/coverage-sonar-reporter.xml +++ b/src/test/resources/simple-project/expected-output/utplsql/coverage-sonar-reporter.xml @@ -1,12 +1,12 @@ + - - - + + + - - \ No newline at end of file + diff --git a/src/test/resources/simple-project/scripts/sources/APP.PKG_TEST_ME.bdy b/src/test/resources/simple-project/scripts/sources/APP.PKG_TEST_ME.bdy index d7f60de..331959d 100644 --- a/src/test/resources/simple-project/scripts/sources/APP.PKG_TEST_ME.bdy +++ b/src/test/resources/simple-project/scripts/sources/APP.PKG_TEST_ME.bdy @@ -1,5 +1,4 @@ CREATE OR REPLACE PACKAGE BODY PKG_TEST_ME IS - -- -- This -- @@ -25,4 +24,4 @@ CREATE OR REPLACE PACKAGE BODY PKG_TEST_ME IS END PR_TEST_ME; END PKG_TEST_ME; -/ \ No newline at end of file +/ diff --git a/src/test/resources/type-mapping-project/expected-output/utplsql/coverage-sonar-reporter.xml b/src/test/resources/type-mapping-project/expected-output/utplsql/coverage-sonar-reporter.xml index f046682..8392f3d 100644 --- a/src/test/resources/type-mapping-project/expected-output/utplsql/coverage-sonar-reporter.xml +++ b/src/test/resources/type-mapping-project/expected-output/utplsql/coverage-sonar-reporter.xml @@ -1,12 +1,12 @@ + - - - + + + - - \ No newline at end of file +