
    $i$                     f   d Z ddlZddlmc mZ ddlZddlZddl	Z	ddl
mZ ddlZ ed      Z ed      Z e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 G d d      Z G d d      Z G d d      Zedk(  r ej4                  edg       yy)u;  
youtube-check-new-transcripts.py 테스트

작업: task-192.1
목적: 유튜브 요약 대기 영상 감지 스크립트 동작 검증

참고: Firebase 연동 테스트는 task-190.1에서 검증된 TypeScript 스크립트를 사용.
      이 테스트는 Python 스크립트 자체의 로직 검증에 집중.
    NPathz</home/jay/workspace/scripts/youtube-check-new-transcripts.pyz./home/jay/workspace/memory/youtube-transcriptsz:/home/jay/projects/insuwiki/scripts/youtube-get-pending.tsc                   (    e Zd ZdZd Zd Zd Zd Zy)TestScriptExistsu$   스크립트 존재 여부 테스트c                    t         j                  } |       }|st        j                  dt                dz   dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}}y)u-   스크립트 파일이 존재하는지 확인u%   스크립트 파일이 없습니다: C
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}SCRIPT_PATHpy0py2py4N)
r	   exists
@pytest_ar_format_assertmsg@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationself@py_assert1@py_assert3@py_format5s       K/home/jay/projects/insuwiki/tests/youtube/test_youtube_check_transcripts.pytest_script_existsz#TestScriptExists.test_script_exists   ss    !!Z!#Z#ZZ'L[M%ZZZZZZZ{ZZZ{ZZZ!ZZZ#ZZZZZZ    c                    t         j                  } |       }|j                  }d}||z  }|st        j                  d      dz   dt        j                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}x}}y)u1   스크립트에 실행 권한이 있는지 확인I   u-   스크립트에 실행 권한이 없습니다zj
>assert (%(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.stat
}()
}.st_mode
} & %(py8)s)r	   r   r   r   py6py8N)r	   statst_moder   r   r   r   r   r   r   r   )r   r   r   @py_assert5@py_assert7@py_assert9@py_format10s          r   test_script_executablez'TestScriptExists.test_script_executable   s    b!b!))bEb)E1b1bb3bbbbbbb{bbb{bbbbbb!bbb)bbbEbbbbbbbr   c                 ,   t        j                  dddt        t              gdd      }|j                  }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }t        j                  d|j                         dz   d|iz  }t        t        j                  |            dx}x}}y)u   Python 문법 검증python3z-m
py_compileTcapture_outputtextr   ==z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sresultr   r   py5u   문법 오류: 
>assert %(py7)spy7N)
subprocessrunstrr	   
returncoder   _call_reprcomparer   r   r   r   r   stderrr   r   r   r4   r   @py_assert4r   @py_format6@py_format8s          r   test_script_syntaxz#TestScriptExists.test_script_syntax"   s    lC,<=

   HAH A%HHH AHHHHHHvHHHvHHH HHHAHHH'HHHHHHHHr   c                    t         j                  } |       }|st        j                  dt                dz   dt	        j
                         v st        j                  t               rt        j                  t               ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}}y)u1   TypeScript 스크립트가 존재하는지 확인u)   TypeScript 스크립트가 없습니다: r   TS_SCRIPT_PATHr
   N)
