From d02ac9470627e0896922bdf37d03c89125b1422c Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Sun, 29 Dec 2019 00:58:47 +0000 Subject: [PATCH 1/3] Changed ordering of tests for suites with context Resolves #1036 --- source/core/ut_suite_cache_manager.pkb | 20 ++-- test/ut3_tester/core/test_suite_builder.pkb | 118 ++++++++++---------- test/ut3_tester/core/test_suite_builder.pks | 2 +- 3 files changed, 74 insertions(+), 66 deletions(-) diff --git a/source/core/ut_suite_cache_manager.pkb b/source/core/ut_suite_cache_manager.pkb index 509b28498..759f55278 100644 --- a/source/core/ut_suite_cache_manager.pkb +++ b/source/core/ut_suite_cache_manager.pkb @@ -162,14 +162,20 @@ create or replace package body ut_suite_cache_manager is return case when a_random_seed is null then q'[ replace( - case - when c.obj.self_type in ( 'UT_TEST' ) - then substr(c.obj.path, 1, instr(c.obj.path, '.', -1) ) - else c.obj.path - end, '.', chr(0) + substr( c.obj.path, 1, instr( c.obj.path, lower(c.obj.object_name), -1 ) + length(c.obj.object_name) ), + '.', + chr(0) ) desc nulls last, - c.obj.object_name desc, - c.obj.line_no, + case when c.obj.self_type = 'UT_SUITE_CONTEXT' then + ( select max( x.line_no ) + 1 + from ut_suite_cache x + where c.obj.object_owner = x.object_owner and c.obj.object_name = x.object_name and + x.path like c.obj.path || '.%' + ) + else + c.obj.line_no + end, + regexp_count(c.obj.path,'\.') desc, :a_random_seed]' else ' ut_runner.hash_suite_path( diff --git a/test/ut3_tester/core/test_suite_builder.pkb b/test/ut3_tester/core/test_suite_builder.pkb index 00d914413..8eedc1142 100644 --- a/test/ut3_tester/core/test_suite_builder.pkb +++ b/test/ut3_tester/core/test_suite_builder.pkb @@ -649,6 +649,9 @@ create or replace package body test_suite_builder is '' || '%' || '%' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || '' || '%a_contextA contextsome_package.a_context' || '%' || @@ -661,9 +664,6 @@ create or replace package body test_suite_builder is '%' || '' || '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || '' || '' || '%some_packagesuite_level_beforeall' || @@ -710,26 +710,14 @@ create or replace package body test_suite_builder is '' || '%' || '%' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || '' || '%a_contextA contextsome_package.a_context' || '%' || '' || - '%nested_context_2nested_context_2some_package.a_context.nested_context_2' || - '%' || - '' || - '%nested_context_#1a_nested_context_3some_package.a_context.nested_context_2.nested_context_#1' || - '%' || - '' || - '%test_in_nested_context_3Test in nested contextsome_package.a_context.nested_context_2.nested_context_#1.test_in_nested_context_3' || - '%' || - '' || - '' || - '%' || - '' || - '%test_in_nested_context_2Test in nested contextsome_package.a_context.nested_context_2.test_in_nested_context_2' || - '%' || - '' || - '' || + '%first_test_in_a_contextFirst test in contextsome_package.a_context.first_test_in_a_context' || '%' || '' || '%a_nested_contextA nested contextsome_package.a_context.a_nested_context' || @@ -743,7 +731,22 @@ create or replace package body test_suite_builder is '%' || '%' || '' || - '%first_test_in_a_contextFirst test in contextsome_package.a_context.first_test_in_a_context' || + '%nested_context_2nested_context_2some_package.a_context.nested_context_2' || + '%' || + '' || + '%test_in_nested_context_2Test in nested contextsome_package.a_context.nested_context_2.test_in_nested_context_2' || + '%' || + '' || + '%nested_context_#1a_nested_context_3some_package.a_context.nested_context_2.nested_context_#1' || + '%' || + '' || + '%test_in_nested_context_3Test in nested contextsome_package.a_context.nested_context_2.nested_context_#1.test_in_nested_context_3' || + '%' || + '' || + '' || + '%' || + '' || + '' || '%' || '' || '%second_test_in_a_contextSecond test in contextsome_package.a_context.second_test_in_a_context' || @@ -754,9 +757,6 @@ create or replace package body test_suite_builder is '%' || '' || '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || '' || '' || '%some_packagesuite_level_beforeall' || @@ -859,6 +859,10 @@ create or replace package body test_suite_builder is ''|| '' || '%' || + '%' || + '%suite_level_test' || + '%%suite_level_test%' || + '%' || '%' || '%nested_context_#1A contextsome_package.nested_context_#1' || '%' || @@ -872,10 +876,6 @@ create or replace package body test_suite_builder is '%%context_beforeall%' || '%%context_afterall%' || '%' || - '%' || - '%suite_level_test' || - '%%suite_level_test%' || - '%' || '%' || '%'|| '' @@ -909,6 +909,12 @@ create or replace package body test_suite_builder is ''|| '' || '%' || + '%' || + '%suite_level_test' || + '%%suite_level_beforeeach%' || + '%%suite_level_test%' || + '%%suite_level_aftereach%' || + '%' || '%' || '%nested_context_#1nested_context_#1some_package.nested_context_#1' || '%' || @@ -920,12 +926,6 @@ create or replace package body test_suite_builder is '%' || '%' || '%' || - '%' || - '%suite_level_test' || - '%%suite_level_beforeeach%' || - '%%suite_level_test%' || - '%%suite_level_aftereach%' || - '%' || '%' || '%%suite_level_beforeall%' || '%%suite_level_afterall%' || @@ -961,18 +961,20 @@ create or replace package body test_suite_builder is ''|| '' || '%' || - '%a_contextSome contextsome_package.a_context' || - '%' || - '' || - '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || - '%' || - '' || - '' || - '%some_packagecontext_setup' || - '%' || '%' || '%suite_level_testIn suitesome_package.suite_level_test' || '%' || + '%' || + '%a_contextSome contextsome_package.a_context' || + '%' || + '' || + '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || + '%' || + '' || + '' || + '%some_packagecontext_setup' || + '%' || + '%' || '' || '' || '%some_packagesuite_level_beforeall' || @@ -1010,6 +1012,9 @@ create or replace package body test_suite_builder is ''|| '' || '%' || + '' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || '' || '%a_contextA contextsome_package.a_context' || '%' || @@ -1022,9 +1027,6 @@ create or replace package body test_suite_builder is '%' || '' || '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || '' || '' || '%some_packagesuite_level_beforeall' || @@ -1067,32 +1069,32 @@ create or replace package body test_suite_builder is '' || '%' || '' || - '%nested_context_#2A contextsome_package.nested_context_#2' || + '%suite_level_testIn suitesome_package.suite_level_test' || + '%' || + '' || + '%a_contextA contextsome_package.a_context' || '%' || '' || - '%test_in_duplicated_contextIn duplicated contextsome_package.nested_context_#2.test_in_duplicated_context' || + '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || '%' || '' || '' || - '%some_packagesetup_in_duplicated_context' || + '%some_packagecontext_setup' || '%' || '' || '' || '' || - '%a_contextA contextsome_package.a_context' || + '%nested_context_#2A contextsome_package.nested_context_#2' || '%' || '' || - '%test_in_a_contextIn contextsome_package.a_context.test_in_a_context' || + '%test_in_duplicated_contextIn duplicated contextsome_package.nested_context_#2.test_in_duplicated_context' || '%' || '' || '' || - '%some_packagecontext_setup' || + '%some_packagesetup_in_duplicated_context' || '%' || '' || '' || - '' || - '%suite_level_testIn suitesome_package.suite_level_test' || - '%' || '' || '' || '%some_packagesuite_level_beforeall' || @@ -1341,20 +1343,20 @@ create or replace package body test_suite_builder is '' || '%' || '' || - '%nested_context_#2A contextsome_package.nested_context_#2' || + '%nested_context_#1A contextsome_package.nested_context_#1' || '%' || '' || - '%test_in_a_context2In context2some_package.nested_context_#2.test_in_a_context2' || + '%test_in_a_context1In context1some_package.nested_context_#1.test_in_a_context1' || '%' || '' || '' || '' || '' || '' || - '%nested_context_#1A contextsome_package.nested_context_#1' || + '%nested_context_#2A contextsome_package.nested_context_#2' || '%' || '' || - '%test_in_a_context1In context1some_package.nested_context_#1.test_in_a_context1' || + '%test_in_a_context2In context2some_package.nested_context_#2.test_in_a_context2' || '%' || '' || '' || diff --git a/test/ut3_tester/core/test_suite_builder.pks b/test/ut3_tester/core/test_suite_builder.pks index 4b49e606f..e451563e5 100644 --- a/test/ut3_tester/core/test_suite_builder.pks +++ b/test/ut3_tester/core/test_suite_builder.pks @@ -151,7 +151,7 @@ create or replace package test_suite_builder is --%test(Is ignored when name value is empty) procedure name_empty_value; - --%test(Is ignored when name value is empty) + --%test(Is is applied to corresponding context when multiple contexts used) procedure multiple_contexts; --%endcontext From 0a4edaf1812ea8207d2124613e50fecb7233c4d6 Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Sun, 29 Dec 2019 01:03:06 +0000 Subject: [PATCH 2/3] Test name fix --- test/ut3_tester/core/test_suite_builder.pks | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/ut3_tester/core/test_suite_builder.pks b/test/ut3_tester/core/test_suite_builder.pks index e451563e5..4cbfcad74 100644 --- a/test/ut3_tester/core/test_suite_builder.pks +++ b/test/ut3_tester/core/test_suite_builder.pks @@ -151,7 +151,7 @@ create or replace package test_suite_builder is --%test(Is ignored when name value is empty) procedure name_empty_value; - --%test(Is is applied to corresponding context when multiple contexts used) + --%test(Is applied to corresponding context when multiple contexts used) procedure multiple_contexts; --%endcontext From 326e055007b38fc3ec3380aaae86483f6cb21579 Mon Sep 17 00:00:00 2001 From: Jacek Gebal Date: Fri, 3 Jan 2020 05:33:03 +0000 Subject: [PATCH 3/3] Added documenting comments for ordering of data from suite_cache. Fixed SQL formatting. --- source/core/ut_suite_cache_manager.pkb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source/core/ut_suite_cache_manager.pkb b/source/core/ut_suite_cache_manager.pkb index 759f55278..05984da3f 100644 --- a/source/core/ut_suite_cache_manager.pkb +++ b/source/core/ut_suite_cache_manager.pkb @@ -162,19 +162,23 @@ create or replace package body ut_suite_cache_manager is 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, case when c.obj.self_type = 'UT_SUITE_CONTEXT' then ( select max( x.line_no ) + 1 from ut_suite_cache x - where c.obj.object_owner = x.object_owner and c.obj.object_name = x.object_name and - x.path like c.obj.path || '.%' + where c.obj.object_owner = x.object_owner + and c.obj.object_name = x.object_name + and x.path like c.obj.path || '.%' ) else c.obj.line_no end, + --assures that child contexts come before parent contexts regexp_count(c.obj.path,'\.') desc, :a_random_seed]' else