
    i                     d   d Z ddlZddlZej                  j	                  dej                  j                  ej                  j                  e      dd             ddlm	Z	m
Z ddlmZmZ  G d d      Z G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)u   
test_qc_false_positive_fix.py - task-2072 오탐 수정 검증 테스트

tdd_check.py의 _is_non_code_file() / _verify_by_check_files() 수정과
git_evidence.py의 _is_system_auto_file() / SYSTEM_AUTO_FILES 수정을 검증합니다.
    Nz..)_is_non_code_fileverify)_is_system_auto_fileSYSTEM_AUTO_FILESc                   @    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)TestIsNonCodeFileu%   _is_non_code_file() 함수 테스트.c                 "    t        d      du sJ y)u   .md 파일은 비코드 파일	report.mdTNr   selfs    N/home/jay/workspace/teams/shared/verifiers/tests/test_qc_false_positive_fix.pytest_md_is_non_codez%TestIsNonCodeFile.test_md_is_non_code!        -555    c                 "    t        d      du sJ y)u    .json 파일은 비코드 파일config.jsonTNr   r   s    r   test_json_is_non_codez'TestIsNonCodeFile.test_json_is_non_code%   s     /4777r   c                 "    t        d      du sJ y)u    .yaml 파일은 비코드 파일zsettings.yamlTNr   r   s    r   test_yaml_is_non_codez'TestIsNonCodeFile.test_yaml_is_non_code)   s     1T999r   c                 "    t        d      du sJ y)u   .py 파일은 코드 파일main.pyFNr   r   s    r   test_py_is_codez!TestIsNonCodeFile.test_py_is_code-        +u444r   c                 "    t        d      du sJ y)u   .ts 파일은 코드 파일zapp.tsFNr   r   s    r   test_ts_is_codez!TestIsNonCodeFile.test_ts_is_code1   s     *e333r   c                 "    t        d      du sJ y)u   .go 파일은 코드 파일z	server.goFNr   r   s    r   test_go_is_codez!TestIsNonCodeFile.test_go_is_code5   s     -666r   c                 "    t        d      du sJ y)u    경로 포함 report.md → Truer
   TNr   r   s    r   test_full_path_report_mdz*TestIsNonCodeFile.test_full_path_report_md9   r   r   c                 "    t        d      du sJ y)u   경로 포함 main.py → Falser   FNr   r   s    r   test_full_path_main_pyz(TestIsNonCodeFile.test_full_path_main_py=   r   r   N)__name__
__module____qualname____doc__r   r   r   r   r   r   r    r"    r   r   r   r      s-    /68:54765r   r   c                       e Zd ZdZd Zy)TestVerifyCheckFilesOnlyMdJsonu=   check_files에 .md/.json만 있을 때 SKIP 반환 테스트.c                 r    t        dddgd      }|d   dk(  sJ d|d    d	|j                  d
              y)u1   check_files에 비코드 파일만 있으면 SKIPztask-test-noncoder
   r   /tmp/nonexistent-audit.jsonlcheck_filesaudit_trail_pathstatusSKIPzExpected SKIP but got : detailsN
tdd_verifygetr   results     r   test_only_md_json_returns_skipz=TestVerifyCheckFilesOnlyMdJson.test_only_md_json_returns_skipE   sV    $m4;

 h6) 	
$VH%5$6bI9N8OP	
)r   N)r#   r$   r%   r&   r8   r'   r   r   r)   r)   B   s
    G	
r   r)   c                       e Zd ZdZd Zy)TestVerifyCheckFilesWithCodeuQ   check_files에 코드 파일이 있으면 기존대로 동작하는지 테스트.c                 p    t        ddgd      }|d   dk(  sJ d|d    d|j                  d	              y
)u7   테스트 파일 없이 구현 파일만 있으면 FAILztask-test-codesrc/main.pyr+   r,   r/   FAILzExpected FAIL but got r1   r2   Nr3   r6   s     r   test_code_only_returns_failz8TestVerifyCheckFilesWithCode.test_code_only_returns_failT   sS    &;

 h6) 	
$VH%5$6bI9N8OP	
)r   N)r#   r$   r%   r&   r>   r'   r   r   r:   r:   Q   s
    [	
r   r:   c                       e Zd ZdZd Zy)TestVerifyCheckFilesCodeAndTestu:   코드 + 테스트 파일 모두 있으면 PASS 테스트.c                 r    t        dddgd      }|d   dk(  sJ d|d    d	|j                  d
              y)u:   구현 파일과 테스트 파일이 모두 있으면 PASSztask-test-bothr<   tests/test_main.pyr+   r,   r/   PASSExpected PASS but got r1   r2   Nr3   r6   s     r   test_code_and_test_returns_passz?TestVerifyCheckFilesCodeAndTest.test_code_and_test_returns_passc   sW    &(<=;

 h6) 	
$VH%5$6bI9N8OP	
)r   N)r#   r$   r%   r&   rE   r'   r   r   r@   r@   `   s
    D	
r   r@   c                       e Zd ZdZd Zy)TestVerifyCheckFilesMdAndTestu8   .md + 테스트만 있으면 PASS (impl 0건) 테스트.c                 r    t        dddgd      }|d   dk(  sJ d|d    d	|j                  d
              y)uB   .md와 테스트 파일만 있으면 구현 파일 0건으로 PASSztask-test-md-testz	README.mdrB   r+   r,   r/   rC   rD   r1   r2   Nr3   r6   s     r   test_md_and_test_returns_passz;TestVerifyCheckFilesMdAndTest.test_md_and_test_returns_passr   sW    $&:;;

 h6) 	