rE   r   r   r   r   r   r   r   r   r   r   s       r   test_ts_script_existsz&TestScriptExists.test_ts_script_exists+   su    $$d$&d&dd*STbSc(ddddddd~ddd~ddd$ddd&ddddddr   N)__name__
__module____qualname____doc__r   r*   rC   rF    r   r   r   r      s    .[cIer   r   c                       e Zd ZdZd Zy)TestScriptHelpu   도움말 테스트c                 `   t        j                  dt        t              dgddd      }|j                  }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}x}}g }d}|j                  }|j                  }	 |	       }
||
v }|}|s'd}|j                  }|j                  } |       }||v }|}|st        j                  d|fd||
f      t        j                  |      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |	      t        j                  |
      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	t        j                        t        j                        t        j                  |      dz  }dd|iz  }|j                  |       t        j                   |d      i z  }dd|iz  }t        t        j                  |            dx}x}x}x}x}x}	x}
x}x}x}x}}y)u.   --help 옵션이 정상 동작하는지 확인r,   z--helpT   r/   r0   timeoutr   r1   r3   r4   r5   assert %(py7)sr8   Nzusage:zoptional argumentsin)zb%(py3)s in %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s.stdout
}.lower
}()
})py3r6   r8   py9py11z%(py13)spy13)zh%(py16)s in %(py24)s
{%(py24)s = %(py22)s
{%(py22)s = %(py20)s
{%(py20)s = %(py18)s.stdout
}.lower
}()
})py16py18py20py22py24z%(py26)spy26   zassert %(py29)spy29)r9   r:   r;   r	   r<   r   r=   r   r   r   r   r   r   stdoutlowerappend_format_boolop)r   r4   r   r@   r   rA   rB   @py_assert2@py_assert6@py_assert8@py_assert10@py_assert0@py_assert15@py_assert19@py_assert21@py_assert23@py_assert17@py_format12@py_format14@py_format25@py_format27@py_format28@py_format30s                          r   test_help_outputzTestScriptHelp.test_help_output3   s   K((3	
   %A% A%%%% A%%%%%%v%%%v%%% %%%A%%%%%%%axa6==a=..a.0ax00a4HaFMMaML_L_aL_Laa4HLa4aaaaax0aaaxaaaaaa6aaa6aaa=aaa.aaa0aaaaaaa4HLaaaa4HaaaaaaFaaaFaaaMaaaL_aaaLaaaaaaaaaaaaaaaar   N)rG   rH   rI   rJ   ru   rK   r   r   rM   rM   0   s    
br   rM   c                       e Zd ZdZd Zy)TestArgumentValidationu   인자 검증 테스트c                    t        j                  dt        t              dgddd      }|j                  }d}||k7  }|st        j                  d|fd||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }t        j                  d      dz   d|iz  }t        t        j                  |            dx}x}}y)u0   --with-transcript 옵션은 --video-id가 필요r,   z--with-transcriptTrO   rP   r   )!=)z2%(py2)s
{%(py2)s = %(py0)s.returncode
} != %(py5)sr4   r5   u?   --video-id 없이 --with-transcript 사용 시 에러여야 함r7   r8   N)r9   r:   r;   r	   r<   r   r=   r   r   r   r   r   r   r   r?   s          r   &test_with_transcript_requires_video_idz=TestArgumentValidation.test_with_transcript_requires_video_idC   s    K(*=>	
   hAh A%hhh Ahhhhhhvhhhvhhh hhhAhhh'hhhhhhhhr   N)rG   rH   rI   rJ   rz   rK   r   r   rw   rw   @   s    !
ir   rw   c                       e Zd ZdZd Zd Zy)TestTranscriptSaveLogicu2   전문 저장 로직 테스트 (subprocess 기반)c                    t        j                         5 }t        |      dz  }d}t        |dd      5 }|j	                  |       ddd       |j
                  } |       }|st        j                  d      dz   d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }t        t        j                  |            dx}}t        |dd      5 }|j                         }ddd       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}	}
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dd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)u8   전문 저장 기능이 파일을 생성하는지 확인ztest_transcript.mdu   # 테스트 영상

- **채널**: 테스트 채널
- **영상 ID**: test_video_123
- **원본 URL**: https://www.youtube.com/watch?v=test_video_123

---

## 전문

이것은 테스트 전문입니다.
wutf-8encodingNu   파일이 생성되어야 함r   	test_filer
   r   테스트 영상rS   z%(py1)s in %(py3)ssaved_contentpy1rU   assert %(py5)sr6   test_video_123z.https://www.youtube.com/watch?v=test_video_123)tempfileTemporaryDirectoryr   openwriter   r   r   r   r   r   r   r   r   readr=   )r   tmpdirr   contentfr   r   r   r   ri   re   @py_format4rA   s                r   !test_save_transcript_creates_filez9TestTranscriptSaveLogic.test_save_transcript_creates_fileS   s*    ((* 	UfV';;IG iw7 !1 ! ##F#%F%FF'FFFFFFF9FFF9FFF#FFF%FFFFFF iw7 )1 !) &6%6666%666%6666666666666666#4#}4444#}444#444444}444}4444444CTC}TTTTC}TTTCTTTTTT}TTT}TTTTTTT=	U 	U$! !) )3	U 	Us<   ML)CML6)G7M)L3	.M6M 	;MMc                    t         j                  }|j                  } |       }|st        j                  d|       dz   dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }t        t        j                  |            dx}}y)u8   전문 저장 디렉토리 경로가 유효한지 확인u%   부모 디렉토리가 없습니다: r   parentr
   N)TRANSCRIPT_DIRr   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   s        r   test_transcript_dir_path_existsz7TestTranscriptSaveLogic.test_transcript_dir_path_existsv   sy      &&}}P}PPP"Gx PPPPPPPvPPPvPPP}PPPPPPPPPr   N)rG   rH   rI   rJ   r   r   rK   r   r   r|   r|   P   s    <!UFQr   r|   c                   "    e Zd ZdZd Zd Zd Zy)TestJsonOutputu   JSON 출력 형식 테스트c                    ddg}dg d}|D ]  }||v }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      nddt        j                         v st        j                  |      rt        j
                  |      ndd	z  }t        j                  d
| d      dz   d|iz  }t        t        j                  |            d} y)u'   대기 영상 목록 JSON 구조 검증pendingCountvideosr   )r   r   rS   z%(py0)s in %(py2)skeysampler   r   u   JSON 응답에 '   ' 키가 필요함
>assert %(py4)sr   N	r   r=   r   r   r   r   r   r   r   r   expected_keysr   r   r   @py_format3r   s          r   )test_expected_json_structure_pending_listz8TestJsonOutput.test_expected_json_structure_pending_list   s    '2 

 ! 	MC&=LLL3&LLLLLL3LLL3LLLLLL&LLL&LLLL$4SE9K"LLLLLLL	Mr   c                    g d}dddddddd	}|D ]  }||v }|st        j                  d
|fd||f      dt        j                         v st        j                  |      rt        j
                  |      nddt        j                         v st        j                  |      rt        j
                  |      nddz  }t        j                  d| d      dz   d|iz  }t        t        j                  |            d} y)u#   비디오 항목 JSON 구조 검증)videoIdtitlechannelNameabc123r      테스트 채널z
2026-03-03TNyoutube_caption)r   r   r   publishedAthasTranscriptdriveTranscriptUrltranscriptionSourcerS   r   r   sample_videor   u   비디오 항목에 'r   r   r   r   )r   expected_video_keysr   r   r   r   r   s          r   'test_expected_json_structure_video_itemz6TestJsonOutput.test_expected_json_structure_video_item   s    A  '-'!"&#4
 ' 	XC,&WWW3,WWWWWW3WWW3WWWWWW,WWW,WWWW*?uDV(WWWWWWW	Xr   c                    d}t        j                  |      }|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}}|d
   }t        |      }d}	||	k(  }
|
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
   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	)u   JSON 파싱 로직 테스트zK{"pendingCount": 2, "videos": [{"videoId": "test1"}, {"videoId": "test2"}]}r      r1   )z%(py1)s == %(py4)s)r   r   zassert %(py6)sr"   Nr   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)slen)r   r   r   r8   zassert %(py9)srV   r   r   test1)jsonloadsr   r=   r   r   r   r   r   r   r   )r   	test_jsonparsedri   r   re   r   @py_format7r   rf   r&   rB   r)   s                r   test_json_parsing_logicz&TestJsonOutput.test_json_parsing_logic   sN    b	I&n%**%****%***%**********(#)s#$))$))))$))))))s)))s)))#)))$))))))))))h"9-88-8888-888-8888888888r   N)rG   rH   rI   rJ   r   r   r   rK   r   r   r   r   }   s    &MX"9r   r   c                       e Zd ZdZd Zd Zy)TestTranscriptOutputu   전문 조회 출력 테스트c                    g d}ddddd}|D ]  }||v }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j
                  |      ndd	t        j                         v st        j                  |      rt        j
                  |      nd	d
z  }t        j                  d| d      dz   d|iz  }t        t        j                  |            d} y)u    전문 조회 JSON 구조 검증)r   r   r   
transcripttest123r   r      전문 내용...rS   r   r   r   r   u   전문 JSON에 'r   r   r   Nr   r   s          r   test_transcript_json_structurez3TestTranscriptOutput.test_transcript_json_structure   s    I !'-,	
 ! 	MC&=LLL3&LLLLLL3LLL3LLLLLL&LLL&LLLL$4SE9K"LLLLLLL	Mr   c                 ^   dddddd}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}}y)u#   저장된 전문 JSON 구조 검증r   r   r   r   z/path/to/transcript.md)r   r   r   r   savedTor   rS   r   sample_with_savedr   r   r6   N)r   r=   r   r   r   r   r   r   )r   r   ri   re   r   rA   s         r   $test_saved_transcript_json_structurez9TestTranscriptOutput.test_saved_transcript_json_structure   sz     !'-,/
 -y-----y----y------------------r   N)rG   rH   rI   rJ   r   r   rK   r   r   r   r      s    (M.r   r   c                   (    e Zd ZdZd Zd Zd Zd Zy)TestScriptModulesu!   필요한 모듈 import 테스트c                    ddl } |j                  ddi      }|j                  } ||      }ddi}||k(  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      d	z  }d
d|iz  }t        t        j                  |            dx}x}x}}y)u   json 모듈 사용 가능r   Ntestvaluer1   )zK%(py5)s
{%(py5)s = %(py2)s
{%(py2)s = %(py0)s.loads
}(%(py3)s)
} == %(py8)sr   data)r   r   rU   r6   r#   zassert %(py10)spy10)r   dumpsr   r   r=   r   r   r   r   r   r   )	r   r   r   r   r@   r'   rf   @py_format9@py_format11s	            r   test_json_modulez"TestScriptModules.test_json_module   s    tzz67+,zz4z$4FG#44#44444#4444444t444t444z444444$444$444444#44444444r   c                    ddl } |j                  ddgdd      }|j                  }d}||k(  }|st        j                  d|fd||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            dx}x}}y)u   subprocess 모듈 사용 가능r   Nechor   Tr.   r1   r3   r4   r5   rR   r8   )r9   r:   r<   r   r=   r   r   r   r   r   r   )r   r9   r4   r   r@   r   rA   rB   s           r   test_subprocess_modulez(TestScriptModules.test_subprocess_module   s     0DQ  %A% A%%%% A%%%%%%v%%%v%%% %%%A%%%%%%%r   c                    ddl m} d} ||      }|j                  } |       }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            dx}x}x}}y)u   pathlib 모듈 사용 가능r   r   z/tmpz_assert %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}.exists
}()
}r   r!   N)
pathlibr   r   r   r   r   r   r   r   r   )r   r   r   r   r&   r'   r   s          r   test_pathlib_modulez%TestScriptModules.test_pathlib_module   s     $tF|$|""$"$$$$$$$$t$$$t$$$F$$$|$$$"$$$$$$$$$$r   c                    ddl m } |j                         }|j                  }d}||k\  }|st        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d
x}x}}y
)u   datetime 모듈 사용 가능r   )datetimei  )>=)z,%(py2)s
{%(py2)s = %(py0)s.year
} >= %(py5)snowr5   rR   r8   N)r   r   yearr   r=   r   r   r   r   r   r   )r   r   r   r   r@   r   rA   rB   s           r   test_datetime_modulez&TestScriptModules.test_datetime_module   s}    %llnxx4x4x4ssx4r   N)rG   rH   rI   rJ   r   r   r   r   rK   r   r   r   r      s    +5&%
 r   r   c                       e Zd ZdZd Zd Zy)TestErrorHandlingu   에러 처리 테스트c                      y)u3   TypeScript 스크립트가 없을 때 에러 반환NrK   )r   s    r   $test_missing_ts_script_returns_errorz6TestErrorHandling.test_missing_ts_script_returns_error   s     	r   c                    d}	 t        j                  |       d}|sNt        j                  d      dz   dt        j                  |      iz  }t        t        j                  |            d}y# t         j                  $ r Y yw xY w)u   잘못된 JSON 처리 테스트znot a valid jsonFu#   JSONDecodeError가 발생해야 함z
>assert %(py1)sr   N)r   r   r   r   r   r   r   JSONDecodeError)r   invalid_jsonri   @py_format2s       r   test_invalid_json_handlingz,TestErrorHandling.test_invalid_json_handling   s^    )	JJ|$?5??????5??????## 		s   A)A. .BBN)rG   rH   rI   rJ   r   r   rK   r   r   r   r      s    !r   r   c                       e Zd ZdZd Zd Zy)TestIntegrationu   통합 테스트c                 p   t        t        dd      5 }|j                         }ddd       g }d}|v }|}|sd}||v }|}|sXt        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  }dd|iz  }t        t        j                  |            dx}x}x}x}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}}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}}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}}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}}y# 1 sw Y   	xY w)u*   스크립트 파일이 완전한지 확인r   r   r   Nzdef main():zasync def main():rS   )z%(py3)s in %(py5)sr   )rU   r6   z%(py7)sr8   )z%(py10)s in %(py12)s)r   py12z%(py14)spy14r_   zassert %(py17)spy17argparser   r   r   r6   r9   r   get_pending_videosget_transcriptsave_transcriptrun_ts_script)r   r	   r   r   r=   r   r   r   r   rc   rd   r   r   )r   r   r   r   re   r@   ri   r(   @py_assert11rA   rB   @py_format13@py_format15@py_format16@py_format18r   s                   r   test_script_file_completez)TestIntegration.test_script_file_complete   st   +sW5 	ffhG	 	J}I}'I+>I+>'+IIIII}III}IIIIIIIIIIIIIIII+>'III+>IIIIII'III'IIIIIIIIIIIIII$zW$$$$zW$$$z$$$$$$W$$$W$$$$$$$&|w&&&&|w&&&|&&&&&&w&&&w&&&&&&& v    v   v                #.#w....#w...#......w...w.......*7****7*********7***7******* + G++++ G+++ ++++++G+++G+++++++)'))))')))))))))')))')))))))	 	s   X++X5c                 R   t        t        dd      5 }|j                         }ddd       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}}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}}y# 1 sw Y   xY w)u   스크립트 상수 확인r   r   r   Nzyoutube-get-pending.tsrS   r   r   r   r   r6   zyoutube-transcriptsinsuwiki)r   r	   r   r   r=   r   r   r   r   r   r   )r   r   r   ri   re   r   rA   s          r   test_script_constantsz%TestIntegration.test_script_constants	  sC   +sW5 	ffhG	 (2'72222'7222'222222722272222222$/$////$///$////////////////$zW$$$$zW$$$z$$$$$$W$$$W$$$$$$$	 	s   HH&N)rG   rH   rI   rJ   r   r   rK   r   r   r   r      s    *%r   r   __main__z-v)rJ   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r   pytestr9   r   r   r   r	   r   rE   r   rM   rw   r|   r   r   r   r   r   rG   main__file__rK   r   r   <module>r     s          QRFGRSe e2b b i i *Q *QZ)9 )9X. .>   6 (% %: zFKK4 ! r   