§
     ’j”  ã                  ó†   — d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
Z
ddlmZmZmZ ddlmZ  G d„ de
j        ¦  «        ZdS )z<Unit tests for LMStudioManager lifecycle and health checker.é    )ÚannotationsN)Ú	AsyncMockÚ	MagicMockÚpatch)ÚLMStudioManagerc                  ó„   — e Zd Z ed¦  «        dd„¦   «         Z ed¦  «         ed¦  «        dd„¦   «         ¦   «         ZdS )ÚTestLMStudioManagerzhttpx.AsyncClient.getÚmock_getr   ÚreturnÚNonec                ó  ‡ ‡— t          ¦   «         Št          ¦   «         }d|_        ||_        ˆˆ fd„}t	          j         |¦   «         ¦  «         t          d¦  «        |_        ˆˆ fd„}t	          j         |¦   «         ¦  «         d S )NéÈ   c               “  ój   •K  — ‰                      ¦   «         ƒ d {V —†} ‰                     | ¦  «         d S ©N)Úis_server_runningÚ
assertTrue©ÚresÚmanagerÚselfs    €€ú1C:\Projects\DSCons\tests\test_lmstudio_manager.pyÚrun_successz?TestLMStudioManager.test_is_server_running.<locals>.run_success   sB   øè è € Ø×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆCØ�OŠO˜CÑ Ô Ð Ð Ð ó    zConnection refusedc               “  ój   •K  — ‰                      ¦   «         ƒ d {V —†} ‰                     | ¦  «         d S r   )r   ÚassertFalser   s    €€r   Úrun_failurez?TestLMStudioManager.test_is_server_running.<locals>.run_failure   sD   øè è € Ø×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3ˆCØ×Ò˜SÑ!Ô!Ð!Ð!Ð!r   )r   r   Ústatus_codeÚreturn_valueÚasyncioÚrunÚ	ExceptionÚside_effect)r   r
   Úmock_responser   r   r   s   `    @r   Útest_is_server_runningz*TestLMStudioManager.test_is_server_running   s¯   øø€ å!Ñ#Ô#ˆõ "™œˆØ$'ˆÔ!Ø -ˆÔð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ 	Œ�K�K‘M”MÑ"Ô"Ð"õ  )Ð)=Ñ>Ô>ˆÔð	"ð 	"ð 	"ð 	"ð 	"ð 	"õ 	Œ�K�K‘M”MÑ"Ô"Ð"Ð"Ð"r   zshutil.whichzasyncio.create_subprocess_execÚmock_create_subÚ
mock_whichc                ó  ‡ ‡— t          ¦   «         Šd |_        ˆˆ fd„}t          j         |¦   «         ¦  «         d|_        t	          ¦   «         }d|j        _        d|_        ||_        ˆˆ fd„}t          j         |¦   «         ¦  «         d S )Nc               “  ój   •K  — ‰                      ¦   «         ƒ d {V —†} ‰                     | ¦  «         d S r   )Ústart_serverr   r   s    €€r   Ú
run_no_cliz9TestLMStudioManager.test_start_server.<locals>.run_no_cli/   sD   øè è € Ø×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆCØ×Ò˜SÑ!Ô!Ð!Ð!Ð!r   z/usr/bin/lms)s   startedr   r   c               “  ój   •K  — ‰                      ¦   «         ƒ d {V —†} ‰                     | ¦  «         d S r   )r)   r   r   s    €€r   Úrun_success_startz@TestLMStudioManager.test_start_server.<locals>.run_success_start<   sB   øè è € Ø×,Ò,Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.ˆCØ�OŠO˜CÑ Ô Ð Ð Ð r   )r   r   r   r    r   ÚcommunicateÚ
returncode)r   r%   r&   r*   Úmock_processr,   r   s   `     @r   Útest_start_serverz%TestLMStudioManager.test_start_server%   s¿   øø€ õ
 "Ñ#Ô#ˆð #'ˆ
Ôð	"ð 	"ð 	"ð 	"ð 	"ð 	"õ 	Œ�J�J‘L”LÑ!Ô!Ð!ð #1ˆ
ÔÝ ‘{”{ˆØ0AˆÔ Ô-Ø"#ˆÔØ'3ˆÔ$ð	!ð 	!ð 	!ð 	!ð 	!ð 	!õ 	ŒÐ%Ð%Ñ'Ô'Ñ(Ô(Ð(Ð(Ð(r   N)r
   r   r   r   )r%   r   r&   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r   r$   r0   © r   r   r	   r	      s   € € € € € Ø
€UÐ"Ñ#Ô#ð#ð #ð #ñ $Ô#ð#ð. €Uˆ>ÑÔØ
€UÐ+Ñ,Ô,ð)ð )ð )ñ -Ô,ñ Ôð)ð )ð )r   r	   )Ú__doc__Ú
__future__r   ÚbuiltinsÚ@py_builtinsÚ_pytest.assertion.rewriteÚ	assertionÚrewriteÚ
@pytest_arr   ÚunittestÚunittest.mockr   r   r   Ú-app.modules.core.application.lmstudio_managerr   ÚTestCaser	   r4   r   r   ú<module>rA      s°   ðØ BÐ Bà "Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € €€€€Ø €€€Ø 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5Ð 5à IÐ IÐ IÐ IÐ IÐ Ið4)ð 4)ð 4)ð 4)ð 4)˜(Ô+ñ 4)ô 4)ð 4)ð 4)ð 4)r   