
    iT                        d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 ddlZej                  j                  d e e
e      j!                         j"                  d   dz               ej$                  d        Zd Zd Zy)	uG   tests/dev7/test_auto_revert.py — auto revert PR 생성 (task-2367 P1)    N)Path   scriptsc                 "   | dz  dz  j                  d       | dz  dz  j                  d       |j                  dt        |              dd l}|j                  j                  dt        t        t              j                         j                  d	   d
z  dz              }g }d }||u}|}|r|j                  }d }	||	u}
|
}|slt        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                   |      ndt        j                   |      dz  }dd|iz  }|j#                  |       |rt        j                  d
fd	f      dt        j                         v st        j                  |      rt        j                   |      ndt        j                   |      t        j                   |	      dz  }dd|iz  }|j#                  |       t        j$                  |d      i z  }dd|iz  }t'        t        j(                  |            d x}x}x}x}x}x}
}	|j                  j+                  |      }|j                  j-                  |       | |_        | dz  dz  dz  |_        | |fS )NmemoryeventsT)parentsauditWORKSPACE_ROOTr   auto_revertr   r   zauto_revert.py)is not)z%(py2)s is not %(py5)sspec)py2py5%(py7)spy7)z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)py9py11py14z%(py16)spy16zassert %(py19)spy19auto-merge.log)mkdirsetenvstrimportlib.utilutilspec_from_file_locationr   __file__resolver	   loader
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specexec_module	WORKSPACE	AUDIT_LOG)tmp_pathmonkeypatch	importlibr   @py_assert1@py_assert4@py_assert3@py_assert0@py_assert10@py_assert13@py_assert12@py_format6@py_format8@py_format15@py_format17@py_format18@py_format20ars                     2/home/jay/workspace/tests/dev7/test_auto_revert.pyrevert_workspacerB      s   8#**4*87"))$)7'X7>>11DN""$,,Q/);>NNOD 8t74t77474 777774t77777747774777t77777774777777777777777477777777777777		(	(	.BKKBBLh&03CCBLR<    c                 4   | \  }}|dz  }|j                          g fd}fd}|j                  |j                  d|       |j                  |j                  d|       |j                  dd|d	      }d
j	                  d D              }	d}
|
|	v}|st        j                  d|fd|
|	f      t        j                  |
      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }dd|iz  }t        t        j                  |            dx}
}g }d}||	v}|}
|sd}||	v}|}
|
sXt        j                  d|fd||	f      t        j                  |      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }dd|iz  }|j                  |       |st        j                  dfd|	f      t        j                  |      dt        j                         v st        j                  |	      rt        j                  |	      nddz  }dd|iz  }|j                  |       t        j                  |d      i z  }dd |iz  }t        t        j                  |            dx}
x}x}x}x}}D cg c]  }t        |t               sd!|v s| }}t#        |      }d}||k\  }|st        j                  d"|fd#||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%t        j                  |      t        j                  |      d&z  }d'd(|iz  }t        t        j                  |            dx}x}}d)}
|d*   }|
|v }|slt        j                  d+|fd,|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}d0}
|d*   }|
|v }|slt        j                  d+|fd,|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}d}
|d*   }|
|v }|slt        j                  d+|fd,|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}|d1   }
d2}|
|k(  }|slt        j                  d3|fd4|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}|d!   d5   }
d6}|
|k(  }|slt        j                  d3|fd4|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}d7}
|d!   }|
|v }|slt        j                  d+|fd,|
|f      t        j                  |
      t        j                  |      d-z  }d.d/|iz  }t        t        j                  |            dx}
