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

Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 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