
    rxj                    n   d Z ddlmZ ddlZddlmc mZ ddl	Z	e	j                  j                  dd       ddlZddlmZmZmZmZmZmZmZmZmZmZmZmZmZ ddZddZddZdd	Zdd
ZddZ ddZ!ddZ"ddZ#ddZ$ddZ%ddZ&ddZ'ddZ(ddZ)ddZ*ddZ+e,dk(  r ejZ                  e.dg       yy)zUnit tests for v3.6 layer-0 task md sha normalize helpers.

chair_authorization_id=CHAIR-AUTH-TASK-2705PLUS1-V36-TASK-MD-SHA-BOOTSTRAP-260528
    )annotationsNz/home/jay/workspace) PATCH_TYPE_DISPATCH_META_SIDECAR$PATCH_TYPE_FORBIDDEN_SEMANTIC_CHANGEPATCH_TYPE_NO_PATCHPATCH_TYPE_RETRY_HEADER_PREPENDPATCH_TYPE_UNKNOWN#PATCH_TYPE_WHITESPACE_NORMALIZATIONVERBATIM_FALSEVERBATIM_TRUEVERBATIM_UNVERIFIABLEcompute_sha256content_verbatim_matchdetect_patch_typenormalize_whitespacec                    d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	N    @e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855==z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sr   py0py2py4py7assert %(py9)spy9	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s         C/home/jay/workspace/tests/harness/test_v36_task_md_sha_normalize.pytest_compute_sha256_emptyr/      s    sMM	N M     	   	      	   N      r   c                    d } t        |       }d }||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )Nisz0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   r   r   r   r   r'   s         r.   test_compute_sha256_noner4   $   s    '>$'4'4''''4''''''>'''>'''$''''''4'''''''r   c            	     L   d} t        |       }d}t        |      }||k(  }|s&t        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}x}}d} t        |       }d}t        |      }||k7  }|s&t        j                  d	|fd
||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}x}}y )N   hellor   )zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   )r   r   r   py6py8py10zassert %(py12)spy12   hello
)!=)zP%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} != %(py10)s
{%(py10)s = %(py6)s(%(py8)s)
}r   )r(   r)   @py_assert7@py_assert9r+   @py_format11@py_format13s          r.   test_compute_sha256_textrA   (   su   "?>(#?h?~h'??#'?????#'???????>???>???(???#??????~???~???h???'????????"A>(#AjA~j'AA#'AAAAA#'AAAAAAA>AAA>AAA(AAA#AAAAAA~AAA~AAAjAAA'AAAAAAAAAr   c                 <   d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}d	} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}d} t        |       }d}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}d
} t        |       }d
}||k(  }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )Nr;   r6   r   r   r   r   r   r   s     hello  

r   	r   r   r    r!   r"   r#   r$   r%   r&   r'   s         r.   test_normalize_whitespace_striprD   -   s    *7
+7x7+x7777+x777777777777
777+777x7777777 0= 01=X=1X====1X============ 0===1===X======= (5)5X5)X5555)X555555555555555)555X5555555 #+$++$++++$+++++++++++++++$++++++++++r   c                    d } t        |       }d }||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )Nr1   r3   r   r   r   r   rC   r'   s         r.   test_normalize_whitespace_nonerF   4   s     $-%--%----%---------------%----------r   c                 4   d} | j                   }d} ||      }t        |      }d}|j                   }d} ||      }||k(  }	|	sAt        j                  d|	fd||f      dt	        j
                         v st        j                  t              rt        j                  t              ndt        j                  |       t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      d
