mirror of
https://github.com/abapGit/abapGit.git
synced 2025-04-30 20:03:20 +08:00
Diff: Properly show diffs for whitespace (#5643)
This commit is contained in:
parent
ef29fa7411
commit
8baf69ed98
|
@ -152,12 +152,12 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION
|
|||
VALUE(rv_is_refrseh) TYPE abap_bool.
|
||||
METHODS modify_files_before_diff_calc
|
||||
IMPORTING
|
||||
it_diff_files_old TYPE ty_file_diffs
|
||||
it_diff_files_old TYPE ty_file_diffs
|
||||
RETURNING
|
||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_stage_tt.
|
||||
VALUE(rt_files) TYPE zif_abapgit_definitions=>ty_stage_tt.
|
||||
METHODS add_view_sub_menu
|
||||
IMPORTING
|
||||
io_menu TYPE REF TO zcl_abapgit_html_toolbar .
|
||||
io_menu TYPE REF TO zcl_abapgit_html_toolbar .
|
||||
|
||||
METHODS render_content
|
||||
REDEFINITION .
|
||||
|
@ -201,6 +201,11 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION
|
|||
!is_diff TYPE ty_file_diff
|
||||
RETURNING
|
||||
VALUE(ri_html) TYPE REF TO zif_abapgit_html .
|
||||
METHODS render_line_no_diffs
|
||||
RETURNING
|
||||
VALUE(ri_html) TYPE REF TO zif_abapgit_html
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
METHODS render_line_split
|
||||
IMPORTING
|
||||
!is_diff_line TYPE zif_abapgit_definitions=>ty_diff
|
||||
|
@ -256,6 +261,11 @@ CLASS zcl_abapgit_gui_page_diff DEFINITION
|
|||
is_status TYPE zif_abapgit_definitions=>ty_result
|
||||
RETURNING
|
||||
VALUE(rv_is_file_requested) TYPE abap_bool.
|
||||
METHODS has_diffs
|
||||
IMPORTING
|
||||
!it_diffs TYPE zif_abapgit_definitions=>ty_diffs_tt
|
||||
RETURNING
|
||||
VALUE(rv_has_diffs) TYPE abap_bool.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -641,6 +651,16 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD has_diffs.
|
||||
|
||||
LOOP AT it_diffs TRANSPORTING NO FIELDS WHERE result IS NOT INITIAL.
|
||||
rv_has_diffs = abap_true.
|
||||
EXIT.
|
||||
ENDLOOP.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD insert_nav.
|
||||
|
||||
ENDMETHOD.
|
||||
|
@ -984,6 +1004,11 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
|
||||
lt_diffs = is_diff-o_diff->get( ).
|
||||
|
||||
IF has_diffs( lt_diffs ) = abap_false.
|
||||
ri_html->add( render_line_no_diffs( ) ).
|
||||
RETURN.
|
||||
ENDIF.
|
||||
|
||||
lv_insert_nav = insert_nav( ).
|
||||
|
||||
LOOP AT lt_diffs ASSIGNING <ls_diff>.
|
||||
|
@ -1032,6 +1057,26 @@ CLASS zcl_abapgit_gui_page_diff IMPLEMENTATION.
|
|||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_no_diffs.
|
||||
|
||||
DATA ls_diff_line TYPE zif_abapgit_definitions=>ty_diff.
|
||||
|
||||
CREATE OBJECT ri_html TYPE zcl_abapgit_html.
|
||||
|
||||
IF mv_unified = abap_true.
|
||||
ls_diff_line-old = 'No diffs found'.
|
||||
ri_html->add( render_line_unified( is_diff_line = ls_diff_line ) ).
|
||||
ELSE.
|
||||
ls_diff_line-new = 'No diffs found'.
|
||||
ri_html->add( render_line_split( is_diff_line = ls_diff_line
|
||||
iv_filename = ''
|
||||
iv_fstate = ''
|
||||
iv_index = 1 ) ).
|
||||
ENDIF.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
||||
METHOD render_line_split.
|
||||
|
||||
DATA: lv_new TYPE string,
|
||||
|
|
|
@ -241,7 +241,7 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
|||
APPEND ls_diff TO rt_diff.
|
||||
ENDLOOP.
|
||||
ELSEIF sy-subrc = 2.
|
||||
" Identical input
|
||||
" Copy input... but it might not be identical
|
||||
LOOP AT it_old ASSIGNING <ls_old>.
|
||||
CLEAR ls_diff.
|
||||
ls_diff-old_num = sy-tabix.
|
||||
|
@ -250,6 +250,11 @@ CLASS zcl_abapgit_diff IMPLEMENTATION.
|
|||
ASSERT sy-subrc = 0.
|
||||
ls_diff-new_num = sy-tabix.
|
||||
ls_diff-new = <ls_new>.
|
||||
" SAP function ignores lines that contain only whitespace so we compare directly
|
||||
IF ( mv_compare_mode = 1 OR mv_compare_mode = 3 ) AND <ls_old> <> <ls_new> AND
|
||||
( strlen( condense( <ls_old> ) ) = 0 OR strlen( condense( <ls_new> ) ) = 0 ).
|
||||
ls_diff-result = zif_abapgit_definitions=>c_diff-update.
|
||||
ENDIF.
|
||||
APPEND ls_diff TO rt_diff.
|
||||
ENDLOOP.
|
||||
ELSE.
|
||||
|
|
|
@ -42,7 +42,8 @@ CLASS ltcl_diff DEFINITION FOR TESTING
|
|||
diff10 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
diff11 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
diff12 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
diff13 FOR TESTING RAISING zcx_abapgit_exception.
|
||||
diff13 FOR TESTING RAISING zcx_abapgit_exception,
|
||||
diff14 FOR TESTING RAISING zcx_abapgit_exception.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -141,7 +142,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
test( ).
|
||||
|
@ -189,12 +190,12 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = 'B'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = 'B' ).
|
||||
test( ).
|
||||
|
@ -217,12 +218,12 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = 'B'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = 'B' ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
|
@ -232,7 +233,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
iv_old = '' ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = 'C'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 3'
|
||||
iv_old = 'C' ).
|
||||
add_expected( iv_new_num = ' 5'
|
||||
|
@ -260,22 +261,22 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = ' B'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = 'B' ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
iv_new = 'C'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 3'
|
||||
iv_old = 'C' ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = ' D'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 4'
|
||||
iv_old = 'D' ).
|
||||
|
||||
|
@ -298,22 +299,22 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = '* X'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = '* B' ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
iv_new = 'C'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 3'
|
||||
iv_old = 'C' ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = 'D " new'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 4'
|
||||
iv_old = 'D " old' ).
|
||||
|
||||
|
@ -336,22 +337,22 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = 'b'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = 'B' ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
iv_new = 'c'
|
||||
iv_result = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 3'
|
||||
iv_old = 'c' ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = 'D'
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 4'
|
||||
iv_old = 'd' ).
|
||||
|
||||
|
@ -368,7 +369,7 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = `WRITE 'TEST'`
|
||||
iv_result = 'U'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-update
|
||||
iv_old_num = ' 1'
|
||||
iv_old = `WRITE 'test'` ).
|
||||
|
||||
|
@ -387,12 +388,12 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = `write 'test'`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = `WRITE 'test'` ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = `DATA FOO TYPE I.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = `DATA foo TYPE i.` ).
|
||||
|
||||
|
@ -416,37 +417,37 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = `REPORT zprog_diff.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = `REPORT zprog_diff.`
|
||||
iv_beacon = 1 ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = `*`
|
||||
iv_result = 'I'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-insert
|
||||
iv_old_num = ' '
|
||||
iv_old = ``
|
||||
iv_beacon = 1 ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
iv_new = `FORM t_1.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 2'
|
||||
iv_old = `FORM t_1.`
|
||||
iv_beacon = 2 ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = `ENDFORM.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 3'
|
||||
iv_old = `ENDFORM.`
|
||||
iv_beacon = 2 ).
|
||||
add_expected( iv_new_num = ' 5'
|
||||
iv_new = `FORM t_2.`
|
||||
iv_result = 'I'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-insert
|
||||
iv_old_num = ' '
|
||||
iv_old = ``
|
||||
iv_beacon = 3 ).
|
||||
add_expected( iv_new_num = ' 6'
|
||||
iv_new = `ENDFORM.`
|
||||
iv_result = 'I'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-insert
|
||||
iv_old_num = ' '
|
||||
iv_old = ``
|
||||
iv_beacon = 3 ).
|
||||
|
@ -471,37 +472,37 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
add_expected( iv_old_num = ' 1'
|
||||
iv_old = `REPORT zprog_diff.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_new_num = ' 1'
|
||||
iv_new = `REPORT zprog_diff.`
|
||||
iv_beacon = 1 ).
|
||||
add_expected( iv_old_num = ' 2'
|
||||
iv_old = `*`
|
||||
iv_result = 'D'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-delete
|
||||
iv_new_num = ' '
|
||||
iv_new = ``
|
||||
iv_beacon = 1 ).
|
||||
add_expected( iv_old_num = ' 3'
|
||||
iv_old = `FORM t_1.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_new_num = ' 2'
|
||||
iv_new = `FORM t_1.`
|
||||
iv_beacon = 2 ).
|
||||
add_expected( iv_old_num = ' 4'
|
||||
iv_old = `ENDFORM.`
|
||||
iv_result = '' " no diff!
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_new_num = ' 3'
|
||||
iv_new = `ENDFORM.`
|
||||
iv_beacon = 2 ).
|
||||
add_expected( iv_old_num = ' 5'
|
||||
iv_old = `FORM t_2.`
|
||||
iv_result = 'D'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-delete
|
||||
iv_new_num = ' '
|
||||
iv_new = ``
|
||||
iv_beacon = 2 ).
|
||||
add_expected( iv_old_num = ' 6'
|
||||
iv_old = `ENDFORM.`
|
||||
iv_result = 'D'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-delete
|
||||
iv_new_num = ' '
|
||||
iv_new = ``
|
||||
iv_beacon = 2 ).
|
||||
|
@ -510,4 +511,49 @@ CLASS ltcl_diff IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD diff14.
|
||||
|
||||
" lines with different whitespace
|
||||
add_new( iv_new = 'A' ).
|
||||
add_new( iv_new = `` ). " empty line
|
||||
add_new( iv_new = ` ` ). " one space
|
||||
add_new( iv_new = ` ` ). " some spaces
|
||||
add_new( iv_new = 'E' ).
|
||||
|
||||
add_old( iv_old = 'A' ).
|
||||
add_old( iv_old = ` ` ). " some spaces
|
||||
add_old( iv_old = ` ` ). " two spaces
|
||||
add_old( iv_old = `` ). " empty line
|
||||
add_old( iv_old = 'E' ).
|
||||
|
||||
add_expected( iv_new_num = ' 1'
|
||||
iv_new = 'A'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 1'
|
||||
iv_old = 'A' ).
|
||||
add_expected( iv_new_num = ' 2'
|
||||
iv_new = ''
|
||||
iv_result = zif_abapgit_definitions=>c_diff-update
|
||||
iv_old_num = ' 2'
|
||||
iv_old = ` ` ).
|
||||
add_expected( iv_new_num = ' 3'
|
||||
iv_new = ` `
|
||||
iv_result = zif_abapgit_definitions=>c_diff-update
|
||||
iv_old_num = ' 3'
|
||||
iv_old = ` ` ).
|
||||
add_expected( iv_new_num = ' 4'
|
||||
iv_new = ` `
|
||||
iv_result = zif_abapgit_definitions=>c_diff-update
|
||||
iv_old_num = ' 4'
|
||||
iv_old = '' ).
|
||||
add_expected( iv_new_num = ' 5'
|
||||
iv_new = 'E'
|
||||
iv_result = zif_abapgit_definitions=>c_diff-unchanged
|
||||
iv_old_num = ' 5'
|
||||
iv_old = 'E' ).
|
||||
|
||||
test( ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
ENDCLASS.
|
||||
|
|
|
@ -277,6 +277,7 @@
|
|||
{"object": "ZCL_ABAPGIT_DIFF", "class": "ltcl_diff", "method": "diff11", "note": "fm RS_CMP_COMPUTE_DELTA + Void type: RSWSOURCET"},
|
||||
{"object": "ZCL_ABAPGIT_DIFF", "class": "ltcl_diff", "method": "diff12", "note": "fm RS_CMP_COMPUTE_DELTA + Void type: RSWSOURCET"},
|
||||
{"object": "ZCL_ABAPGIT_DIFF", "class": "ltcl_diff", "method": "diff13", "note": "fm RS_CMP_COMPUTE_DELTA + Void type: RSWSOURCET"},
|
||||
{"object": "ZCL_ABAPGIT_DIFF", "class": "ltcl_diff", "method": "diff14", "note": "fm RS_CMP_COMPUTE_DELTA + Void type: RSWSOURCET"},
|
||||
{"object": "ZCL_ABAPGIT_USER_RECORD", "class": "ltcl_user_record", "method": "test_invalid_user", "note": "Void type: BAPIADDR3"},
|
||||
{"object": "ZCL_ABAPGIT_SERVICES_BASIS", "class": "ltcl_create_package", "method": "raise_error_if_package_exists", "note": "Void type: SCOMPKDTLN"},
|
||||
{"object": "ZCL_ABAPGIT_SERVICES_BASIS", "class": "ltcl_create_package", "method": "package_given_in_popup", "note": "Void type: SCOMPKDTLN"},
|
||||
|
|
Loading…
Reference in New Issue
Block a user