ó
    'xáh•  ã                   óz  • S r SSKrSSKJs  Jr  SSKJrJ	r	  SSK
r
SSKJr  SSKJr  \
R                  S\4S j5       rS\4S	 jrS\4S
 jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jrS\4S jr S\4S jr!S\4S jr"g)z-Tests for quber.cli module (non-async parts).é    N)Ú	MagicMockÚpatch©Ú	CliRunner)ÚcliÚreturnc                  ó   • [        5       $ )zCreate Click CLI test runner.r   © ó    Ú/workspace/tests/test_cli.pyÚrunnerr      s   € ô ‹;Ðr   r   c                 ó8  • U R                  [        S/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒg	)zTest CLI help output.ú--helpr   ©ú==©z1%(py2)s
{%(py2)s = %(py0)s.exit_code
} == %(py5)sÚresult©Úpy0Úpy2Úpy5úassert %(py7)sÚpy7NÚQuber©Úin©z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.output
}©Úpy1Úpy3r   zAdvanced table extraction©Úinvoker   Ú	exit_codeÚ
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚoutput©	r   r   Ú@py_assert1Ú@py_assert4Ú@py_assert3Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert2s	            r   Útest_cli_helpr5      sc  € à�]‰]œ3  
Ó+€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ#—m‘mÐ#�mÑ#×#×#×#Ò#ˆ7×#×#Ô#ˆ7×#×#×#×#×#Ô#�f×#×#×#Ñ#�f×#×#Õ#�m×#×#×#×#×#×#Ó#Ø&Ð7¯-©-Ð7¨-Ñ7×7×7×7Ò7Ð&×7×7Ô7Ð&×7×7×7×7×7Ô7¨&×7×7×7Ñ7¨&×7×7Õ7¨-×7×7×7×7×7×7Ô7r   c                 ó
  • U R                  [        S/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o3R                  oˆ" 5       o—U	;   oª(       dä  [        R                  " SU
4SXy45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=n
=n=p‰g	)zTest CLI version output.z	--versionr   r   r   r   r   r   r   NÚversionr   ©z`%(py1)s in %(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.output
}.lower
}()
}©r   r    r   r   Úpy9úassert %(py11)sÚpy11©r"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   Úlower©r   r   r.   r/   r0   r1   r2   r3   Ú@py_assert6Ú@py_assert8r4   Ú@py_format10Ú@py_format12s                r   Útest_cli_versionrD      s"  € à�]‰]œ3  Ó.€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ-Ÿ™Ð-×+Ñ+Ð-Ð+Ó-Ð-Ð-Ñ-×-×-×-Ò-ˆ9×-×-Ô-ˆ9×-×-×-×-×-Ô-˜×-×-×-Ñ-˜×-×-Õ-˜×-×-Ó-Ð+×-×-Ó-Ð-×-×-×-×-×-×-×-Ð-r   c                 óæ  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒg
)zTest analyze command help.Úanalyzer   r   r   r   r   r   r   r   NÚPDFr   r   r   z--outputú
--providerr!   r-   s	            r   Útest_analyze_helprI   "   sÑ  € à�]‰]œ3 ¨HÐ 5Ó6€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ!—M‘MÐ!�MÑ!×!×!×!Ò!ˆ5×!×!Ô!ˆ5×!×!×!×!×!Ô!�F×!×!×!Ñ!�F×!×!Õ!�M×!×!×!×!×!×!Ó!ØÐ&Ÿ™Ð&˜Ñ&×&×&×&Ò&ˆ:×&×&Ô&ˆ:×&×&×&×&×&Ô&˜×&×&×&Ñ&˜×&×&Õ&˜×&×&×&×&×&×&Ó&ØÐ(Ÿ=™=Ð(˜=Ñ(×(×(×(Ò(ˆ<×(×(Ô(ˆ<×(×(×(×(×(Ô(˜6×(×(×(Ñ(˜6×(×(Õ(˜=×(×(×(×(×(×(Ô(r   c                 óæ  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒg
)zTest batch command help.Úbatchr   r   r   r   r   r   r   r   NÚ	directoryr   r   r   z--output-dirz	--patternr!   r-   s	            r   Útest_batch_helprM   ,   sÑ  € à�]‰]œ3 ¨(Ð 3Ó4€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ'Ÿ-™-Ð'˜-Ñ'×'×'×'Ò'ˆ;×'×'Ô'ˆ;×'×'×'×'×'Ô'˜&×'×'×'Ñ'˜&×'×'Õ'˜-×'×'×'×'×'×'Ó'ØÐ*Ÿ]™]Ð*˜]Ñ*×*×*×*Ò*ˆ>×*×*Ô*ˆ>×*×*×*×*×*Ô*˜V×*×*×*Ñ*˜V×*×*Õ*˜]×*×*×*×*×*×*Ó*ØÐ'Ÿ-™-Ð'˜-Ñ'×'×'×'Ò'ˆ;×'×'Ô'ˆ;×'×'×'×'×'Ô'˜&×'×'×'Ñ'˜&×'×'Õ'˜-×'×'×'×'×'×'Ô'r   c                 ó¸  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o3R                  oˆ" 5       o—U	;   oª(       dä  [        R                  " SU
4SXy45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      [        R                  " U	5      S.-  nSSU0-  n[        [        R                  " U5      5      eS
=n=n
=n=p‰SoqR                  o7U;   oª(       dº  [        R                  " SU
4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=p£g
)zTest models command help.Úmodelsr   r   r   r   r   r   r   r   Nzavailable modelsr   r8   r9   r;   r<   rH   r   r   r=   r?   s                r   Útest_models_helprP   6   s‘  € à�]‰]œ3 ¨8Ð 4Ó5€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ6§¡Ð6×!4Ñ!4Ð6Ð!4Ó!6Ð6Ð!6Ñ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×6×6Ó6Ð!6×6×6×6×6×6×6×6ØÐ(Ÿ=™=Ð(˜=Ñ(×(×(×(Ò(ˆ<×(×(Ô(ˆ<×(×(×(×(×(Ô(˜6×(×(×(Ñ(˜6×(×(Õ(˜=×(×(×(×(×(×(Ô(r   c                 óD  • [        S5       n[        5       nS/UR                  l        SSS/0UR                  l        X!l        U R                  [        S/5      nUR                  nSoTU:H  of(       dº  [        R                  " SU4SXE45      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS=n=peSo“R                   oYU;   oª(       dº  [        R                  " SU
4SX•45      [        R                  " U	5      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS=n	=p¥SSS5        g! , (       d  f       g= f)z+Test models command displays provider list.ú!quber.agents.factory.AgentFactoryÚ	anthropicúclaude-3-5-sonnet-latestzclaude-3-5-haiku-latestrO   r   r   r   r   r   r   r   NúModel Providersr   r   r   ©r   r   Úget_available_providersÚreturn_valueÚlist_available_modelsr"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   ©r   Úmock_factory_classÚmock_factoryr   r.   r/   r0   r1   r2   r3   r4   s              r   Útest_models_command_basicr]   ?   sI  € ä	Ð2Ô	3Ð7IÜ “{ˆØ=H¸Mˆ×,Ñ,Ô9àÐ4Ð6OÐPð;
ˆ×*Ñ*Ô7ð +7Ô'à—‘œs X JÓ/ˆà×ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆv×$×$×$Ñ$ˆv×$×$Õ$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$Ø Ð1§M¡MÐ1 MÑ1×1×1×1Ò1Ð ×1×1Ô1Ð ×1×1×1×1×1Ô1 F×1×1×1Ñ1 F×1×1Õ1 M×1×1×1×1×1×1Ó1÷ 
4×	3Ö	3úó   ŒG<HÈ
Hc                 óD  • [        S5       n[        5       nS/UR                  l        SS/0UR                  l        X!l        U R                  [        / SQ5      nUR                  nSoTU:H  of(       dº  [        R                  " SU4SXE45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n[        [        R                  " U5      5      eS=n=peSo“R                   oYU;   oª(       dº  [        R                  " SU
4SX•45      [        R                  " U	5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nS
SU0-  n[        [        R                  " U5      5      eS=n	=p¥SSS5        g! , (       d  f       g= f)z+Test models command with specific provider.rR   rS   rT   )rO   rH   rS   r   r   r   r   r   r   r   NÚ	ANTHROPICr   r   r   rV   rZ   s              r   Ú%test_models_command_specific_providerra   O   s?  € ä	Ð2Ô	3Ð7IÜ “{ˆØ=H¸Mˆ×,Ñ,Ô9Ø;FÐIcÐHdÐ:eˆ×*Ñ*Ô7Ø*6Ô'à—‘œsÒ$IÓJˆà×ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆv×$×$×$Ñ$ˆv×$×$Õ$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$ØÐ+Ÿm™mÐ+˜mÑ+×+×+×+Ò+ˆ{×+×+Ô+ˆ{×+×+×+×+×+Ô+˜f×+×+×+Ñ+˜f×+×+Õ+˜m×+×+×+×+×+×+Ó+÷ 
4×	3Ö	3úr^   c                 óø  • U R                  [        S/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒ/ nSo�R                  o˜U	;   o3os(       d*  So¡R                  oºU;   oÌo|(       d  SoÑR                  oíU;   oÿnU(       GdU  [        R                  " SU4SX‰45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U	5      S.-  nSSU0-  nUR                  U5        U(       Gda  [        R                  " SW4SW
W45      [        R                  " U
5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  nUR                  U5        U(       d­  [        R                  " SW4SWW45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  nUR                  U5        [        R                  " US5      0 -  nSSU0-  n[        [        R                  " U5      5      eS	=n=n=n=n=n	=n
=n=n=n=pþg	) z*Test models command shows model providers.rO   r   r   r   r   r   r   r   NrU   r   r   r   r`   ÚOPENAIÚOLLAMA)z.%(py3)s in %(py7)s
{%(py7)s = %(py5)s.output
})r    r   r   z%(py9)sr:   )z2%(py12)s in %(py16)s
{%(py16)s = %(py14)s.output
})Úpy12Úpy14Úpy16z%(py18)sÚpy18)z2%(py21)s in %(py25)s
{%(py25)s = %(py23)s.output
})Úpy21Úpy23Úpy25z%(py27)sÚpy27é   zassert %(py30)sÚpy30)r"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   ÚappendÚ_format_boolop)r   r   r.   r/   r0   r1   r2   r3   r4   r@   Ú@py_assert11Ú@py_assert15Ú@py_assert13Ú@py_assert20Ú@py_assert24Ú@py_assert22rB   Ú@py_format17Ú@py_format19Ú@py_format26Ú@py_format28Ú@py_format29Ú@py_format31s                          r   Útest_models_command_no_api_keysr}   ]   sT  € à�]‰]œ3  
Ó+€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ-§¡Ð- Ñ-×-×-×-Ò-Ð×-×-Ô-Ð×-×-×-×-×-Ô- ×-×-×-Ñ- ×-×-Õ- ×-×-×-×-×-×-Ó-áaˆ;ÐaŸ-™-Ða˜-Ñ'×a¨8Ða·}±}Ða°}Ñ+D×aÈÐa×TaÑTaÐaÐTaÑHa×a×a×aÕaˆ;×a×aÔaˆ;×a×a×a×a×aÔa˜&×a×a×aÑa˜&×a×aÕa˜-×a×a×a×a×a×a×aÔa¨8°}×a×aÔa¨8×a×a×a×a×aÔa°v×a×a×aÑa°v×a×aÕa°}×a×a×a×a×a×a×aÓaÈÐTa×a×aÔaÈ×a×a×a×a×aÔaÐTZ×a×a×aÑaÐTZ×a×aÕaÐTa×a×a×a×a×a×a×a×a×a×a×a×a×a×aÖar   c                 óŽ  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒg
)z6Test models command with --all flag runs successfully.rO   z--allr   r   r   r   r   r   r   NrU   r   r   r   r!   r-   s	            r   Ú!test_models_command_with_all_flagr   g   sù   € à�]‰]œ3 ¨7Ð 3Ó4€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ-§¡Ð- Ñ-×-×-×-Ò-Ð×-×-Ô-Ð×-×-×-×-×-Ô- ×-×-×-Ñ- ×-×-Õ- ×-×-×-×-×-×-Ô-r   c                 óŒ  • U R                  [        S/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒg	)z2Test models command may truncate long model lists.rO   r   r   r   r   r   r   r   NrU   r   r   r   r!   r-   s	            r   Ú'test_models_command_truncates_long_listr�   o   sö   € à�]‰]œ3  
Ó+€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó àÐ-§¡Ð- Ñ-×-×-×-Ò-Ð×-×-Ô-Ð×-×-×-×-×-Ô- ×-×-×-Ñ- ×-×-Õ- ×-×-×-×-×-×-Ô-r   c                 óŒ  • U R                  [        S/5      nUR                  nSo2U:g  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒg	)z&Test analyze command without PDF path.rF   r   ©ú!=©z1%(py2)s
{%(py2)s = %(py0)s.exit_code
} != %(py5)sr   r   r   r   NúMissing argumentr   r   r   r!   r-   s	            r   Útest_analyze_missing_pdf_pathr‡   x   sö   € à�]‰]œ3  Ó,€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ.§¡Ð. Ñ.×.×.×.Ò.Ð×.×.Ô.Ð×.×.×.×.×.Ô. ×.×.×.Ñ. ×.×.Õ. ×.×.×.×.×.×.Ô.r   c                 óŒ  • U R                  [        S/5      nUR                  nSo2U:g  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒg	)z%Test batch command without directory.rK   r   rƒ   r…   r   r   r   r   Nr†   r   r   r   r!   r-   s	            r   Útest_batch_missing_directoryr‰   €   sö   € à�]‰]œ3  	Ó*€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ.§¡Ð. Ñ.×.×.×.Ò.Ð×.×.Ô.Ð×.×.×.×.×.Ô. ×.×.×.Ñ. ×.×.Õ. ×.×.×.×.×.×.Ô.r   c                 ó¦  • U R                  5          [        SS5       nUR                  S5        SSS5        U R                  [        / SQ5      nUR
                  nSoCU:g  oU(       dº  [        R                  " SU4SX445      S	[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS	[        R                  " U5      [        R                  " U5      S
.-  nSSU0-  n[        [        R                  " U5      5      eS=n=pTSSS5        g! , (       d  f       GN= f! , (       d  f       g= f)z+Test analyze command with invalid provider.útest.pdfÚwÚdummyN)rF   r‹   rH   Úinvalidr   rƒ   r…   r   r   r   r   )Úisolated_filesystemÚopenÚwriter"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   )r   Úfr   r.   r/   r0   r1   r2   s           r   Útest_analyze_invalid_providerr“   ˆ   sÉ   € à	×	#Ñ	#Õ	%Ü�*˜cÔ" aØ�G‰G�GÔ÷ #ð —‘œsÒ$TÓUˆà×ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆv×$×$×$Ñ$ˆv×$×$Õ$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$÷ 
&Ð	%ß"Ö"ú÷ 
&Õ	%ús"   ‘EžD0°C7EÄ0
D?	Ä:EÅ
Ec                 óâ  • U R                  [        SS/5      nUR                  nSo2U:g  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCg
)z/Test batch command with non-existent directory.rK   z/nonexistent/directoryr   rƒ   r…   r   r   r   r   N)r"   r   r#   r$   r%   r&   r'   r(   r)   r*   r+   )r   r   r.   r/   r0   r1   r2   s          r   Ú test_batch_nonexistent_directoryr•   “   s‹   € à�]‰]œ3 Ð*BÐ CÓD€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ô r   c                 óä  • U R                  [        S/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pCS
oqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS	=n=pƒg	)z$Test that CLI has expected commands.r   r   r   r   r   r   r   r   NrF   r   r   r   rK   rO   r!   r-   s	            r   Útest_cli_has_three_commandsr—   š   sÎ  € à�]‰]œ3  
Ó+€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ%Ÿ™Ð%˜Ñ%×%×%×%Ò%ˆ9×%×%Ô%ˆ9×%×%×%×%×%Ô%˜×%×%×%Ñ%˜×%×%Õ%˜×%×%×%×%×%×%Ó%ØÐ#—m‘mÐ#�mÑ#×#×#×#Ò#ˆ7×#×#Ô#ˆ7×#×#×#×#×#Ô#�f×#×#×#Ñ#�f×#×#Õ#�m×#×#×#×#×#×#Ó#ØÐ$—}‘}Ð$�}Ñ$×$×$×$Ò$ˆ8×$×$Ô$ˆ8×$×$×$×$×$Ô$�v×$×$×$Ñ$�v×$×$Õ$�}×$×$×$×$×$×$Ô$r   c                 óæ  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒg
)z1Test analyze command has correct default options.rF   r   r   r   r   r   r   r   r   Nztable_analysis.jsonr   r   r   ztable_analysis_summary.mdz
default: 5r!   r-   s	            r   Útest_analyze_default_optionsr™   ¤   sÕ  € à�]‰]œ3 ¨HÐ 5Ó6€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó Ø Ð1§M¡MÐ1 MÑ1×1×1×1Ò1Ð ×1×1Ô1Ð ×1×1×1×1×1Ô1 F×1×1×1Ñ1 F×1×1Õ1 M×1×1×1×1×1×1Ó1Ø&Ð7¯-©-Ð7¨-Ñ7×7×7×7Ò7Ð&×7×7Ô7Ð&×7×7×7×7×7Ô7¨&×7×7×7Ñ7¨&×7×7Õ7¨-×7×7×7×7×7×7Ó7ØÐ(Ÿ=™=Ð(˜=Ñ(×(×(×(Ò(ˆ<×(×(Ô(ˆ<×(×(×(×(×(Ô(˜6×(×(×(Ñ(˜6×(×(Õ(˜=×(×(×(×(×(×(Ô(r   c                 ó:  • U R                  [        SS/5      nUR                  nSo2U:H  oD(       dº  [        R                  " SU4SX#45      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pCSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒSoqR                  o7U;   oˆ(       dº  [        R                  " SU4SXs45      [        R                  " U5      S[
        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nSS	U0-  n[        [        R                  " U5      5      eS
=n=pƒg
)z/Test batch command has correct default options.rK   r   r   r   r   r   r   r   r   NÚbatch_outputr   r   r   z*.pdfr!   r-   s	            r   Útest_batch_default_optionsrœ   ®   sd  € à�]‰]œ3 ¨(Ð 3Ó4€Fà×ÑÐ ˜qÐ ˜qÑ × × × Ò Ð× × × × × Õ ˆ6× × × Ñ ˆ6× × Õ Ð× × Ó ˜q× × × × × × Ó ØÐ*Ÿ]™]Ð*˜]Ñ*×*×*×*Ò*ˆ>×*×*Ô*ˆ>×*×*×*×*×*Ô*˜V×*×*×*Ñ*˜V×*×*Õ*˜]×*×*×*×*×*×*Ó*ØÐ#—m‘mÐ#�mÑ#×#×#×#Ò#ˆ7×#×#Ô#ˆ7×#×#×#×#×#Ô#�f×#×#×#Ñ#�f×#×#Õ#�m×#×#×#×#×#×#Ô#r   c                 óF  • [        S5       n[        5       nS/UR                  l        SnSU/0UR                  l        X!l        U R                  [        S/5      nUR                  nSoeU:H  ow(       dº  [        R                  " SU4SXV45      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      [        R                  " U5      S	.-  nS
SU0-  n	[        [        R                  " U	5      5      eS=n=pvSo¤R                   ojU;   o»(       dº  [        R                  " SU4SX¦45      [        R                  " U
5      S[        R                  " 5       ;   d  [        R                  " U5      (       a  [        R                  " U5      OS[        R                  " U5      S.-  nS
SU0-  n	[        [        R                  " U	5      5      eS=n
=p¶SSS5        g! , (       d  f       g= f)z4Test models command truncates very long model names.rR   rS   ÚAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaarO   r   r   r   r   r   r   r   Nz...r   r   r   rV   )r   r[   r\   Ú
long_modelr   r.   r/   r0   r1   r2   r3   r4   s               r   Ú&test_models_truncates_long_model_namesr    ·   sC  € ä	Ð2Ô	3Ð7IÜ “{ˆØ=H¸Mˆ×,Ñ,Ô9àˆ
Ø;FÈÈÐ:Uˆ×*Ñ*Ô7Ø*6Ô'à—‘œs X JÓ/ˆà×ÑÐ$ 1Ð$ 1Ñ$×$×$×$Ò$Ð×$×$×$×$×$Õ$ˆv×$×$×$Ñ$ˆv×$×$Õ$Ð×$×$Ó$ 1×$×$×$×$×$×$Ó$ØÐ%Ÿ™Ð%˜Ñ%×%×%×%Ò%ˆu×%×%Ô%ˆu×%×%×%×%×%Ô%˜×%×%×%Ñ%˜×%×%Õ%˜×%×%×%×%×%×%Ó%÷ 
4×	3Ö	3ús   ŒG=HÈ
H )#Ú__doc__Úbuiltinsr&   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter$   Úunittest.mockr   r   ÚpytestÚclick.testingr   Ú	quber.clir   Úfixturer   r5   rD   rI   rM   rP   r]   ra   r}   r   r�   r‡   r‰   r“   r•   r—   r™   rœ   r    r
   r   r   Ú<module>r«      s  ðÙ 3ç  „ × *ã Ý #å ð ‡�ð�	ó ó ðð
8˜)ô 8ð.˜Yô .ð)˜iô )ð(˜Iô (ð)˜Yô )ð2 iô 2ð ,°)ô ,ðb¨Iô bð.¨iô .ð.°Iô .ð/¨)ô /ð/¨ô /ð%¨)ô %ð!¨Yô !ð%¨	ô %ð)¨ô )ð$ yô $ð&°9õ &r   