x}}|d8z  d9z  d:z  }|j$                  } |       }|sd;d<t        j                         v st        j                  |      rt        j                  |      nd<t        j                  |      t        j                  |      d=z  }t        t        j                  |            dx}}yc c}w )>u?   ★ 가장 중요: hard reset 사용 X, git revert -m 1 사용.fake_projectc                 (    j                  |        yNr   r(   )argskwcaptured_callss     rA   _fake_check_callz?test_revert_uses_git_revert_not_reset.<locals>._fake_check_call&   s    d#rC   c                 H    j                  |         G d d      } |       S )Nc                       e Zd ZdZdZdZy)Ctest_revert_uses_git_revert_not_reset.<locals>._fake_run.<locals>.Rr   zhttps://example.com/pr/1
 N__name__
__module____qualname__
returncodestdoutstderr rC   rA   RrO   +   s    J1FFrC   rY   rH   )rI   rJ   rY   rK   s      rA   	_fake_runz8test_revert_uses_git_revert_not_reset.<locals>._fake_run)   s$    d#	 	 s
rC   
check_callrunztask-revert-testdeadbeef0000testtask_id	merge_shaproject_pathreason c              3   t   K   | ]0  }t        |t              rd j                  |      n
t        |       2 yw)rd   N)
isinstancelistjoinr   ).0as     rA   	<genexpr>z8test_revert_uses_git_revert_not_reset.<locals>.<genexpr>;   s+     dPQJq$,?SXXa[SVKds   68zreset --hard)not in)z%(py1)s not in %(py3)sall_args_flat)py1py3zassert %(py5)sr   Nresetz--hard)z%(py3)s not in %(py5)s)ro   r   r   r   )z%(py10)s not in %(py12)s)py10py12z%(py14)sr      zassert %(py17)spy17revert)>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)slenrevert_calls)py0rn   ro   py6zassert %(py8)spy8z-mr   inz%(py1)s in %(py4)srn   py4assert %(py6)srz   1outcomereverted)==)z%(py1)s == %(py4)sbranchzrevert/task-revert-testpr_urlr   r
   r   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}log)ry   r   r   )r   setattr
subprocesscreate_revert_prrh   r"   r#   r'   r$   r%   r&   r*   r+   r(   r)   rf   rg   rw   exists) rB   r0   r1   	workspacer@   projectrL   rZ   resultrm   r6   @py_assert2@py_format4r:   r3   r4   @py_assert9@py_assert11r;   @py_format13r<   @py_format16r>   crx   @py_assert5@py_format7@py_format9r5   @py_format5r   rK   s                                   @rA   %test_revert_uses_git_revert_not_resetr      s   $MIr'GMMO N |5EFui8  " 	 ! F HHdUcddM.>....>...>................H7H7-'H8H8=+HHHHH7-HHH7HHHHHH-HHH-HHHHHHH8=HHH8HHHHHH=HHH=HHHHHHHHHHHHHH  .W!At1DUVAWLW|!!!!!!!!!!!!3!!!3!!!!!!|!!!|!!!!!!!!!!!!!"<?"4?""""4?"""4"""?"""""""!,q/!3/!!!!3/!!!3!!!/!!!!!!!,\!_,>_,,,,>_,,,>,,,_,,,,,,, )*
*
****
******
*******(H%B)BB%)BBBBB%)BBBB%BBB)BBBBBBBB'vh''8'''''8''''8'''''''''''
h

(+;
;C:::<<33:< Xs   3^	^^c                    | \  }}|dz  }|j                          |j                  |j                  dd         G d d      |j                  |j                  dfd       |j                  dd	|d
      }|dz  dz  dz  }|j	                         j                         j                  d      d   }t        j                  |      }	d}
|	d   d   }|
|v }|slt        j                  d|fd|
|f      t        j                  |
      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}
x}}y)u   audit 기록에 reason 포함.pr[   c                       yrG   rX   )rj   rJ   s     rA   <lambda>z3test_revert_audit_includes_reason.<locals>.<lambda>U   s    rC   c                       e Zd ZdZdZdZy),test_revert_audit_includes_reason.<locals>.Rr   rP   NrQ   rX   rC   rA   rY   r   V   s    
rC   rY   r\   c                              S )NrX   )rj   rJ   rY   s     rA   r   z3test_revert_audit_includes_reason.<locals>.<lambda>Z   s	    qs rC   t1abczprobe FAIL: build OK test FAILr_   r   r
   r   
r   z
probe FAILru   rc   r|   r~   r   r   rz   N)r   r   r   r   	read_textstripsplitjsonloadsr"   r#   r'   r*   r+   )rB   r0   r1   r   r@   r   r   r   linerecordr6   r5   r   r   r   rY   s                  @rA   !test_revert_audit_includes_reasonr   O   s   $MIrnGMMO|5GH  u.BC  /	 ! F h

(+;
;C==?  "((.q1DZZF56(+H55<55555<5555<55555555555rC   )__doc__builtinsr$   _pytest.assertion.rewrite	assertionrewriter"   r   syspathlibr   pytestpathinsertr   r   r    r	   fixturerB   r   r   rX   rC   rA   <module>r      so    M    
   3tH~--/77:YFG H  ".b6rC   