Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .travis/install.sh
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ alter user $UT3_OWNER identified by $UT3_OWNER_PASSWORD;
--needed for Mystats script to work
grant select any dictionary to $UT3_OWNER;
--Needed for testing a coverage outside ut3_owner.
grant create any procedure, execute any procedure to $UT3_OWNER;
grant create any procedure, drop any procedure, execute any procedure to $UT3_OWNER;

set feedback off
@../source/create_utplsql_owner.sql $UT3_USER $UT3_USER_PASSWORD $UT3_TABLESPACE
Expand Down
54 changes: 30 additions & 24 deletions source/core/ut_suite_manager.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,11 @@ create or replace package body ut_suite_manager is

if l_annotation_data.package_annotations.exists('rollback') then
l_suite_rollback_annotation := l_annotation_data.package_annotations('rollback').text;
l_suite_rollback := case lower(l_suite_rollback_annotation)
when 'manual' then
ut_utils.gc_rollback_manual
when 'auto' then
ut_utils.gc_rollback_auto
else
ut_utils.gc_rollback_auto
end;
if lower(l_suite_rollback_annotation) = 'manual' then
l_suite_rollback := ut_utils.gc_rollback_manual;
else
l_suite_rollback := ut_utils.gc_rollback_auto;
end if;
else
l_suite_rollback := ut_utils.gc_rollback_auto;
end if;
Expand Down Expand Up @@ -158,16 +155,13 @@ create or replace package body ut_suite_manager is

if l_proc_annotations.exists('rollback') then
l_rollback_annotation := l_proc_annotations('rollback').text;
l_rollback_type := case lower(l_rollback_annotation)
when 'manual' then
ut_utils.gc_rollback_manual
when 'auto' then
ut_utils.gc_rollback_auto
--when 'on-error' then
-- ut_utils.gc_rollback_on_error
else
l_suite_rollback
end;
if lower(l_rollback_annotation) = 'manual' then
l_rollback_type := ut_utils.gc_rollback_manual;
elsif lower(l_rollback_annotation) = 'auto' then
l_rollback_type := ut_utils.gc_rollback_auto;
else
l_rollback_type := l_suite_rollback;
end if;
end if;

