
    qib
                         d Z ddlZddlmc mZ ddlZej                  j                  dd       ddl
mZ d Zd Zd ZddlZddlmZ ddlmZ d	 Zd
 Zd Zd Zy)uY   
test_verifiers.py - style_check / scope_check verifier 테스트 (task-1994 TDD 보완)
    Nz/home/jay/workspace)verifyc                     t        g       } | d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d x}x}}y )NstatusSKIP==z%(py1)s == %(py4)spy1py4assert %(py6)spy6r   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationresult@py_assert0@py_assert3@py_assert2@py_format5@py_format7s         +/home/jay/workspace/tests/test_verifiers.pytest_style_check_skip_no_filesr      s]    BZF(%v%v%%%%v%%%%%%v%%%%%%%    c                     t        ddg      } | d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d x}x}}y )
Nzfile.txtz	readme.mdr   r   r   r	   r
   r   r   r   r   s         r   test_style_check_skip_no_pythonr       sc    Z-.F(%v%v%%%%v%%%%%%v%%%%%%%r   c                     ddl } | j                  t              }d}||v }|st        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }t        j                  d      d	z   d
|iz  }t        t        j                  |            dx}}g }d}||v }|}|sd}||v }	|	}|snt        j                  d|fd||f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }
|j                  |
       |st        j                  d	fd|f      t        j
                  |      dt        j                         v st        j                  |      rt        j
                  |      nddz  }dd|iz  }|j                  |       t        j                  |d      i z  }t        j                  d      dz   d|iz  }t        t        j                  |            dx}x}x}x}x}}	y)uF   위반 파일 5개 이상이면 FAIL 반환하는 로직 존재 확인r   Nz>= 5inz%(py1)s in %(py3)ssourcer   py3u+   FAIL 승격 임계값 5가 코드에 없음z
>assert %(py5)spy5z"FAIL"z'FAIL')z%(py3)s in %(py5)s)r'   r(   z%(py7)spy7)z%(py10)s in %(py12)s)py10py12z%(py14)spy14   u   FAIL 반환 로직 없음z
>assert %(py17)spy17)inspect	getsourcer   r   r   r   @py_builtinslocals_should_repr_global_name_format_assertmsgr   r   append_format_boolop)r/   r%   r   r   @py_format4@py_format6@py_assert1@py_assert4@py_assert9@py_assert11@py_format8@py_format13@py_format15@py_format16@py_format18s                  r   test_style_check_fail_thresholdrB      sK   v&FJ6VJJJ6VJJJ6JJJJJJVJJJVJJJJJJJJJJJP8P8vPPV!3PPPP8vPPP8PPPPPPvPPPvPPPPPPPVPPPPPPPPPVPPPVPPPPPPPPPP5PPPPPPPPr   )_extract_files_from_reportc                     t        g d      } | d   }d}||k(  }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t	        t        j
                  |            d	x}x}}y	)
u7   expected_files 비어있고 보고서도 없으면 SKIPtask-nonexistent-99999r   r   r   r	   r
   r   r   Nscope_verifyr   r   r   r   r   r   s         r   !test_scope_check_skip_no_expectedrH   (   sa    "67F(%v%v%%%%v%%%%%%v%%%%%%%r   c                  f   t        d      } g }| |k(  }|st        j                  d|fd| |f      dt        j                         v st        j
                  |       rt        j                  |       ndt        j                  |      dz  }dd|iz  }t        t        j                  |            dx}}y)	u/   존재하지 않는 보고서 → 빈 리스트rE   r   )z%(py0)s == %(py3)sfiles)py0r'   assert %(py5)sr(   N)	rC   r   r   r1   r2   r3   r   r   r   )rJ   r   r9   r7   r8   s        r   *test_extract_files_from_report_nonexistentrM   .   se    &'?@E5B;5B55Br   c                     d} d}t         j                  j                  | | d      }	 t        |d      5 }|j	                  d       ddd       t        |      }d}||v }|st        j                  d|fd	||f      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
dz  }dd|iz  }t        t        j                  |            dx}}d}||v }|st        j                  d|fd	||f      t        j                  |      d
t        j                         v st        j                  |      rt        j                  |      nd
dz  }dd|iz  }t        t        j                  |            dx}}t        j                  |       y# 1 sw Y   uxY w# t        j                  |       w xY w)u.   보고서 테이블에서 파일 경로 추출z"/home/jay/workspace/memory/reportsz	task-9999z.mdwub   # Test Report
| 파일 | 변경 |
|---|---|
| dispatch.py:854 | test |
| style_check.py | test2 |
Nzdispatch.pyr"   r$   rJ   r&   rL   r(   zstyle_check.py)ospathjoinopenwriterC   r   r   r   r1   r2   r3   r   r   unlink)	
report_dirtest_idtest_reportfrJ   r   r   r7   r8   s	            r   $test_extract_files_from_report_tablerZ   4   s7   5JG'',,zgYc?;K	+s# 	qGGy	 +73%}%%%%}%%%}%%%%%%%%%%%%%%%%(5((((5(((((((((5(((5(((((((
		+	 	 			+s#   G F:EG :G?G Gc                     t        dgd      } | d   }d}||v }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd	|iz  }t	        t        j
                  |            d
x}x}}y
)u3   expected_files와 actual_files가 일치하면 PASSzsome_file.pyrE   r   )r   WARNr"   )z%(py1)s in %(py4)sr
   r   r   NrF   r   s         r   "test_scope_check_pass_all_expectedr]   E   sj     >*,DEF(///////////////////////r   )__doc__builtinsr1   _pytest.assertion.rewrite	assertionrewriter   sysrQ   insert"teams.shared.verifiers.style_checkr   r   r    rB   rP   "teams.shared.verifiers.scope_checkrC   rG   rH   rM   rZ   r]    r   r   <module>rh      sX     
 ( ) 5
&
&
Q 
 I E&"0r   