
    (<i                         d Z ddlZddlZddlZdZej
                  j                  de       d Zd Zd Z	d Z
d Zd	 Zd
 Zy)uN   test_task_1919.py - test_runner MANDATORY 복원 + full_suite 검증 테스트    Nz!/home/jay/workspace/teams/dev1/qcc                  &    ddl m}  d| v sJ d       y)uD   test_runner는 MANDATORY이므로 --skip으로 건너뛸 수 없다.r   MANDATORY_CHECKStest_runneru0   test_runner가 MANDATORY_CHECKS에 있어야 함N)	qc_verifyr   r   s    E/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_task_1919.py*test_skip_test_runner_blocked_by_mandatoryr	      s    
 +,,`.``,    c                      ddl m}  d| v sJ y)u6   full_suite_check가 ALL_CHECKS에 포함되어 있다.r   
ALL_CHECKSfull_suite_checkN)r   r   r   s    r   #test_full_suite_check_in_all_checksr      s    $+++r
   c                 T   ddl m} | dz  }|j                          |dz  }|j                  d       |dz  }|j                  d       |j	                  dt        |              |j                  d	
      }|d   dk(  s
J d|        dj                  |d         }d|v s
J d|        y)u;   full_suite=True면 workspace tests/ 전체를 실행한다.r   Ntestsz	test_a.pyzdef test_a():
    assert True
z	test_b.pyzdef test_b():
    assert True
WORKSPACE_ROOTT
full_suitestatusPASSu8   full_suite=True로 모든 테스트 통과 기대, got: 
detailsu7   tests 디렉토리 경로가 포함되어야 함, got: )verifiers.test_runnerr   mkdir
write_textsetenvstrverifyjoin)tmp_pathmonkeypatchtr	tests_dirtest1test2resultdetails_strs           r   test_full_suite_runs_all_testsr(      s    & 7"IOO#E	78#E	78'X7YY$Y'F(v%j)abhai'jj%))F9-.Kk!j%\]h\i#jj!r
   c                     ddl m} | dz  }|j                          |dz  }|j                  d       |j	                  dt        |              |j                  d      }|d	   d
k(  s
J d|        y)u9   full_suite=True에서 테스트 실패하면 FAIL 반환.r   Nr   test_failing.pyz6def test_fail():
    assert False, 'intentional fail'
r   Tr   r   FAILu0   실패 테스트가 있으면 FAIL 기대, got: )r   r   r   r   r   r   r   )r    r!   r"   r#   	test_failr&   s         r    test_full_suite_fails_on_failurer-   6   sz    &7"IOO--IST'X7YY$Y'F(v%b)YZ`Ya'bb%r
   c           	      |   ddl }ddlm} t        t        j
                  j                               D ]M  }|j                  d      st        t        j
                  |   |j                        s=t        j
                  |= O dt        j
                  v r"|j                  t        j
                  d          ddlm} | dz  }|j                          |dz  }|j                  d       |j                  d	t!        |               |d
g ddg dg       }|d   dk(  s
J d|        dj#                  |d         }	d|	v sJ y)uD   full_suite_check에서 FAIL이 발생하면 WARN으로 변환된다.r   N	verifiersr   )	run_checkr   r*   z"def test_fail():
    assert False
r   r   z	task-test )name	skip_listtask_idapi_baseapi_endpointstest_dir
file_pathsr   WARNu-   full_suite FAIL → WARN 변환 기대, got: r   r   u   WARN 변환)	importlibunittest.mockmocklistsysmoduleskeys
startswith
isinstance	MagicMockreloadr   r0   r   r   r   r   r   )
r    r!   r:   _um_nr0   r#   r,   r&   r'   s
             r   'test_full_suite_check_fail_becomes_warnrG   G   s(    3;;##%&  ==%*S[[_cmm*TB  ckk![12# 7"IOO--I?@'X7F (v%_)VW]V^'__%))F9-.KK'''r
   c                      ddl } | j                  j                  dd       ddlm} d} ||      }|J |d   dk(  sJ |d   dk(  sJ d	} ||      }|J |d   d
k(  sJ |d   dk(  sJ y)u5   보고서에서 passed/failed 숫자를 파싱한다.r   N/home/jay/workspace/scriptsparse_report_test_resultsu*   pytest 결과: 12 passed, 0 failed in 1.5spassed   failedz5 passed, 3 failed in 2.1s      r>   pathinsertg3_independent_verifierrK   )r>   rK   contentr&   content2result2s         r   test_parse_report_test_resultsrX   k   s    HHOOA45A:G&w/F(r!!!(q   +H'1G8!!!8!!!r
   c                  l    ddl } | j                  j                  dd       ddlm} d} ||      }|J y)u*   테스트 결과가 없으면 None 반환.r   NrI   rJ   u5   이 보고서에는 테스트 결과가 없습니다.rQ   )r>   rK   rU   r&   s       r   )test_parse_report_test_results_no_patternrZ   ~   s4    HHOOA45AEG&w/F>>r
   )__doc__osr>   pytestQC_DIRrR   rS   r	   r   r(   r-   rG   rX   rZ    r
   r   <module>r`      sQ    T 	 
  
- 6 a,k0c" (H"&r
   