
     j                        d Z ddlmZ ddlZddlZddlZddlmZ  ee	      j                         j                  d   ZddZ edd      Zd	 Zd
 Zd Zy)u&  tests/state_machine/test_recoverable_classifier.py — Group 3 (3건).

task-2472 regression: recoverable merge block 분류기 검증.

9.  test_branch_protection_block_classified_recoverable
10. test_recoverable_blocked_retry_allowed_after_clear
11. test_non_recoverable_classified_as_failed
    )annotationsN)Path   c                4   t         |z  }t        j                  j                  | t	        |            }||j
                  
J d|        t        j                  j                  |      }|t        j                  | <   |j
                  j                  |       |S )Nu   spec load 실패: )
WORKTREE	importlibutilspec_from_file_locationstrloadermodule_from_specsysmodulesexec_module)mod_namerelpathspecmods        F/home/jay/workspace/tests/state_machine/test_recoverable_classifier.py_loadr      s    c>D>>11(CIFD 7T;MdV9TT7
..
)
)$
/CCKKKKC J    recoverable_block_classifierz%utils/recoverable_block_classifier.pyc                     d} t         j                  |       }|d   du s
J d|        |d   dk(  sJ |d   J d	|d   j                         v sJ y)
uJ   branch protection 에러 → recoverable=True, category=BRANCH_PROTECTION.z5GraphQL error: base branch policy prohibits the mergerecoverableTu0   BRANCH_PROTECTION은 recoverable 이어야 함: categoryBRANCH_PROTECTIONmatched_patternNzbase branch policy)rbcclassify_merge_blocklower)	error_msgresults     r   3test_branch_protection_block_classified_recoverabler$   $   s|    GI%%i0F- D(e,\]c\d*ee(*!4444#$0006*;#<#B#B#DDDDr   c           
        d}t         j                  |d      }|d   du sJ |d   dk(  sJ t         j                  dd	|d
dd||       }|j                         sJ d       |j	                  d      j                         j                         }t        j                  |d         }|d   dk(  sJ |d   dk(  sJ d|v sJ d}t         j                  |dg        |d   du sJ d       y)ud   RECOVERABLE_BLOCKED 분류 + audit 기록 후 조건 해소 시 retry 허용 (state machine 검증).z2mergeStateStatus: BLOCKED - required check pendingBLOCKED)merge_state_statusr   Tr   MERGE_STATE_BLOCKEDztask-2472-retry-test*   ztaskctl-botMERGINGRECOVERABLE_BLOCKED)task_id	pr_numberclassificationactorinput_stateoutput_stateerror_message	workspaceu   audit jsonl 생성 실패zutf-8)encodingr,   r1   evidence_hashzmerge attempt succeeded	MERGEABLE)r'   unresolved_threadsu2   초기 BLOCKED 분류는 recoverable 이어야 함N)	r   r    record_block_auditexists	read_textstrip
splitlinesjsonloads)tmp_pathr"   r.   
audit_pathlinesrecordcleared_msgs          r   2test_recoverable_blocked_retry_allowed_after_clearrE   4   sB    EI--$ . N -(D000*%)>>>> ''&%* ( 	J ; ;;  ' 288:EEGEZZb	"F) 6666.!%::::f$$$ ,K&   -(D0f2ff0r   c                     g d} | D ]<  }t         j                  |      }|d   du sJ d| d|        |d   dk(  sJ |d   <J  y	)
u2   알 수 없는 merge 실패 → recoverable=False.)zpermission denied: cannot mergezauthentication failedzrepository not foundzfatal: unknown errorr   F'uA   '는 non-recoverable이어야 하는데 recoverable=True 반환: r   UNKNOWNr   N)r   r    )non_recoverable_msgsmsgr#   s      r   )test_non_recoverable_classified_as_failedrK   b   s     $ 1))#.m$- 	
uUV\U]^	
- j!Y...'(0001r   )r   r   r   r   )__doc__
__future__r   importlib.utilr   r>   r   pathlibr   __file__resolveparentsr   r   r   r$   rE   rK    r   r   <module>rT      s_    #   
 >!!#++A. *,ST	E 'g\1r   