z  }
dd	|
iz  }t        t        j                  |            d x} x}x}x}x}x}	x}x}x}}y )
Nu	   한글  
zutf-8u   한글r   )z%(py10)s
{%(py10)s = %(py0)s(%(py8)s
{%(py8)s = %(py4)s
{%(py4)s = %(py2)s.encode
}(%(py6)s)
})
} == %(py19)s
{%(py19)s = %(py15)s
{%(py15)s = %(py13)s.encode
}(%(py17)s)
}r   )
r   r   r   r7   r8   r9   py13py15py17py19zassert %(py21)spy21)
encoder   r   r    r!   r"   r#   r$   r%   r&   )r(   r)   r+   r=   r>   @py_assert12@py_assert14@py_assert16@py_assert18@py_assert11@py_format20@py_format22s               r.   test_normalize_whitespace_utf8rU   8   s
    ,Y 3 3YGY 3G <Y <=YYYQXYQXAYY=AYYYYY=AYYYYYYYYYYYYYYYY 3YYYGYYY <YYY=YYYYYYYYYQXYYYAYYYYYYYYYYr   c                 x   d} d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nr6   r   z9%(py6)s
{%(py6)s = %(py0)s(%(py2)s, %(py4)s)
} == %(py8)sr   r   r   r   r   r7   r8   assert %(py10)sr9   )
r   r   r   r    r!   r"   r#   r$   r%   r&   r(   r)   r+   r=   @py_format9r?   s         r.    test_detect_patch_type_identicalr\   <   s    %GxGXx0G04GGGGG04GGGGGGGGGGGGGXGGGxGGG0GGGGGG4GGGG4GGGGGGGGGr   c                    d} d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd	|iz  }t        t        j                  |            d x} x}x}}d} d
}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )Nr;   r6   r   rW   r   r	   rX   rY   r9   s   hello

)
r   r	   r   r    r!   r"   r#   r$   r%   r&   rZ   s         r.   'test_detect_patch_type_trailing_newliner^   @   s   $&.*h//3VV  /3V     	   	   %   '/   	0     4W   4W       #$0(L115XX  15X     	   	   #   %1   	2     6Y   6Y      r   c                 B   d} d| z   }t        | |      }|t        k(  }|spt        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  |       rt        j                  |       nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}t        ||       }|t        k(  }|spt        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  |      rt        j                  |      nddt	        j
                         v st        j                  |       rt        j                  |       ndt        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}y )N   # title
