
    [iT                         d 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              }||j                  J |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auto-merge.log)mkdirsetenvstrimportlib.utilutilspec_from_file_locationr   __file__resolver	   loadermodule_from_specexec_module	WORKSPACE	AUDIT_LOG)tmp_pathmonkeypatch	importlibspecars        L/home/jay/workspace/.worktrees/task-2520-dev4/tests/dev7/test_auto_revert.pyrevert_workspacer!      s    8#**4*87"))$)7'X7>>11DN""$,,Q/);>NNOD  777		(	(	.BKKBBLh&03CCBLR<    c                 d   | \  }}|dz  }|j                          g fd}fd}|j                  |j                  d|       |j                  |j                  d|       |j                  dd|d	      }d
j	                  d D              }	d|	vsJ d|	vsd|	vsJ D 
cg c]  }
t        |
t              sd|
v s|
 }}
t        |      dk\  sJ d|d   v sJ d|d   v sJ d|d   v sJ |d   dk(  sJ |d   d   dk(  sJ d|d   v sJ |dz  dz  dz  }|j                         sJ yc c}
w )u?   ★ 가장 중요: hard reset 사용 X, git revert -m 1 사용.fake_projectc                 (    j                  |        yNr   append)argskwcaptured_callss     r    _fake_check_callz?test_revert_uses_git_revert_not_reset.<locals>._fake_check_call&   s    d#r"   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 r"   r    Rr/   +   s    J1FFr"   r9   r'   )r)   r*   r9   r+   s      r    	_fake_runz8test_revert_uses_git_revert_not_reset.<locals>._fake_run)   s$    d#	 	 s
r"   
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     r    	<genexpr>z8test_revert_uses_git_revert_not_reset.<locals>.<genexpr>;   s+     dPQJq$,?SXXa[SVKds   68zreset --hardresetz--hardrevert   z-mr   1outcomerevertedbranchzrevert/task-revert-testpr_urlr   r
   r   N)	r   setattr
subprocesscreate_revert_prrH   rF   rG   lenexists)r!   r   r   	workspacer   projectr,   r:   resultall_args_flatcrevert_callslogr+   s                @r    %test_revert_uses_git_revert_not_resetr`      s   $MIr'GMMO N |5EFui8  " 	 ! F HHdUcddM...-'8=+HHH  .W!At1DUVAWLW|!!!<?""",q/!!!\!_,,, )
***(H%)BBBBvh''''
h

(+;
;C::<< Xs   #D-9D->D-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 sJ y)u   audit 기록에 reason 포함.pr;   c                       yr&   r8   )rJ   r*   s     r    <lambda>z3test_revert_audit_includes_reason.<locals>.<lambda>U   s    r"   c                       e Zd ZdZdZdZy),test_revert_audit_includes_reason.<locals>.Rr   r0   Nr1   r8   r"   r    r9   rf   V   s    
r"   r9   r<   c                              S )Nr8   )rJ   r*   r9   s     r    rd   z3test_revert_audit_includes_reason.<locals>.<lambda>Z   s	    qs r"   t1abczprobe FAIL: build OK test FAILr?   r   r
   r   
r   z
probe FAILrM   rC   N)	r   rT   rU   rV   	read_textstripsplitjsonloads)r!   r   r   rY   r   rZ   r[   r_   linerecordr9   s             @r    !test_revert_audit_includes_reasonrr   O   s    $MIrnGMMO|5GH  u.BC  /	 ! F h

(+;
;C==?  "((.q1DZZF6(+H5555r"   )__doc__rn   syspathlibr   pytestpathinsertr   r   r   r	   fixturer!   r`   rr   r8   r"   r    <module>rz      sk    M  
   3tH~--/77:YFG H  ".b6r"   