
    (<i]                     H   d Z ddlZddlZddlmZ ddlZej                  j                  d e ee	      j                  j                               ddlmZ  G d d      Z G d d      Z G d	 d
      Z G d d      Z G d d      Zedk(  r ej&                  e	dg       yy)uF  
utils/env_loader.py - load_env_keys() 단위 테스트

테스트 항목:
- .env.keys 파일 정상 로드 및 반환값 확인
- 파일 없을 때 예외 없이 0 반환 확인
- 기존 환경변수 덮어쓰지 않음 확인 (setdefault 동작)
- 따옴표로 감싸진 값 파싱 확인
- 주석 및 빈 줄 무시 확인
    N)Path)load_env_keysc                       e Zd ZdZd Zy)TestLoadEnvKeysNormalLoadu.   정상적인 .env.keys 파일 로드 테스트c                    |dz  }|j                  d       |j                  dd       |j                  dd       t        t        |            }|dk(  sJ t        j
                  d   dk(  sJ t        j
                  d   d	k(  sJ y
)uR   export KEY=value 형식 두 줄 로드 후 반환값 2, 환경변수 설정 확인	.env.keysz&export KEY1=value1
export KEY2=value2
KEY1FraisingKEY2   value1value2N)
write_textdelenvr   strosenvironselftmp_pathmonkeypatchenv_fileresults        F/home/jay/workspace/.worktrees/task-2057-dev2/tests/test_env_loader.py&test_loads_variables_and_returns_countz@TestLoadEnvKeysNormalLoad.test_loads_variables_and_returns_count   s    k)FG 	651651s8}-{{zz&!X---zz&!X---    N)__name__
__module____qualname____doc__r    r   r   r   r      s
    8.r   r   c                       e Zd ZdZd Zy)TestLoadEnvKeysMissingFileu%   파일이 없을 때 동작 테스트c                 D    t        |dz        }t        |      }|dk(  sJ y)u<   존재하지 않는 경로 전달 시 예외 없이 0 반환zdoes_not_exist.env.keysr   N)r   r   )r   r   nonexistentr   s       r   0test_missing_file_returns_zero_without_exceptionzKTestLoadEnvKeysMissingFile.test_missing_file_returns_zero_without_exception.   s(    (%>>?{+{{r   N)r   r   r    r!   r'   r"   r   r   r$   r$   +   s
    /r   r$   c                       e Zd ZdZd Zy)TestLoadEnvKeysNoOverwriteuH   기존 환경변수를 덮어쓰지 않는 동작 테스트 (setdefault)c                     |j                  dd       |dz  }|j                  d       t        t        |             t        j
                  d   dk(  sJ y)uH   이미 설정된 환경변수는 .env.keys 값으로 덮어쓰지 않음EXISTING_KEYoriginalr   z export EXISTING_KEY=overwritten
N)setenvr   r   r   r   r   )r   r   r   r   s       r   %test_existing_env_var_not_overwrittenz@TestLoadEnvKeysNoOverwrite.test_existing_env_var_not_overwritten:   sN    >:6k)?@c(m$zz.)Z777r   N)r   r   r    r!   r.   r"   r   r   r)   r)   7   s
    R	8r   r)   c                       e Zd ZdZd Zy)TestLoadEnvKeysQuotedValuesu+   따옴표로 감싸진 값 파싱 테스트c                    |j                  dd       |j                  dd       |dz  }|j                  d       t        t        |            }|dk(  sJ t        j
                  d   dk(  sJ t        j
                  d   d	k(  sJ y
)uL   export QUOTED1="hello world" → QUOTED1 == "hello world" (따옴표 제거)QUOTED1Fr
   QUOTED2r   z<export QUOTED1="hello world"
export QUOTED2='single quoted'
r   zhello worldzsingle quotedNr   r   r   r   r   r   r   s        r   !test_double_quoted_value_strippedz=TestLoadEnvKeysQuotedValues.test_double_quoted_value_strippedI   s    9e49e4k)^_s8}-{{zz)$555zz)$777r   N)r   r   r    r!   r5   r"   r   r   r0   r0   F   s
    58r   r0   c                       e Zd ZdZd Zy)$TestLoadEnvKeysCommentsAndBlankLinesu"   주석과 빈 줄 무시 테스트c                     |j                  dd       |dz  }|j                  d       t        t        |            }|dk(  sJ t        j
                  d   dk(  sJ y)	uL   # 주석 및 빈 줄은 건너뛰고 유효한 변수만 로드, 반환값 1VALIDFr
   r   z# comment

export VALID=yes
   yesNr4   r   s        r   %test_comments_and_blank_lines_ignoredzJTestLoadEnvKeysCommentsAndBlankLines.test_comments_and_blank_lines_ignored[   s_    7E2k)=>s8}-{{zz'"e+++r   N)r   r   r    r!   r<   r"   r   r   r7   r7   X   s
    ,
,r   r7   __main__z-v)r!   r   syspathlibr   pytestpathinsertr   __file__parentutils.env_loaderr   r   r$   r)   r0   r7   r   mainr"   r   r   <module>rG      s   	 
 
   3tH~,,334 5 *. .&	 	8 88 8$, ,  zFKK4 ! r   