$VH%5$6bI9N8OP	
)r   N)r#   r$   r%   r&   rI   r'   r   r   rG   rG   o   s
    B	
r   rG   c                   ^    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd Zd Zd Zy)TestIsSystemAutoFileu(   _is_system_auto_file() 함수 테스트.c                 "    t        d      du sJ y)u"   memory/heartbeats/ 경로 → Truez memory/heartbeats/dev1.heartbeatTNr   r   s    r   test_heartbeat_dirz'TestIsSystemAutoFile.test_heartbeat_dir   s    #$FG4OOOr   c                 "    t        d      du sJ y)u   memory/events/ 경로 → Truezmemory/events/task-123.doneTNrM   r   s    r   test_events_dirz$TestIsSystemAutoFile.test_events_dir       #$ABdJJJr   c                 "    t        d      du sJ y)u   logs/ 경로 → Truezlogs/app.logTNrM   r   s    r   test_logs_dirz"TestIsSystemAutoFile.test_logs_dir   s    #N3t;;;r   c                 "    t        d      du sJ y)u   bot-activity.json → Truezbot-activity.jsonTNrM   r   s    r   test_bot_activity_jsonz+TestIsSystemAutoFile.test_bot_activity_json       #$78D@@@r   c                 "    t        d      du sJ y)u   token-ledger.json → Trueztoken-ledger.jsonTNrM   r   s    r   test_token_ledger_jsonz+TestIsSystemAutoFile.test_token_ledger_json   rV   r   c                 "    t        d      du sJ y)u   whisper/ 경로 → Truezwhisper/msg.txtTNrM   r   s    r   test_whisper_dirz%TestIsSystemAutoFile.test_whisper_dir   s    #$56$>>>r   c                 "    t        d      du sJ y)u   memory/daily/ 경로 → Truezmemory/daily/2026-04-22.mdTNrM   r   s    r   test_memory_daily_dirz*TestIsSystemAutoFile.test_memory_daily_dir   s    #$@ATIIIr   c                 "    t        d      du sJ y)u*   dashboard/data/refine-status.json → Truez!dashboard/data/refine-status.jsonTNrM   r   s    r   !test_dashboard_data_refine_statusz6TestIsSystemAutoFile.test_dashboard_data_refine_status   s    #$GHDPPPr   c                 "    t        d      du sJ y)u(   경로 포함 bot-activity.json → Truezsome/path/bot-activity.jsonTNrM   r   s    r   test_nested_bot_activity_jsonz2TestIsSystemAutoFile.test_nested_bot_activity_json   rQ   r   c                 "    t        d      du sJ y)u   확장자 .heartbeat → Truezfile.heartbeatTNrM   r   s    r   test_heartbeat_extensionz-TestIsSystemAutoFile.test_heartbeat_extension   s    #$45===r   c                 "    t        d      du sJ y)u   src/main.py → Falser<   FNrM   r   s    r   test_src_main_py_is_not_systemz3TestIsSystemAutoFile.test_src_main_py_is_not_system   s    #M2e;;;r   c                 "    t        d      du sJ y)u-   teams/shared/verifiers/tdd_check.py → Falsez#teams/shared/verifiers/tdd_check.pyFNrM   r   s    r   &test_verifiers_tdd_check_is_not_systemz;TestIsSystemAutoFile.test_verifiers_tdd_check_is_not_system   s    #$IJeSSSr   c                 "    t        d      du sJ y)u#   projects/insuro/server.py → Falsezprojects/insuro/server.pyFNrM   r   s    r   %test_projects_server_py_is_not_systemz:TestIsSystemAutoFile.test_projects_server_py_is_not_system   s    #$?@EIIIr   N)r#   r$   r%   r&   rN   rP   rS   rU   rX   rZ   r\   r^   r`   rb   rd   rf   rh   r'   r   r   rK   rK      sO    2PK<AA?JQK><TJr   rK   c                       e Zd ZdZd Zd Zy)TestSystemAutoFilesConstantu-   SYSTEM_AUTO_FILES 상수 유효성 테스트.c                 0    t        t        t              sJ y)u%   SYSTEM_AUTO_FILES가 리스트 타입N)
isinstancer   listr   s    r   test_is_listz(TestSystemAutoFilesConstant.test_is_list   s    +T222r   c                 X    t        t              dk\  sJ dt        t               d       y)u/   SYSTEM_AUTO_FILES 항목이 최소 10개 이상
   u   SYSTEM_AUTO_FILES에 항목이 u   개뿐 (최소 10개 필요)N)lenr   r   s    r   test_minimum_ten_entriesz4TestSystemAutoFilesConstant.test_minimum_ten_entries   s1    $%+ 	
-c2C.D-EEab	
+r   N)r#   r$   r%   r&   rn   rr   r'   r   r   rj   rj      s    73
r   rj   )r&   sysospathinsertjoindirname__file__verifiers.tdd_checkr   r   r4   verifiers.git_evidencer   r   r   r)   r:   r@   rG   rK   rj   r'   r   r   <module>r|      s     	 277<< 94F G
 H
 K!5 !5H
 

 

 

 
(5J 5Jp
 
r   