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
19 changes: 11 additions & 8 deletions source/core/ut_suite_cache_manager.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -161,13 +161,16 @@ create or replace package body ut_suite_cache_manager is
begin
return case
when a_random_seed is null then q'[
replace(
--suite path until objects name (excluding contexts and test path) with trailing dot (full stop)
substr( c.obj.path, 1, instr( c.obj.path, lower(c.obj.object_name), -1 ) + length(c.obj.object_name) ),
'.',
--'.' replaced with chr(0) to assure that child elements come before parent when sorting in descending oder
chr(0)
) desc nulls last,
nlssort(
replace(
/*suite path until objects name (excluding contexts and test path) with trailing dot (full stop)*/
substr( c.obj.path, 1, instr( c.obj.path, lower(c.obj.object_name), -1 ) + length(c.obj.object_name) ),
'.',
/*'.' replaced with chr(0) to assure that child elements come before parent when sorting in descending order*/
chr(0)
),
'nls_sort=binary'
)desc nulls last,
case when c.obj.self_type = 'UT_SUITE_CONTEXT' then
( select max( x.line_no ) + 1
from ut_suite_cache x
Expand All @@ -178,7 +181,7 @@ create or replace package body ut_suite_cache_manager is
else
c.obj.line_no
end,
--assures that child contexts come before parent contexts
/*assures that child contexts come before parent contexts*/
regexp_count(c.obj.path,'\.') desc,
:a_random_seed]'
else
Expand Down
5 changes: 2 additions & 3 deletions test/ut3_tester/core/test_suite_manager.pks
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,6 @@ create or replace package test_suite_manager is
--%suite(suite_manager)
--%suitepath(utplsql.ut3_tester.core)

procedure create_dummy_long_test_package;

procedure drop_dummy_long_test_package;

--%beforeall
procedure compile_dummy_packages;
Expand Down Expand Up @@ -170,6 +167,8 @@ create or replace package test_suite_manager is
--%beforetest(create_dummy_long_test_package)
--%aftertest(drop_dummy_long_test_package)
procedure add_new_long_test_package;
procedure create_dummy_long_test_package;
procedure drop_dummy_long_test_package;

end test_suite_manager;
/
68 changes: 68 additions & 0 deletions test/ut3_user/api/test_ut_run.pkb
Original file line number Diff line number Diff line change
Expand Up @@ -780,6 +780,74 @@ Failures:%
execute immediate 'drop package '||gc_owner||'.'||gc_owner;
end;

procedure create_suites_with_path is
pragma autonomous_transaction;
begin
execute immediate q'[create or replace package ut_abc is
-- %suite
-- %suitepath(main.abc)

-- %test
procedure ut_test_01;
end ut_abc;]';

execute immediate q'[create or replace package body ut_abc
is
procedure ut_test_01 as begin ut.expect(true).to_be_true(); end;
end;]';

execute immediate q'[create or replace package ut_abc_def
is
-- %suite
-- %suitepath(main.abc_def)

-- %test
procedure ut_test_01;
end ut_abc_def;]';

execute immediate q'[create or replace package body ut_abc_def
is
procedure ut_test_01 as begin ut.expect(true).to_be_true(); end;
end;]';

end;

procedure drop_suites_with_path is
pragma autonomous_transaction;
begin
execute immediate q'[drop package ut_abc]';
execute immediate q'[drop package ut_abc_def]';
end;

procedure run_suite_with_nls_sort is
L_current_sort varchar2(2000);
l_results ut3_develop.ut_varchar2_list;
l_expected clob;
begin
--Arrange
select value
into l_current_sort
from nls_session_parameters where parameter = 'NLS_SORT';

execute immediate 'alter session set nls_sort=GERMAN';

--Act
select *
bulk collect into l_results
from table ( ut3_develop.ut.run( gc_owner||':main' ) );
--Assert
l_expected := q'[main%
abc_def%
ut_abc_def%
ut_test_01%
abc%
ut_abc%
ut_test_01%]';
ut.expect(ut3_tester_helper.main_helper.table_to_clob(l_results) ).to_be_like( l_expected );

execute immediate 'alter session set nls_sort='||l_current_sort;
end;

procedure run_with_random_order is
l_random_results ut3_develop.ut_varchar2_list;
l_results ut3_develop.ut_varchar2_list;
Expand Down
7 changes: 7 additions & 0 deletions test/ut3_user/api/test_ut_run.pks
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,13 @@ create or replace package test_ut_run is
procedure create_schema_name_package;
procedure drop_schema_name_package;

--%test(Runs properly formed suite hierarchy regardless of NLS_SORT settings - Issue #1060)
--%beforetest(create_suites_with_path)
--%aftertest(drop_suites_with_path)
procedure run_suite_with_nls_sort;
procedure create_suites_with_path;
procedure drop_suites_with_path;

--%endcontext

--%context(random_order)
Expand Down