body
)   <!-- DISPATCH_META: task_id=task-001 -->
r   z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} == %(py6)sr   basesidecarr   r   py1r   r   r7   assert %(py8)sr8   )
r   r   r   r    r!   r"   r#   r$   r%   r&   rc   rd   r)   r+   @py_format7r[   s         r.   test_detect_patch_type_sidecarrj   I   s   D;dBGT7+O+/OOOOO+/OOOOOOOOOOOOOOOOTOOOTOOOOOO7OOO7OOO+OOOOOO/OOOO/OOOOOOOOWd+O+/OOOOO+/OOOOOOOOOOOOOOOOWOOOWOOOOOOdOOOdOOO+OOOOOO/OOOO/OOOOOOOOr   c                 *   d} d| z   }t        | |      }|t        k(  }|spt        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  |       rt        j                  |       nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}y )Nr`   s!   <!-- RETRY_HEADER: attempt=2 -->
r   rb   r   rc   
with_retryr   re   rg   r8   )
r   r   r   r    r!   r"   r#   r$   r%   r&   )rc   rl   r)   r+   ri   r[   s         r.   #test_detect_patch_type_retry_headerrm   P   s    D6=JT:.Q.2QQQQQ.2QQQQQQQQQQQQQQQQTQQQTQQQQQQ:QQQ:QQQ.QQQQQQ2QQQQ2QQQQQQQQr   c                 $   d} d}t        | |      }|t        k(  }|spt        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  |       rt        j                  |       nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}y )Ns   # title
foo
s   # title
bar
r   rb   r   prepostr   re   rg   r8   )
r   r   r   r    r!   r"   r#   r$   r%   r&   )ro   rp   r)   r+   ri   r[   s         r.   &test_detect_patch_type_semantic_changerq   V   s    
CDS$'O'+OOOOO'+OOOOOOOOOOOOOOOOSOOOSOOOOOO$OOO$OOO'OOOOOO+OOOO+OOOOOOOOr   c                 `   d } d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}d} d }t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}d } d }t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nr6   r   rW   r   r   rX   rY   r9   )
r   r   r   r    r!   r"   r#   r$   r%   r&   rZ   s         r.   test_detect_patch_type_noners   \   s    !B8BT8,B,0BBBBB,0BBBBBBBBBBBBBTBBB8BBB,BBBBBB0BBBB0BBBBBBBB%BtBXt,B,0BBBBB,0BBBBBBBBBBBBBXBBBtBBB,BBBBBB0BBBB0BBBBBBBB!>4>T4(>(,>>>>>(,>>>>>>>>>>>>>T>>>4>>>(>>>>>>,>>>>,>>>>>>>>>r   c                 x   d} d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nr6   r   rW   r   r   rX   rY   r9   
r   r   r   r    r!   r"   r#   r$   r%   r&   rZ   s         r.   %test_content_verbatim_match_identicalrv   b   s    "*FHF!(H5F5FFFF5FFFFFF!FFF!FFF(FFFHFFF5FFFFFFFFFFFFFFFFFr   c                 x   d} d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )
Nr;   r6   r   rW   r   r   rX   rY   r9   ru   rZ   s         r.   !test_content_verbatim_match_striprx   f   s    ",HhH!*h7H7=HHHH7=HHHHHH!HHH!HHH*HHHhHHH7HHHHHH=HHH=HHHHHHHHr   c                 x   d} d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )
Nr6   s   worldr   rW   r   r
   rX   rY   r9   )
r   r
   r   r    r!   r"   r#   r$   r%   r&   rZ   s         r.    test_content_verbatim_match_diffrz   j   s    "*GHG!(H5G5GGGG5GGGGGG!GGG!GGG(GGGHGGG5GGGGGGGGGGGGGGGGGr   c                    d } d}t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}d} d }t        | |      }|t        k(  }|st        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nr6   r   rW   r   r   rX   rY   r9   )
r   r   r   r    r!   r"   r#   r$   r%   r&   rZ   s         r.   (test_content_verbatim_match_unverifiabler|   n   sW   "&JJ!$1J15JJJJJ15JJJJJJJ!JJJ!JJJ$JJJJJJ1JJJJJJ5JJJJ5JJJJJJJJ"*JDJ!(D1J15JJJJJ15JJJJJJJ!JJJ!JJJ(JJJDJJJ1JJJJJJ5JJJJ5JJJJJJJJJr   c                 *   d} d| z   }t        | |      }|t        k(  }|spt        j                  d|fd|t        f      dt	        j
                         v st        j                  t               rt        j                  t               nddt	        j
                         v st        j                  |       rt        j                  |       nddt	        j
                         v st        j                  |      rt        j                  |      ndt        j                  |      dt	        j
                         v st        j                  t              rt        j                  t              ndd	z  }d
d|iz  }t        t        j                  |            d x}}y )Nr`   ra   r   rb   r   rc   rd   r   re   rg   r8   ru   rh   s         r.   .test_content_verbatim_match_sidecar_normalizedr~   s   s    D;dBG!$0A0MAAAA0MAAAAAA!AAA!AAAAAA$AAA$AAAAAAAAAAAA0AAAAAAMAAAMAAAAAAAr   __main__z-v)returnNone)/__doc__
__future__r   builtinsr!   _pytest.assertion.rewrite	assertionrewriter   syspathinsertpytest)scripts.harness.v36.task_md_sha_normalizer   r   r   r   r   r	   r
   r   r   r   r   r   r   r/   r4   rA   rD   rF   rU   r\   r^   rj   rm   rq   rs   rv   rx   rz   r|   r~   __name__main__file__ r   r.   <module>r      s    #   
 ( )    "(B
,.ZHPRP?GIHK
B zFKK4 ! r   