Ë
    Bü´j	  ã                   ó®   — d dl Z d dlZd dlZd dlmZmZ d dlmZ d dlm	Z	 d dl
mZmZ 	  G d„ dej                  «      Zedk(  r ej                   «        yy)	é    N)ÚMockÚpatch)Úrecv)ÚSSLWantReadError)ÚWebSocketTimeoutExceptionÚ"WebSocketConnectionClosedExceptionc                   ó.   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zd„ Zy)ÚSocketBugsTestz(Test bugs found in socket handling logicc                 ó¦  — t        «       }t        «       |j                  _        d|j                  _        t        d«      5 }t        «       }||_        g |j                  _        | j                  t        «      5 }t        |d«       ddd«       | j                  dt        j                  «      «       ddd«       y# 1 sw Y   Œ7xY w# 1 sw Y   yxY w)a  
        BUG #5 FIX VERIFICATION: Test SSLWantReadError timeout now raises correct exception

        Bug was in _socket.py:100-101 - SSLWantReadError except block returned None implicitly
        Fixed: Now properly handles timeout with WebSocketTimeoutException
        ç      ð?úselectors.DefaultSelectoréd   Nú%Connection timed out waiting for data©r   r   r   Úside_effectÚ
gettimeoutÚreturn_valuer   ÚselectÚassertRaisesr   ÚassertInÚstrÚ	exception©ÚselfÚ	mock_sockÚmock_selector_classÚmock_selectorÚcms        ú^/root/workspace/ytshorts/venv/lib/python3.12/site-packages/websocket/tests/test_socket_bugs.pyÚ6test_bug_implicit_none_return_from_ssl_want_read_fixedzESocketBugsTest.test_bug_implicit_none_return_from_ssl_want_read_fixed%   ó»   € ô “Fˆ	Ü%5Ó%7ˆ	�‰Ô"Ø,/ˆ	×ÑÔ)äÐ.Ó/ð 		VÐ3FÜ ›FˆMØ/<ÐÔ,Ø02ˆM× Ñ Ô-à×"Ñ"Ô#<Ó=ð %ÀÜ�Y Ô$÷%ð �M‰MÐAÄ3ÀrÇ|Á|ÓCTÔU÷		Vð 		V÷
%ð %ú÷		Vð 		Vúó$   Á 8CÁ8B;Â-CÂ;C	Ã CÃCc                 óÊ  — t        «       }t        t        j                  d«      }||j                  _        d|j                  _        t        d«      5 }t        «       }||_        g |j                  _        | j                  t        «      5 }t	        |d«       ddd«       | j                  dt        j                  «      «       ddd«       y# 1 sw Y   Œ7xY w# 1 sw Y   yxY w)a  
        BUG #5 FIX VERIFICATION: Test that socket.error with EAGAIN now handles timeout correctly

        Bug was in _socket.py:102-105 - socket.error except block returned None implicitly
        Fixed: Now properly handles timeout with WebSocketTimeoutException
        z Resource temporarily unavailabler   r   r   Nr   )r   ÚOSErrorÚerrnoÚEAGAINr   r   r   r   r   r   r   r   r   r   r   )r   r   Úeagain_errorr   r   r   s         r   Ú5test_bug_implicit_none_return_from_socket_error_fixedzDSocketBugsTest.test_bug_implicit_none_return_from_socket_error_fixed;   sÍ   € ô “Fˆ	ô œuŸ|™|Ð-OÓPˆð &2ˆ	�‰Ô"Ø,/ˆ	×ÑÔ)äÐ.Ó/ð 		VÐ3FÜ ›FˆMØ/<ÐÔ,Ø02ˆM× Ñ Ô-à×"Ñ"Ô#<Ó=ð %ÀÜ�Y Ô$÷%ð �M‰MÐAÄ3ÀrÇ|Á|ÓCTÔU÷		Vð 		V÷
