
    i	                         d Z ddlZddlmc mZ ddlZddlm	Z	  e	e
      j                  j                  Zej                  j                  d ee             ddlmZ d Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zy)u  
test_dispatch_insuro_reload.py

_is_insuro_server_change 헬퍼 단위 테스트 (task-2339).

dispatch.py가 affected_files 중 InsuRo FastAPI 서버 코드 변경을 감지하면
PR 머지 후 systemd reload 안내를 task 프롬프트에 자동 삽입한다.
    N)Path)_is_insuro_server_changec                     g } t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y NFisz0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   py0py2py4py7assert %(py9)spy9	r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation@py_assert1@py_assert3@py_assert6@py_assert5@py_format8@py_format10s         8/home/jay/workspace/tests/test_dispatch_insuro_reload.pytest_empty_list_returns_falser"      s    $&0#B'050'50000'5000000#000#000B000'00050000000    c                     d } t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y r   r   r   s         r!    test_none_or_falsy_returns_falser%      s    $(2#D)2U2)U2222)U222222#222#222D222)222U2222222r#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nserver/main.pyTr   r	   r   r
   r   r   r   r   s         r!   #test_server_main_py_substring_matchr(      s    %5$6?#$67?4?74????74??????#???#???$6???7???4???????r#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nzserver/routes/composite.pyTr   r	   r   r
   r   r   r   r   s         r!    test_server_subpath_prefix_matchr*      s    %A$BK#$BCKtKCtKKKKCtKKKKKK#KKK#KKK$BKKKCKKKtKKKKKKKr#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nz(/home/jay/projects/InsuRo/server/main.pyTr   r	   r   r
   r   r   r   r   s         r!   &test_absolute_insuro_server_path_matchr,   #   s    	34#4 	 	   	 v   $  I $  I 	5 I  I      r#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x} x}x}}y )	Nz//home/jay/projects/InsuRo/server/routes/auth.pyTr   r	   r   r
   r   r   r   r   s         r!   )test_absolute_insuro_server_subpath_matchr.   )   s    	:;#; 	 	   	 v   $  I $  I 	< I  I      r#   c                     ddg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )
N(src/components/ExtensionVersionToast.tsxzsrc/pages/CompositeDesign.tsxFr   r	   r   r
   r   r   r   r   s         r!    test_frontend_only_returns_falser1   /   s     7+	
#	
 
 
 
 
 
  
 
 
 	 
  $  
 Y $  
 Y		
 
 Y  
 Y   
   r#   c                     ddg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )
Nzdispatch.pyzutils/logger.pyFr   r	   r   r
   r   r   r   r   s         r!   *test_workspace_dispatch_only_returns_falser3   8   s    %24E$FP#$FGP5PG5PPPPG5PPPPPP#PPP#PPP$FPPPGPPP5PPPPPPPr#   c                     ddg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x} x}x}}y )
Nr0   r'   Tr   r	   r   r
   r   r   r   r   s         r!   #test_mixed_with_server_returns_truer5   <   s     7	
#	
 
 
 
 
 
  
 
 
 v 
  $  
 I $  
 I		
 
 I  
 I   
   r#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}y	)
uy  server/로 시작하는 모든 항목은 True (현재 정책: InsuRo 외 server/ 디렉토리도 매치).

    이는 의도적이다 — InsuRo가 현재 유일한 ``server/`` 디렉토리 사용자이며,
    잘못된 false negative를 줄이기 위해 prefix 매칭을 채택했다.
    다른 프로젝트가 server/를 도입하면 매칭 규칙을 좁혀야 한다.
    zserver/foo.pyTr   r	   r   r
   r   r   Nr   r   s         r!   *test_other_project_server_dir_returns_truer7   E   s     &5$5>#$56>$>6$>>>>6$>>>>>>#>>>#>>>$5>>>6>>>$>>>>>>>r#   c                     dg} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}d
g} t        |       }d}||u }|st        j                  d|fd||f      dt        j                         v st        j
                  t               rt        j                  t               ndt        j                  |       t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d	x} x}x}}y	)uH   단순히 'server' 단어가 들어있다고 매치되지 않아야 함.zsrc/lib/server-utils.tsFr   r	   r   r
   r   r   Nzdocs/server-deployment.mdr   r   s         r!   .test_server_substring_in_middle_does_not_matchr9   O   s   %>$?I#$?@IEI@EIIII@EIIIIII#III#III$?III@IIIEIIIIIII%@$AK#$ABKeKBeKKKKBeKKKKKK#KKK#KKK$AKKKBKKKeKKKKKKKr#   )__doc__builtinsr   _pytest.assertion.rewrite	assertionrewriter   syspathlibr   __file__parent
_WORKSPACEpathinsertstrdispatchr   r"   r%   r(   r*   r,   r.   r1   r3   r5   r7   r9    r#   r!   <module>rI      s     
 (^""))
 3z? # -13@LQ?Lr#   