l_test := ut_test(a_object_owner => l_owner_name
Expand Down Expand Up @@ -333,9 +327,8 @@ create or replace package body ut_suite_manager is
begin
-- Currently cache invalidation on DDL is not implemented so schema is rescaned each time
l_schema_info := get_schema_info(a_schema_name);
if not g_schema_suites.exists(a_schema_name) or g_schema_suites(a_schema_name)
.changed_at <= l_schema_info.changed_at
or g_schema_suites(a_schema_name).obj_cnt != l_schema_info.obj_cnt then
if not g_schema_suites.exists(a_schema_name) or g_schema_suites(a_schema_name).changed_at <= l_schema_info.changed_at or
g_schema_suites(a_schema_name).obj_cnt != l_schema_info.obj_cnt then
ut_utils.debug_log('Rescanning schema ' || a_schema_name);
config_schema(a_schema_name);
end if;
Expand All @@ -351,18 +344,31 @@ create or replace package body ut_suite_manager is
l_schema_ut_packages ut_object_names := ut_object_names();
l_schema_suites tt_schema_suites;
l_iter varchar2(4000);
procedure populate_suite_ut_packages(a_suite ut_logical_suite, a_packages in out nocopy ut_object_names) is
l_sub_suite ut_logical_suite;
begin
if a_suite is of (ut_suite) then
a_packages.extend;
a_packages(a_packages.last) := ut_object_name(a_suite.object_owner, a_suite.object_name);
end if;
for i in 1 .. a_suite.items.count loop
if a_suite.items(i) is of (ut_logical_suite) then
l_sub_suite := treat(a_suite.items(i) as ut_logical_suite);
populate_suite_ut_packages(l_sub_suite, a_packages);
end if;
end loop;
end;
begin
if a_schema_names is not null then
for i in 1 .. a_schema_names.count loop
l_schema_suites := get_schema_suites(a_schema_names(i));
l_iter := l_schema_suites.first;
while l_iter is not null loop
l_schema_ut_packages.extend;
l_schema_ut_packages(l_schema_ut_packages.last) := ut_object_name(l_schema_suites(l_iter).object_owner, l_schema_suites(l_iter).object_name);
populate_suite_ut_packages(l_schema_suites(l_iter), l_schema_ut_packages);
l_iter := l_schema_suites.next(l_iter);
end loop;
end loop;
-- l_schema_ut_packages := set(l_schema_ut_packages);
l_schema_ut_packages := set(l_schema_ut_packages);
end if;

return l_schema_ut_packages;
Expand Down
14 changes: 10 additions & 4 deletions tests/RunAll.sql
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ set longchunksize 1000000
set serveroutput on size unlimited format truncated
@@lib/RunVars.sql

@@lib/mystats/mystats start

spool RunAll.log

--Global setup
@@helpers/ut_example_tests.pks
@@helpers/ut_example_tests.pkb
Expand All @@ -32,7 +36,6 @@ create table ut$test_table (val varchar2(1));
--Start coverage in develop mode (coverage for utPLSQL framework)
--Regular coverage excludes the framework
exec ut_coverage.coverage_start_develop();
@@lib/mystats/mystats start

@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.IgnoreWrappedPackageAndDoesNotRaiseException.sql
@@lib/RunTest.sql ut_annotations/ut_annotations.parse_package_annotations.ParseAnnotationMixedWithWrongBeforeProcedure.sql
Expand Down Expand Up @@ -182,13 +185,14 @@ exec ut_coverage.coverage_start_develop();
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.configure_execution_by_path.PrepareRunnerForTheTop2PackageProcedureByPath.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.configure_execution_by_path.PrepareRunnerForTheTop2PackageProcedureByPathCurUser.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.DoesntFindTheSuiteWhenPackageSpecIsInvalid.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.emptySuitePath.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.get_schema_ut_packages.IncludesPackagesWithSutePath.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.IncludesInvalidPackageBodiesInTheRun.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.CacheInvalidaesOnPackageDrop.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.PackageWithDollarSign.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.TestWithDollarSign.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.PackageWithHash.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.TestWithDollarSign.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.TestWithHashSign.sql
@@lib/RunTest.sql ut_suite_manager/ut_suite_manager.emptySuitePath.sql


@@lib/RunTest.sql ut_test/ut_test.DisabledFlagSkipTest.sql
Expand Down Expand Up @@ -259,10 +263,11 @@ exec ut_coverage.coverage_start_develop();
@@lib/RunTest.sql ut_utils/ut_utils.to_string.veryBigVarchar2.sql
@@lib/RunTest.sql ut_utils/ut_utils.to_string.verySmallNumber.sql


--Finally
@@lib/RunSummary

spool off

--Global cleanup
--removing objects that should not be part of coverage report
drop package ut_example_tests;
Expand All @@ -276,6 +281,7 @@ drop package test_package_2;
drop package test_package_3;
drop type utplsql_test_reporter;
drop package test_reporters;
drop package ut3$user#.html_coverage_test;

set timing on
prompt Generating coverage data to reporter outputs
Expand Down
26 changes: 13 additions & 13 deletions tests/helpers/html_coverage_test.pck
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
CREATE OR REPLACE PACKAGE ut3$user#.html_coverage_test IS
create or replace package ut3$user#.html_coverage_test is

-- Author : LUW07
-- Created : 23/05/2017 09:37:29
-- Purpose : Supporting html coverage procedure

-- Public type declarations
PROCEDURE run_if_statment(o_result OUT NUMBER);
END HTML_COVERAGE_TEST;
procedure run_if_statment(o_result out number);
end html_coverage_test;
/
CREATE OR REPLACE PACKAGE BODY ut3$user#.html_coverage_test IS
create or replace package body ut3$user#.html_coverage_test is

-- Private type declarations
PROCEDURE run_if_statment(o_result OUT NUMBER) IS
l_testedvalue NUMBER := 1;
l_success NUMBER := 0;
BEGIN
IF l_testedvalue = 1 THEN
procedure run_if_statment(o_result out number) is
l_testedvalue number := 1;
l_success number := 0;
begin
if l_testedvalue = 1 then
l_success := 1;
END IF;
end if;

o_result := l_success;
END run_if_statment;
END HTML_COVERAGE_TEST;
end run_if_statment;
end html_coverage_test;
/
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,8 @@ begin
end loop;
end;
/

set termout off
drop package tst_package_to_be_dropped
/
set termout on
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
set termout off
create or replace package tests as
procedure dummy;
end;
/
set termout on

declare
l_expected ut_object_names;
l_actual ut_object_names;
begin
l_expected := ut_object_names(
ut_object_name(user,'TEST_PACKAGE_1'),
ut_object_name(user,'TEST_PACKAGE_2'),
ut_object_name(user,'TEST_PACKAGE_3'),
ut_object_name(user,'TEST_REPORTERS_1'),
ut_object_name(user,'TEST_REPORTERS')
);
l_actual := ut_suite_manager.get_schema_ut_packages(ut_varchar2_list(user));
if l_actual = l_expected then
:test_result := ut_utils.tr_success;
else
dbms_output.put_line('actual:'||xmltype(anydata.convertcollection(l_actual)).getclobval());
dbms_output.put_line('expected:'||xmltype(anydata.convertcollection(l_expected)).getclobval());
end if;
end;
/

set termout off
drop package tests
/
set termout on