%ð %ú÷		Vð 		Vús$   Á8CÂ
CÂ-CÃC	ÃCÃC"c                 ó¦  — t        «       }t        «       |j                  _        d|j                  _        t        d«      5 }t        «       }||_        g |j                  _        | j                  t        «      5 }t        |d«       ddd«       | j                  dt        j                  «      «       ddd«       y# 1 sw Y   Œ7xY w# 1 sw Y   yxY w)zÿ
        BUG #6 FIX VERIFICATION: Test that selector timeout now raises correct exception type

        Bug was in _socket.py:115 returning None for timeout, treated as connection error
        Fixed: Now raises WebSocketTimeoutException directly
        r   r   r   Nr   r   r   s        r   Ú3test_bug_wrong_exception_for_selector_timeout_fixedzBSocketBugsTest.test_bug_wrong_exception_for_selector_timeout_fixedV   r!   r"   c                 óª  — t        «       }d|j                  _        t        j                  d«      |j
                  _        | j                  t        «      5 }t        |d«       ddd«       ddl	}|j                  dk\  r&| j                  dt        j                  «      «       y| j                  dt        j                  «      «       y# 1 sw Y   ŒhxY w)zJ
        Test that socket.timeout exceptions are properly handled
        r   zOperation timed outr   Nr   )é   é
   zConnection timed out)r   r   r   ÚsocketÚtimeoutr   r   r   r   ÚsysÚversion_infor   r   r   )r   r   r   r0   s       r   Ú&test_socket_timeout_exception_handlingz5SocketBugsTest.test_socket_timeout_exception_handlingq   s¦   € ô “Fˆ	Ø,/ˆ	×ÑÔ)ô &,§^¡^Ð4IÓ%Jˆ	�‰Ô"ð ×ÑÔ8Ó9ð 	!¸RÜ�˜CÔ ÷	!ó 	à×Ñ˜wÒ&Ø�M‰MÐ0´#°b·l±lÓ2CÕDà�M‰MÐ/´°R·\±\Ó1BÕC÷	!ð 	!ús   ÁC	Ã	Cc                 óš  — t        «       }t        «       dg|j                  _        d|j                  _        t        d«      5 }t        «       }||_        dg|j                  _        t        |d«      }| j                  |d«       |j                  j                  «        |j                  j                  «        ddd«       y# 1 sw Y   yxY w)zCTest the correct behavior when SSLWantReadError is properly handleds   data after retryr   r   Tr   N)r   r   r   r   r   r   r   r   ÚassertEqualÚregisterÚassert_called)r   r   r   r   Úresults        r   Ú)test_correct_ssl_want_read_retry_behaviorz8SocketBugsTest.test_correct_ssl_want_read_retry_behaviorŠ   s´   € ä“Fˆ	ô '7Ó&8Ð:MÐ%Nˆ	�‰Ô"Ø,/ˆ	×ÑÔ)äÐ.Ó/ð 	1Ð3FÜ ›FˆMØ/<ÐÔ,Ø15°ˆM× Ñ Ô-ô ˜) SÓ)ˆFØ×Ñ˜VÐ%8Ô9ð ×"Ñ"×0Ñ0Ô2Ø× Ñ ×.Ñ.Ô0÷	1÷ 	1ñ 	1ús   ÁA6CÃC
N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r    r(   r*   r2   r8   © ó    r   r
   r
   "   s"   „ Ù2òVò,Vò6Vò6Dó21r>   r
   Ú__main__)r%   r.   ÚunittestÚunittest.mockr   r   Úwebsocket._socketr   Úwebsocket._ssl_compatr   Úwebsocket._exceptionsr   r   ÚTestCaser
   r9   Úmainr=   r>   r   ú<module>rG      sP   ðã Û Û ß %å "Ý 2÷ð
ô({1�X×&Ñ&ô {1ð| ˆzÒØ€H‡M�M…Oð r>   