
    iS                         d Z ddlZddlZddlZddlZddlZddlZddlmZ  eej                  j                  dd            ZdedefdZd	edefd
ZdedefdZddededefdZdedefdZd Zedk(  r e        yy)u   
실행 테스트 자동화 스크립트
- 주요 Python 모듈 import 테스트
- 문법 오류(syntax error) 자동 감지
- --help 또는 기본 실행 테스트
- 결과를 JSON으로 출력
    N)PathWORKSPACE_ROOTz/home/jay/workspace	file_pathreturnc                 P   t        | j                  t                    dddd}	 t        j                  t        |       d       d|d<   |S # t        j
                  $ r}t        |      |d<   Y d}~|S d}~wt        $ r d	|  |d<   Y |S t        $ r}d
| |d<   Y d}~|S d}~ww xY w)u6   py_compile을 사용한 문법 오류 감지 테스트syntaxFNfile	test_typepassederrorT)doraiser   r   File not found: Unexpected error: )strrelative_to	WORKSPACE
py_compilecompilePyCompileErrorFileNotFoundError	Exception)r   resultes      @/home/jay/workspace/.worktrees/task-2116-dev1/tests/run_tests.pytest_syntaxr      s     I)))45	F33y>48x M $$ !a&w
 M	  9,YK8w M  3.qc2wM3s)   %A B%A33B%
B%B  B%module_pathc                 *   | j                  t              }dj                  |j                  d      j                        }t        |      dddd}	 t        j                  t        j                  ddt         d	| gd
d
d      }|j                  dk(  rd
|d<   |S |j                  xs |j                  j                         |d<   	 |S # t        j                  $ r	 d|d<   Y |S t        $ r d|  |d<   Y |S t         $ r}d| |d<   Y d}~|S d}~ww xY w)uQ   subprocess로 python3 -c 'import ...' 실행하여 모듈 격리 import 테스트. importFNr	   z-cz import sys; sys.path.insert(0, 'z'); import T   capture_outputtexttimeoutr   r   r   z"Timeout expired during import testr   r   )r   r   joinwith_suffixpartsr   
subprocessrunsys
executable
returncodestderrstdoutstripTimeoutExpiredr   r   )r   relmodule_namer   procr   s         r   test_importr6   )   s2   

!
!)
,C((3??2.445K C	F3~~^^T%Ei[P[\g[h#ij	
 ??a#F8 M  ${{9dkk@@BF7O M $$ ?>w
 M	  ;,[M:w M  3.qc2wM3s+   AC	 +C	 	D$D7D?DDc                    | j                  t              }t        |      dddd}	 t        j                  t
        j                  t        |       dgddd      }|j                  d	k(  rd|d
<   |S |j                  xs |j                  j                         |d<   	 |S # t        j                  $ r	 d|d<   Y |S t        $ r d|  |d<   Y |S t        $ r}d| |d<   Y d}~|S d}~ww xY w)u6   subprocess로 --help 실행 후 returncode == 0 확인helpFNr	   z--helpTr"   r#   r   r   r   z"Timeout expired during --help testr   r   r   r   r   r*   r+   r,   r-   r.   r/   r0   r1   r2   r   r   )r   r3   r   r5   r   s        r   	test_helpr:   I   s   


	
*CC	F3~~^^S^X6	
 ??a#F8 M  ${{9dkk@@BF7O M $$ ?>w
 M	  9,YK8w M  3.qc2wM3s*   AB 0+B C'9C'C'C""C'argsc                    | j                  t              }|xs g }t        |      dddd}	 t        j                  t
        j                  t        |       g|z   ddd      }|j                  dk(  rd|d	<   |S |j                  xs |j                  j                         |d
<   	 |S # t        j                  $ r	 d|d
<   Y |S t        $ r d|  |d
<   Y |S t        $ r}d| |d
<   Y d}~|S d}~ww xY w)uU   subprocess로 기본 명령어를 실행하여 정상 동작 확인 (returncode == 0)	basic_runFNr	   Tr"   r#   r   r   r   z%Timeout expired during basic run testr   r   r9   )r   r;   r3   cmd_argsr   r5   r   s          r   test_basic_runr?   f   s   


	
*CzrHC 	F3~~^^S^,x7	
 ??a#F8 M  ${{9dkk@@BF7O M $$ BAw
 M	  9,YK8w M  3.qc2wM3s*   A	B& 8+B& &C/C/C/C**C/script_pathc                 N   | j                  t              }t        |      dddd}	 t        j                  dt        |       gddd      }|j
                  d	k(  rd|d
<   |S |j                  j                         rd|d
<   d|j
                   d|d<   |S |j                  xs |j                  j                         xs d|j
                   |d<   	 |S # t        j                  $ r	 d|d<   Y |S t        $ r}d| |d<   Y d}~|S d}~wt        $ r}d| |d<   Y d}~|S d}~ww xY w)u9  bash로 shell script 실행 가능 여부 테스트.

    스크립트가 실행되고 stdout/stderr에 출력을 생성하면 pass.
    health-check.sh 등은 내부 체크 실패 시 non-zero 코드를 반환할 수 있지만,
    스크립트 자체가 실행되면 '실행 테스트'는 통과로 판단.
    bash_runFNr	   bashTr"   r#   r   r   zreturncode=z1 (script ran but internal checks may have issues)r   z'Timeout expired during bash script testr   r   )r   r   r   r*   r+   r.   r0   r1   r/   r2   r   r   )r@   r3   r   r5   r   s        r   test_bash_scriptrD      sT    
!
!)
,CC	F3~~S%&	
 ??a#F8 M [[ #F8 +DOO+<<mnF7O M  ${{9dkk@@BeTXTcTcSdFeF7O M $$ DCw
 M	  1,QC0w M  3.qc2wM3s5   8C !2C <C D$/D$7DD$DD$c                     g } t         dz  }| j                  t        |             t         dz  dz  }| j                  t        |dg             t         dz  dz  }| j                  t	        |             t         dz  dz  }| j                  t        |             t        |       }t        d | D              }||z
  }|||| d	}t        t        j                  |d
d             t        j                  |dk(  rd       y d       y )Nzdispatch.pymemoryztask-timer.pylistpromptszteam_prompts.pyzhealth-check.shc              3   ,   K   | ]  }|d    s	d  yw)r      N ).0rs     r   	<genexpr>zmain.<locals>.<genexpr>   s     3qq{3s   
)totalr   failedresults   F)indentensure_asciir   rJ   )r   appendr:   r?   r6   rD   lensumprintjsondumpsr,   exit)	rQ   dispatch_pytask_timer_pyteam_prompts_pyhealth_check_shrO   r   rP   summarys	            r   mainra      s    G m+KNN9[)* (?:MNN>-&:;  )+.??ONN;/0  (*->>ONN#O45 LE3G33FV^F 	G 
$**WQU
;<HH&A+Q%1%    __main__)N)__doc__rY   osr   r*   r,   tempfilepathlibr   environgetr   dictr   r6   r:   rG   r?   rD   ra   __name__rK   rb   r   <module>rl      s     	   
   02GHI	4 D (T d @ $ :d $ $ <$$ $4 $N!&H zF rb   