Ë
    TÝj»  ã                   óÂ   — d Z ddlZddlZddlZddlmZ ddlmZ ddlm	Z	 ddl
mZ ddlmZmZmZ d„ Z G d	„ d
ej"                  «      Zedk(  r ej(                  «        yy)zëEhemals parse_codex_jsonl + CodexProcessAdapter (zweiter Parser, beliebige argv,
geerbte Umgebung). Neuer Vertrag: ein Parser (hardened_codex.decode_events),
CodexAdapter mit echtem SubprocessRunner und Clearance (docs/AENDERUNGEN.md).é    N)ÚPath)ÚResultStatus)ÚCodexAdapter)Údecode_events)ÚGuardedSubprocessRunnerÚAdapterHarnessÚfake_codex_templatec                  óT   — dj                  d„ | D «       «      dz   j                  «       S )Nú
c              3   óF   K  — | ]  }t        j                  |«      –— Œ y ­w©N)ÚjsonÚdumps)Ú.0Úxs     ú9/home/aria/aria-v3-dev/python/tests/test_codex_adapter.pyú	<genexpr>zevents.<locals>.<genexpr>   s   è ø€ Ò3¨”d—j‘j —mÑ3ùs   ‚!)ÚjoinÚencode)Úitemss    r   Úeventsr      s%   € Ø�I‰IÑ3¨UÔ3Ó3°dÑ:×BÑBÓDÐDó    c                   óJ   — e Zd Zd„ Zd„ Zdd„Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zy)ÚCodexAdapterTestsc                 óà   — t        j                  «       | _        t        | j                  j                  «      }|dz  j                  «        t        |«      | _        t        |dz  «      | _	        y )NÚwork)
ÚtempfileÚTemporaryDirectoryÚ_tmpr   ÚnameÚmkdirr   Úharnessr   Úrunner)ÚselfÚroots     r   ÚsetUpzCodexAdapterTests.setUp   sP   € Ü×/Ñ/Ó1ˆŒ	Ü�D—I‘I—N‘NÓ#ˆØ	�‰×ÑÔÜ% dÓ+ˆŒÜ-¨d°V©mÓ<ˆ�r   c                 ó8   — | j                   j                  «        y r   )r   Úcleanup©r$   s    r   ÚtearDownzCodexAdapterTests.tearDown   s   € Ø�	‰	×ÑÕr   c                 ó  — t        | j                  j                  | j                  t	        |g|¢­Ž dddœ¬«      }| j                  j                  d|¬«      }|j                  | j                  j                  ||«      |«      S )Nz/usr/bin:/binzC.UTF-8)ÚPATHÚLANG)r#   Úcommand_templateÚenvz#public test)Útimeout)r   r"   Úverifierr#   r	   ÚjobÚexecuteÚclear)r$   Úmoder0   ÚextraÚadapterr2   s         r   Úrun_modezCodexAdapterTests.run_mode    sq   € Ü˜tŸ|™|×4Ñ4¸T¿[¹[Ü0CÀDÐ0QÈ5Ò0QØ,;ÀYÑ#OôQˆð �l‰l×Ñ˜~°wÐÓ?ˆØ�‰˜tŸ|™|×1Ñ1°'¸3Ó?ÀÓEÐEr   c           	      ó²   — t        t        ddiddddœdœddi«      «      }| j                  |j                  «       | j	                  |j
                  d«       y )	NÚtypeúturn.startedzitem.completedÚagent_messageÚCODEX_OK)r:   Útext)r:   Úitemúturn.completed)r   r   Ú
assertTrueÚsuccessÚassertEqualÚoutput©r$   Úoutcomes     r   Útest_successful_jsonlz'CodexAdapterTests.test_successful_jsonl'   sX   € Ü¤Ø�^Ð$Ø%¸ÐQ[Ñ/\Ñ]ØÐ%Ð&ó!
ó ˆð
 	�‰˜Ÿ™Ô(Ø×Ñ˜Ÿ™¨Õ4r   c                 óN   — | j                  t        d«      j                  d«       y )Ns   invalid jsonÚINVALID_JSONL)rC   r   Ú
error_coder)   s    r   Útest_invalid_jsonlz$CodexAdapterTests.test_invalid_jsonl0   s   € Ø×Ñœ Ó7×BÑBÀOÕTr   c                 óž   — t        t        ddi«      «      }| j                  |j                  «       | j	                  |j
                  d«       y )Nr:   r;   ÚINCOMPLETE_TURN©r   r   ÚassertFalserB   rC   rJ   rE   s     r   Útest_incomplete_turnz&CodexAdapterTests.test_incomplete_turn3   s?   € Ü¤¨°Ð'?Ó @ÓAˆØ×Ñ˜Ÿ™Ô)Ø×Ñ˜×+Ñ+Ð->Õ?r   c                 ó¤   — t        t        ddiddi«      «      }| j                  |j                  «       | j	                  |j
                  d«       y )Nr:   zturn.failedr@   ÚMODEL_FAILEDrN   rE   s     r   Útest_failed_turnz"CodexAdapterTests.test_failed_turn8   sF   € Ü¤¨°Ð'>ÀÐIYÐ@ZÓ [Ó\ˆØ×Ñ˜Ÿ™Ô)Ø×Ñ˜×+Ñ+¨^Õ<r   c                 ó²   — | j                  d«      }| j                  |j                  t        j                  «       | j                  |j
                  d«       y )NrB   ÚMOCK_OK)r8   rC   Ústatusr   ÚSUCCESSrD   ©r$   Úresults     r   Útest_process_successz&CodexAdapterTests.test_process_success=   s>   € Ø—‘˜yÓ)ˆØ×Ñ˜Ÿ™¬×(<Ñ(<Ô=Ø×Ñ˜Ÿ™¨	Õ2r   c                 ó²   — | j                  d«      }| j                  |j                  t        j                  «       | j                  |j
                  d«       y )NÚexit2ÚNONZERO_EXIT)r8   rC   rV   r   ÚFAILEDrJ   rX   s     r   Útest_process_failurez&CodexAdapterTests.test_process_failureB   s@   € Ø—‘˜wÓ'ˆØ×Ñ˜Ÿ™¬×(;Ñ(;Ô<Ø×Ñ˜×*Ñ*¨NÕ;r   c                 óì   — | j                  ddd«      }| j                  |j                  t        j                  «       | j                  |j
                  d«       | j                  |j                  «       y )NÚsleepé   Ú5ÚTIMEOUT)r8   rC   rV   r   r^   rJ   rA   Ú	timed_outrX   s     r   Útest_timeoutzCodexAdapterTests.test_timeoutG   sV   € Ø—‘˜w¨¨3Ó/ˆØ×Ñ˜Ÿ™¬×(;Ñ(;Ô<Ø×Ñ˜×*Ñ*¨IÔ6Ø�‰˜×(Ñ(Õ)r   N)é   )Ú__name__Ú
__module__Ú__qualname__r&   r*   r8   rG   rK   rP   rS   rZ   r_   rf   © r   r   r   r      s7   „ ò=òóFò5òUò@ò
=ò
3ò
<ó
*r   r   Ú__main__)Ú__doc__r   r   ÚunittestÚpathlibr   Úaria_router.adapter_contractr   Úaria_router.codex_adapterr   Úaria_router.hardened_codexr   Útests.helpersr   r   r	   r   ÚTestCaser   rh   Úmainrk   r   r   ú<module>rv      s[   ðñQó Û Û Ý å 5Ý 2Ý 4ç VÑ VòEô7*˜×)Ñ)ô 7*ðt ˆzÒØ€H‡M�M…Oð r   