Skip to content

Commit bc979c3

Browse files
authored
Merge pull request #294 from SAP/coverage_for_multiple_objects
enhancing coverage to run for multiple objects
2 parents 9d3ba3d + b04a7f3 commit bc979c3

File tree

4 files changed

+48
-16
lines changed

4 files changed

+48
-16
lines changed

src/checks/y_check_branch_coverage.clas.abap

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,14 @@ CLASS y_check_branch_coverage IMPLEMENTATION.
3434
DATA(coverage) = y_unit_test_coverage=>get( program_name = program_name
3535
object = VALUE #( object = object_type obj_name = object_name )
3636
coverage_type = ce_scv_coverage_type=>branch ).
37+
38+
DATA(branch) = round( val = coverage->get_percentage( )
39+
dec = 2 ).
3740
CATCH cx_scv_execution_error.
3841
RETURN.
3942
ENDTRY.
4043

41-
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( coverage )
44+
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( branch )
4245
statement = VALUE #( level = 1 ) ).
4346

4447
IF check_configuration IS INITIAL.
@@ -49,8 +52,10 @@ CLASS y_check_branch_coverage IMPLEMENTATION.
4952
statement_index = 1
5053
statement_from = 1
5154
error_priority = check_configuration-prio
52-
parameter_01 = |{ coverage }|
53-
parameter_02 = |{ check_configuration-threshold }| ).
55+
parameter_01 = |{ branch }|
56+
parameter_02 = |{ check_configuration-threshold }|
57+
parameter_03 = |{ coverage->get_total( ) }|
58+
parameter_04 = |{ coverage->get_executed( ) }| ).
5459

5560
ENDMETHOD.
5661

src/checks/y_check_procedure_coverage.clas.abap

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,14 @@ CLASS y_check_procedure_coverage IMPLEMENTATION.
3434
DATA(coverage) = y_unit_test_coverage=>get( program_name = program_name
3535
object = VALUE #( object = object_type obj_name = object_name )
3636
coverage_type = ce_scv_coverage_type=>procedure ).
37+
38+
DATA(procedure) = round( val = coverage->get_percentage( )
39+
dec = 2 ).
3740
CATCH cx_scv_execution_error.
3841
RETURN.
3942
ENDTRY.
4043

41-
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( coverage )
44+
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( procedure )
4245
statement = VALUE #( level = 1 ) ).
4346

4447
IF check_configuration IS INITIAL.
@@ -49,8 +52,10 @@ CLASS y_check_procedure_coverage IMPLEMENTATION.
4952
statement_index = 1
5053
statement_from = 1
5154
error_priority = check_configuration-prio
52-
parameter_01 = |{ coverage }|
53-
parameter_02 = |{ check_configuration-threshold }| ).
55+
parameter_01 = |{ procedure }|
56+
parameter_02 = |{ check_configuration-threshold }|
57+
parameter_03 = |{ coverage->get_total( ) }|
58+
parameter_04 = |{ coverage->get_executed( ) }| ).
5459

5560
ENDMETHOD.
5661

src/checks/y_check_statement_coverage.clas.abap

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,14 @@ CLASS y_check_statement_coverage IMPLEMENTATION.
3434
DATA(coverage) = y_unit_test_coverage=>get( program_name = program_name
3535
object = VALUE #( object = object_type obj_name = object_name )
3636
coverage_type = ce_scv_coverage_type=>statement ).
37+
38+
DATA(statement) = round( val = coverage->get_percentage( )
39+
dec = 2 ).
3740
CATCH cx_scv_execution_error.
3841
RETURN.
3942
ENDTRY.
4043

41-
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( coverage )
44+
DATA(check_configuration) = detect_check_configuration( error_count = CONV #( statement )
4245
statement = VALUE #( level = 1 ) ).
4346

4447
IF check_configuration IS INITIAL.
@@ -49,8 +52,10 @@ CLASS y_check_statement_coverage IMPLEMENTATION.
4952
statement_index = 1
5053
statement_from = 1
5154
error_priority = check_configuration-prio
52-
parameter_01 = |{ coverage }|
53-
parameter_02 = |{ check_configuration-threshold }| ).
55+
parameter_01 = |{ statement }|
56+
parameter_02 = |{ check_configuration-threshold }|
57+
parameter_03 = |{ coverage->get_total( ) }|
58+
parameter_04 = |{ coverage->get_executed( ) }| ).
5459

5560
ENDMETHOD.
5661

src/foundation/y_unit_test_coverage.clas.abap

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,32 @@ CLASS y_unit_test_coverage DEFINITION SHARED MEMORY ENABLED PUBLIC CREATE PUBLIC
33
CLASS-METHODS get IMPORTING program_name TYPE programm
44
object TYPE cl_aucv_task=>ty_object_directory_element
55
coverage_type TYPE REF TO ce_scv_coverage_type
6-
RETURNING VALUE(result) TYPE decfloat16
6+
RETURNING VALUE(result) TYPE REF TO if_scv_coverage
77
RAISING cx_scv_execution_error.
88

9+
CLASS-METHODS get_for_list IMPORTING objects TYPE cl_aucv_task=>ty_object_directory_elements
10+
RETURNING VALUE(result) TYPE REF TO if_scv_measurement
11+
RAISING cx_scv_execution_error.
12+
913
PRIVATE SECTION.
1014
TYPES: BEGIN OF buffer_entry,
11-
object TYPE cl_aucv_task=>ty_object_directory_element,
12-
coverages TYPE if_scv_coverage=>tab,
15+
object TYPE cl_aucv_task=>ty_object_directory_element,
16+
coverages TYPE if_scv_coverage=>tab,
1317
END OF buffer_entry.
1418

1519
CLASS-DATA buffer TYPE TABLE OF buffer_entry WITH KEY object.
1620

1721
CLASS-METHODS get_coverage IMPORTING object TYPE cl_aucv_task=>ty_object_directory_element
1822
coverage_type TYPE REF TO ce_scv_coverage_type
19-
RETURNING VALUE(result) TYPE decfloat16.
23+
RETURNING VALUE(result) TYPE REF TO if_scv_coverage.
2024

2125
ENDCLASS.
2226

2327

2428

2529
CLASS y_unit_test_coverage IMPLEMENTATION.
2630

31+
2732
METHOD get.
2833

2934
IF line_exists( buffer[ object = object ] ).
@@ -53,15 +58,27 @@ CLASS y_unit_test_coverage IMPLEMENTATION.
5358

5459
ENDMETHOD.
5560

61+
5662
METHOD get_coverage.
5763

5864
DATA(entry) = buffer[ object = object ].
5965

60-
DATA(coverage) = entry-coverages[ table_line->type = coverage_type ].
66+
result = entry-coverages[ table_line->type = coverage_type ].
6167

62-
result = round( val = coverage->get_percentage( )
63-
dec = 2 ).
68+
ENDMETHOD.
69+
70+
71+
METHOD get_for_list.
72+
73+
DATA(aunit) = cl_aucv_task=>create( i_measure_coverage = abap_true ).
74+
75+
aunit->add_associated_unit_tests( objects ).
76+
77+
aunit->run( if_aunit_task=>c_run_mode-catch_short_dump ).
78+
79+
result = aunit->get_coverage_measurement( ).
6480

6581
ENDMETHOD.
6682

83+
6784
ENDCLASS.

0 commit comments

Comments
 (0)