@@ -37,6 +37,27 @@ create or replace package body ut_suite_builder is
3737 gc_context constant t_annotation_name := 'context';
3838 gc_endcontext constant t_annotation_name := 'endcontext';
3939
40+ type tt_annotations is table of t_annotation_name;
41+
42+ gc_supported_annotations constant tt_annotations
43+ := tt_annotations(
44+ gc_suite,
45+ gc_suitepath,
46+ gc_test,
47+ gc_disabled,
48+ gc_displayname,
49+ gc_beforeall,
50+ gc_beforeeach,
51+ gc_beforetest,
52+ gc_afterall,
53+ gc_aftereach,
54+ gc_aftertest,
55+ gc_throws,
56+ gc_rollback,
57+ gc_context,
58+ gc_endcontext
59+ );
60+
4061 gc_placeholder constant varchar2(3) := '\\%';
4162
4263 gc_integer_exception constant varchar2(1) := 'I';
@@ -757,7 +778,27 @@ create or replace package body ut_suite_builder is
757778 end loop;
758779 end if;
759780 end;
760-
781+
782+ procedure warning_on_unknown_annotations(
783+ a_suite in out nocopy ut_suite_item,
784+ a_annotations tt_annotations_by_line
785+ ) is
786+ l_line_no t_annotation_position := a_annotations.first;
787+ begin
788+ while l_line_no is not null loop
789+ if a_annotations(l_line_no).name not member of (gc_supported_annotations) then
790+ add_annotation_ignored_warning(
791+ a_suite,
792+ a_annotations(l_line_no).name,
793+ 'Unsupported annotation %%%.',
794+ l_line_no,
795+ a_annotations(l_line_no).procedure_name
796+ );
797+ end if;
798+ l_line_no := a_annotations.next(l_line_no);
799+ end loop;
800+ end;
801+
761802 function create_suite(
762803 a_annotations t_annotations_info
763804 ) return ut_logical_suite is
@@ -771,6 +812,7 @@ create or replace package body ut_suite_builder is
771812 l_suite := ut_suite(l_annotations.owner, l_annotations.name);
772813 l_annotation_pos := l_annotations.by_name( gc_suite).first;
773814 l_suite.description := l_annotations.by_name( gc_suite)( l_annotation_pos);
815+ warning_on_unknown_annotations(l_suite, l_annotations.by_line);
774816
775817 warning_on_duplicate_annot( l_suite, l_annotations.by_name, gc_suite );
776818
0 commit comments