CLASS zcl_abapgit_gui_page_runit DEFINITION PUBLIC INHERITING FROM zcl_abapgit_gui_component FINAL CREATE PUBLIC. PUBLIC SECTION. INTERFACES zif_abapgit_gui_event_handler. INTERFACES zif_abapgit_gui_renderable. INTERFACES zif_abapgit_gui_menu_provider. CLASS-METHODS create IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RETURNING VALUE(ri_page) TYPE REF TO zif_abapgit_gui_renderable RAISING zcx_abapgit_exception. METHODS constructor IMPORTING !io_repo TYPE REF TO zcl_abapgit_repo RAISING zcx_abapgit_exception. PROTECTED SECTION. PRIVATE SECTION. TYPES: BEGIN OF ty_key, obj_name TYPE tadir-obj_name, obj_type TYPE tadir-object, END OF ty_key, ty_keys_tt TYPE STANDARD TABLE OF ty_key WITH DEFAULT KEY. DATA mo_repo TYPE REF TO zcl_abapgit_repo. DATA mv_summary TYPE string. METHODS build_tadir RETURNING VALUE(rt_tadir) TYPE ty_keys_tt RAISING zcx_abapgit_exception. METHODS run RETURNING VALUE(ro_result) TYPE REF TO object RAISING zcx_abapgit_exception. ENDCLASS. CLASS zcl_abapgit_gui_page_runit IMPLEMENTATION. METHOD build_tadir. DATA lt_tadir TYPE zif_abapgit_definitions=>ty_tadir_tt. DATA ls_tadir LIKE LINE OF lt_tadir. DATA ls_row LIKE LINE OF rt_tadir. lt_tadir = zcl_abapgit_factory=>get_tadir( )->read( iv_package = mo_repo->get_package( ) iv_only_local_objects = abap_true ). LOOP AT lt_tadir INTO ls_tadir. CLEAR ls_row. ls_row-obj_type = ls_tadir-object. ls_row-obj_name = ls_tadir-obj_name. APPEND ls_row TO rt_tadir. ENDLOOP. ENDMETHOD. METHOD constructor. super->constructor( ). mo_repo = io_repo. ENDMETHOD. METHOD create. DATA lo_component TYPE REF TO zcl_abapgit_gui_page_runit. CREATE OBJECT lo_component EXPORTING io_repo = io_repo. ri_page = zcl_abapgit_gui_page_hoc=>create( iv_page_title = |Unit Tests| ii_page_menu_provider = lo_component ii_child_component = lo_component ). ENDMETHOD. METHOD run. DATA lo_passport TYPE REF TO object. DATA lo_runner TYPE REF TO object. DATA lo_timer TYPE REF TO zcl_abapgit_timer. DATA lt_keys TYPE ty_keys_tt. DATA li_result TYPE REF TO data. FIELD-SYMBOLS TYPE any. lt_keys = build_tadir( ). lo_timer = zcl_abapgit_timer=>create( iv_count = lines( lt_keys ) )->start( ). TRY. CALL METHOD ('\PROGRAM=SAPLSAUCV_GUI_RUNNER\CLASS=PASSPORT')=>get RECEIVING result = lo_passport. CALL METHOD ('CL_AUCV_TEST_RUNNER_STANDARD')=>create EXPORTING i_passport = lo_passport RECEIVING result = lo_runner. CATCH cx_root. zcx_abapgit_exception=>raise( |Not supported in your NW release| ). ENDTRY. CREATE DATA li_result TYPE REF TO ('IF_SAUNIT_INTERNAL_RESULT'). ASSIGN li_result->* TO . CALL METHOD lo_runner->('RUN_FOR_PROGRAM_KEYS') EXPORTING i_limit_on_duration_category = '36' " long i_limit_on_risk_level = '33' " critical i_program_keys = lt_keys IMPORTING e_aunit_result = . mv_summary = lo_timer->end( ). ro_result = . ENDMETHOD. METHOD zif_abapgit_gui_event_handler~on_event. RETURN. ENDMETHOD. METHOD zif_abapgit_gui_menu_provider~get_menu. ro_toolbar = zcl_abapgit_gui_chunk_lib=>back_toolbar( ). ENDMETHOD. METHOD zif_abapgit_gui_renderable~render. DATA lo_result TYPE REF TO object. DATA lv_program_ndx TYPE i. DATA lv_class_ndx TYPE i. DATA lv_method_ndx TYPE i. DATA lv_text TYPE string. DATA lv_count TYPE i. DATA lv_params TYPE string. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE ANY TABLE. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE any. FIELD-SYMBOLS TYPE string_table. CREATE OBJECT ri_html TYPE zcl_abapgit_html. ri_html->add( '
' ). ri_html->add( zcl_abapgit_gui_chunk_lib=>render_repo_top( io_repo = mo_repo iv_show_commit = abap_false ) ). lo_result = run( ). ASSIGN lo_result->('F_TASK_DATA') TO . ASSIGN COMPONENT 'ALERTS_BY_INDICIES' OF STRUCTURE TO . ASSIGN COMPONENT 'PROGRAMS' OF STRUCTURE TO . LOOP AT ASSIGNING . ASSIGN COMPONENT 'ALERTS' OF STRUCTURE TO . LOOP AT ASSIGNING WHERE ('KIND = ''F'' OR KIND = ''S'''). " check level=F(ail?) instead? ASSIGN COMPONENT 'HEADER-PARAMS' OF STRUCTURE TO . LOOP AT INTO lv_params. lv_text = lv_params. ENDLOOP. ri_html->add( |{ lv_text }
| ). lv_count = lv_count + 1. ENDLOOP. ENDLOOP. ri_html->add( '
' ). ri_html->add( |Unit tests completed with { lv_count } errors ({ mv_summary })| ). ri_html->add( `
` ). ri_html->add( |
| ). LOOP AT ASSIGNING . lv_program_ndx = sy-tabix. ASSIGN COMPONENT 'INFO-KEY-OBJ_TYPE' OF STRUCTURE TO . IF sy-subrc = 0. ri_html->add( || ). ELSE. * KEY field does not exist in 750 ASSIGN COMPONENT 'INFO-NAME' OF STRUCTURE TO . ri_html->add( || ). ENDIF. ASSIGN COMPONENT 'CLASSES' OF STRUCTURE TO . LOOP AT ASSIGNING . lv_class_ndx = sy-tabix. ASSIGN COMPONENT 'INFO-NAME' OF STRUCTURE TO . ri_html->add( || ). ASSIGN COMPONENT 'METHODS' OF STRUCTURE TO . LOOP AT ASSIGNING . lv_method_ndx = sy-tabix. CLEAR lv_text. READ TABLE WITH KEY ('PROGRAM_NDX') = lv_program_ndx ('CLASS_NDX') = lv_class_ndx ('METHOD_NDX') = lv_method_ndx ASSIGNING . IF sy-subrc = 0. ASSIGN COMPONENT 'ALERTS' OF STRUCTURE TO . LOOP AT ASSIGNING . ASSIGN COMPONENT 'HEADER-PARAMS' OF STRUCTURE TO . LOOP AT INTO lv_params. lv_text = lv_params. ENDLOOP. ENDLOOP. ENDIF. IF lv_text IS INITIAL. lv_text = |PASSED|. ELSE. lv_text = |{ lv_text }|. ENDIF. ASSIGN COMPONENT 'INFO-NAME' OF STRUCTURE TO . ri_html->add( || ). ENDLOOP. ENDLOOP. ENDLOOP. ri_html->add( '
{ } | ). ASSIGN COMPONENT 'INFO-KEY-OBJ_NAME' OF STRUCTURE TO . ri_html->add( |{ }
{ }
    { }
        { }{ lv_text }
' ). ENDMETHOD. ENDCLASS.