Ë
    	Ýj²  ã                   óf  — d Z ddlZddlZddlZddlmZ ddlmZmZm	Z	m
Z
 ddlmZ ddlmZ ddlmZmZ  ee«      j'                  «       j(                  d   d	z  Z G d
„ de«      Z G d„ dej.                  «      Z G d„ de«      Z G d„ dej.                  «      Zedk(  r ej8                  «        yy)uV   Adapter-Basisklasse: keine AusfÃ¼hrung ohne Freigabe; strukturell keine Parallelpfade.é    N)ÚPath)ÚAdapterResultÚBackendAdapterÚOutboundÚResultStatus)ÚMockAdapter)ÚConfigurationError)ÚAdapterHarnessÚGatewayTestCaseé   Úaria_routerc                   ó0   ‡ — e Zd ZdZdˆ fd„	Zd„ Zd„ Zˆ xZS )Ú	RecordingÚcodexc                 ó@   •— t         ‰| �  |«       d| _        || _        y ©Nr   )ÚsuperÚ__init__Ú	transmitsÚresult)ÚselfÚverifierr   Ú	__class__s      €ú8/home/aria/aria-v3-dev/python/tests/test_adapter_base.pyr   zRecording.__init__   s   ø€ Ü‰Ñ˜Ô"ØˆŒØˆ�ó    c                 ób   — t        | j                  d|j                  j                  «       i«      S )NÚcontext)r   ÚnameÚenvelopeÚcanonical_dict©r   Újobs     r   Ú_preparezRecording._prepare   s%   € Ü˜Ÿ	™	 I¨s¯|©|×/JÑ/JÓ/LÐ#MÓNÐNr   c                 óª   — | xj                   dz  c_         | j                  xs1 t        |j                  | j                  t
        j                  d¬«      S )Nr   Úok©Úoutput)r   r   r   Újob_idr   r   ÚSUCCESS©r   Úoutboundr"   Ú	clearances       r   Ú	_transmitzRecording._transmit   s9   € Ø�Š˜!Ñ�Ø�{‰{Òeœm¨C¯J©J¸¿	¹	Ä<×CWÑCWÐ`dÔeÐer   ©N)Ú__name__Ú
__module__Ú__qualname__r   r   r#   r-   Ú__classcell__)r   s   @r   r   r      s   ø„ Ø€Dõò
Oöfr   r   c                   óN   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zd„ Zy)ÚAdapterBaseTestsc                 óÐ   — t        j                  «       | _        t        t	        | j                  j
                  «      «      | _        | j                  j                  d«      | _        y )Nz#public hallo)ÚtempfileÚTemporaryDirectoryÚ_tmpr
   r   r   Úhr"   ©r   s    r   ÚsetUpzAdapterBaseTests.setUp!   s?   € Ü×/Ñ/Ó1ˆŒ	Ü¤ T§Y¡Y§^¡^Ó 4Ó5ˆŒØ—6‘6—:‘:˜oÓ.ˆ�r   c                 ó8   — | j                   j                  «        y r.   )r8   Úcleanupr:   s    r   ÚtearDownzAdapterBaseTests.tearDown&   s   € Ø�	‰	×ÑÕr   c                 óv   — | j                  t        «      5   G d„ dt        «      }d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd ZdZd„ Zy)úFAdapterBaseTests.test_subclass_cannot_override_execute.<locals>.Bypassr   c                  ó   — y)Nu   ausgefÃ¼hrt ohne PrÃ¼fung© )r   r,   r"   s      r   ÚexecutezNAdapterBaseTests.test_subclass_cannot_override_execute.<locals>.Bypass.execute.   s   € Ø6r   N)r/   r0   r1   r   rD   rC   r   r   ÚBypassrA   +   s   „ Ø�ó7r   rE   ©ÚassertRaisesÚ	TypeErrorr   ©r   rE   s     r   Ú%test_subclass_cannot_override_executez6AdapterBaseTests.test_subclass_cannot_override_execute)   s1   € Ø×ÑœyÓ)ñ 	7ô7œô 7÷	7÷ 	7ñ 	7úó   –/¯8c                 óv   — | j                  t        «      5   G d„ dt        «      }d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd ZdZd„ Zy)úNAdapterBaseTests.test_subclass_cannot_override_outbound_digest.<locals>.Bypassr   c                  ó   — y)NÚ@0000000000000000000000000000000000000000000000000000000000000000rC   r!   s     r   Úoutbound_digestz^AdapterBaseTests.test_subclass_cannot_override_outbound_digest.<locals>.Bypass.outbound_digest6   s   € Ø#r   N)r/   r0   r1   r   rQ   rC   r   r   rE   rN   3   s   „ Ø�ó$r   rE   rF   rI   s     r   Ú-test_subclass_cannot_override_outbound_digestz>AdapterBaseTests.test_subclass_cannot_override_outbound_digest1   s1   € Ø×ÑœyÓ)ñ 	$ô$œô $÷	$÷ 	$ñ 	$úrK   c                 óv   — | j                  t        «      5   G d„ dt        «      }d d d «       y # 1 sw Y   y xY w)Nc                   ó   — e Zd ZdZd„ Zy)úLAdapterBaseTests.test_subclass_cannot_override_init_subclass.<locals>.Bypassr   c                  ó   — y r.   rC   )ÚclsÚkwargss     r   Ú__init_subclass__z^AdapterBaseTests.test_subclass_cannot_override_init_subclass.<locals>.Bypass.__init_subclass__>   s   € Ør   N)r/   r0   r1   r   rY   rC   r   r   rE   rU   ;   s   „ Ø�ór   rE   rF   rI   s     r   Ú+test_subclass_cannot_override_init_subclassz<AdapterBaseTests.test_subclass_cannot_override_init_subclass9   s1   € Ø×ÑœyÓ)ñ 	ôœô ÷	÷ 	ñ 	úrK   c                 ó"  — t        | j                  j                  «      }|j                  d | j                  «      }| j                  |j                  |j                  ft        j                  df«       | j                  |j                  d«       y )NÚMISSING_CLEARANCEr   )r   r9   r   rD   r"   ÚassertEqualÚstatusÚ
error_coder   ÚBLOCKEDr   ©r   Úadapterr   s      r   Ú&test_execute_without_clearance_blockedz7AdapterBaseTests.test_execute_without_clearance_blockedA   si   € Ü˜DŸF™FŸO™OÓ,ˆØ—‘  t§x¡xÓ0ˆØ×Ñ˜&Ÿ-™-¨×):Ñ):Ð;¼l×>RÑ>RÐTgÐ=hÔiØ×Ñ˜×*Ñ*¨AÕ.r   c                 ó~   — | j                  t        «      5  t        t        «       «       d d d «       y # 1 sw Y   y xY wr.   )rG   rH   r   Úobjectr:   s    r   Útest_adapter_requires_verifierz/AdapterBaseTests.test_adapter_requires_verifierG   s/   € Ø×ÑœyÓ)ñ 	 Ü”f“hÔ÷	 ÷ 	 ñ 	 ús   –3³<c                 óØ   —  G d„ dt         «      } |«       }|j                  d | j                  «      }| j                  |j                  d«       | j                  |j
                  d«       y )Nc                   ó"   — e Zd ZdZd„ Zd„ Zd„ Zy)úHAdapterBaseTests.test_subclass_skipping_super_init_blocked.<locals>.Lazyr   c                 ó   — d| _         y r   )r   r:   s    r   r   zQAdapterBaseTests.test_subclass_skipping_super_init_blocked.<locals>.Lazy.__init__O   s	   € Ø!"�•r   c                 ó.   — t        | j                  i «      S r.   )r   r   r!   s     r   r#   zQAdapterBaseTests.test_subclass_skipping_super_init_blocked.<locals>.Lazy._prepareR   s   € Ü §	¡	¨2Ó.Ð.r   c                 óŽ   — | xj                   dz  c_         t        |j                  | j                  t        j
                  d¬«      S )Nr   Úxr&   )r   r   r(   r   r   r)   r*   s       r   r-   zRAdapterBaseTests.test_subclass_skipping_super_init_blocked.<locals>.Lazy._transmitU   s0   € Ø—’ !Ñ#•Ü$ S§Z¡Z°·±¼L×<PÑ<PÐY\Ô]Ð]r   N)r/   r0   r1   r   r   r#   r-   rC   r   r   ÚLazyri   L   s   „ ØˆDò#ò/ó^r   rn   ÚNO_VERIFIERr   )r   rD   r"   r]   r_   r   )r   rn   rb   r   s       r   Ú)test_subclass_skipping_super_init_blockedz:AdapterBaseTests.test_subclass_skipping_super_init_blockedK   sY   € ô	^”>ô 	^ñ “&ˆØ—‘  t§x¡xÓ0ˆØ×Ñ˜×*Ñ*¨MÔ:Ø×Ñ˜×*Ñ*¨AÕ.r   c                 ó8  — t        | j                  j                  dd¬«      }|j                  | j                  j	                  || j
                  «      | j
                  «      }| j                  |j                  |j                  ft        j                  df«       y )Nr   T)Úraise_errorÚADAPTER_EXCEPTION)r   r9   r   rD   Úclearr"   r]   r^   r_   r   ÚFAILEDra   s      r   Útest_transmit_exception_failedz/AdapterBaseTests.test_transmit_exception_failed^   sj   € Ü˜dŸf™fŸo™o¨wÀDÔIˆØ—‘ §¡§¡¨g°t·x±xÓ!@À$Ç(Á(ÓKˆØ×Ñ˜&Ÿ-™-¨×):Ñ):Ð;¼l×>QÑ>QÐSfÐ=gÕhr   c           	      ó2  — t        | j                  j                  t        ddt        j
                  d¬«      «      }|j                  | j                  j                  || j                  «      | j                  «      }| j                  |j                  d«       y )Nz	other-jobr   rm   r&   ÚINVALID_ADAPTER_RESULT©r   r9   r   r   r   r)   rD   rt   r"   r]   r_   ra   s      r   Útest_invalid_result_rejectedz-AdapterBaseTests.test_invalid_result_rejectedc   sg   € Ü˜DŸF™FŸO™O¬]¸;ÈÔQ]×QeÑQeÐnqÔ-rÓsˆØ—‘ §¡§¡¨g°t·x±xÓ!@À$Ç(Á(ÓKˆØ×Ñ˜×*Ñ*Ð,DÕEr   c           	      ó2  — t        | j                  j                  t        ddt        j
                  d¬«      «      }|j                  | j                  j                  || j                  «      | j                  «      }| j                  |j                  d«       y )Nzjob-1r   z  r&   ÚEMPTY_RESPONSEry   ra   s      r   Útest_empty_success_rejectedz,AdapterBaseTests.test_empty_success_rejectedh   sf   € Ü˜DŸF™FŸO™O¬]¸7ÀGÌ\×MaÑMaÐjnÔ-oÓpˆØ—‘ §¡§¡¨g°t·x±xÓ!@À$Ç(Á(ÓKˆØ×Ñ˜×*Ñ*Ð,<Õ=r   N)r/   r0   r1   r;   r>   rJ   rR   rZ   rc   rf   rp   rv   rz   r}   rC   r   r   r4   r4       s;   „ ò/ò
ò7ò$òò/ò ò/ò&iò
Fó
>r   r4   c                   ó   — e Zd Zd„ Zd„ Zy)ÚGatewayAdapterWiringTestsc                 ó  ‡— t        | j                  dz  «      Š| j                  t        «      5 }| j	                  dˆfd„i¬«       d d d «       | j                  t        j                  «      d«       y # 1 sw Y   Œ/xY w)NÚforeignr   c                 ó0   •— t        ‰j                  d«      S )Nr   )r   r   )r   r�   s    €r   ú<lambda>zQGatewayAdapterWiringTests.test_gateway_rejects_foreign_verifier.<locals>.<lambda>r   s   ø€ ÄkÐRY×RbÑRbÐdkÓFl€ r   ©Úadapter_factoriesÚADAPTER_VERIFIER_MISMATCH)r
   ÚrootrG   r	   Úgatewayr]   ÚstrÚ	exception)r   Úctxr�   s     @r   Ú%test_gateway_rejects_foreign_verifierz?GatewayAdapterWiringTests.test_gateway_rejects_foreign_verifiero   sn   ø€ Ü  §¡¨YÑ!6Ó7ˆØ×ÑÔ1Ó2ð 	o°cØ�L‰L¨GÓ5lÐ+mˆLÔn÷	oà×Ñœ˜SŸ]™]Ó+Ð-HÕI÷	oð 	oús   ¯A5Á5A>c                 óÌ   — | j                  t        «      5 }| j                  dd„ i¬«       d d d «       | j                  t	        j
                  «      d«       y # 1 sw Y   Œ/xY w)Nr   c                 ó   — t        «       S r.   )re   )r   s    r   rƒ   zLGatewayAdapterWiringTests.test_gateway_rejects_non_adapter.<locals>.<lambda>w   s   € ÄfÃh€ r   r„   ÚINVALID_ADAPTER)rG   r	   rˆ   r]   r‰   rŠ   )r   r‹   s     r   Ú test_gateway_rejects_non_adapterz:GatewayAdapterWiringTests.test_gateway_rejects_non_adapteru   sZ   € Ø×ÑÔ1Ó2ð 	Q°cØ�L‰L¨GÑ5NÐ+OˆLÔP÷	Qà×Ñœ˜SŸ]™]Ó+Ð->Õ?÷	Qð 	Qús   –AÁA#N)r/   r0   r1   rŒ   r�   rC   r   r   r   r   n   s   „ òJó@r   r   c                   ó(   — e Zd ZdZd„ Zd„ Zd„ Zd„ Zy)ÚStructuralTestsuC   Keine parallelen AusfÃ¼hrungspfade (statische PrÃ¼fung des Pakets).c              #   ó¸   K  — t        t        j                  d«      «      D ]5  }|j                  t	        j
                  |j                  d¬«      «      f–— Œ7 y ­w)Nz*.pyzutf-8)Úencoding)ÚsortedÚPACKAGEÚglobr   ÚastÚparseÚ	read_text)r   Úpaths     r   ÚmoduleszStructuralTests.modules~   sH   è ø€ Üœ7Ÿ<™<¨Ó/Ó0ò 	IˆDØ—)‘)œSŸY™Y t§~¡~¸w ~Ó'GÓHÐHÓHñ	Iùs   ‚AAc                 ór  — g }| j                  «       D �]
  \  }}t        j                  |«      D ]ì  }t        |t        j                  t        j
                  f«      rv|j                  D �cg c]  }|j                  ‘Œ c}t        |t        j
                  «      r|j                  gng z   }t        d„ |D «       «      r|dk7  r|j                  |«       t        |t        j                  «      sŒ¾|j                  dv sŒÍ|j                  |› d|j                  › �«       Œî �Œ | j                  |g «       y c c}w )Nc              3   óP   K  — | ]  }|xr |j                  d «      d   dv –— Œ  y­w)ú.r   )Ú
subprocessÚptyN)Úsplit)Ú.0Úns     r   ú	<genexpr>zAStructuralTests.test_subprocess_only_in_runner.<locals>.<genexpr>ˆ   s*   è ø€ ÒYÈa˜1ÒI §¡¨£¨a¡Ð4IÐ!IÓIÑYùs   ‚$&z	runner.py)ÚsystemÚpopenÚexecvÚexecveÚspawnvú:)rœ   r˜   ÚwalkÚ
isinstanceÚImportÚ
ImportFromÚnamesr   ÚmoduleÚanyÚappendÚ	AttributeÚattrr]   )r   Ú	offendersr   ÚtreeÚnodeÚar°   s          r   Útest_subprocess_only_in_runnerz.StructuralTests.test_subprocess_only_in_runner‚   sù   € Øˆ	ØŸ,™,›.ó 	<‰JˆD�$ÜŸ™ ›ò <�Ü˜d¤S§Z¡Z´·±Ð$@ÔAØ-1¯Z©ZÖ8¨˜QŸV›VÒ8ÌZÐX\Ô^a×^lÑ^lÔMm¸T¿[¹[¹MÐsuÑv�EÜÑYÐSXÔYÔYÐ^bÐfqÒ^qØ!×(Ñ(¨Ô.Ü˜d¤C§M¡MÕ2°t·y±yÐDtÒ7tØ×$Ñ$¨ v¨Q¨t¯y©y¨kÐ%:Õ;ò<ð	<ð 	×Ñ˜ BÕ'ùò 9s   Á*D4c                 ó¤  — t        «       }| j                  «       D ]Ÿ  \  }}t        j                  |«      D ]‚  }t	        |t        j
                  «      sŒt	        |j                  t        j                  «      sŒC|j                  j                  dv sŒ\|j                  ||j                  j                  f«       Œ„ Œ¡ | j                  |ddh«       y )N)rD   r-   )ú
gateway.pyrD   )zadapter_contract.pyr-   )Úsetrœ   r˜   r¬   r­   ÚCallÚfuncr´   rµ   Úaddr]   )r   Úcallersr   r·   r¸   s        r   Ú+test_adapter_execute_called_only_by_gatewayz;StructuralTests.test_adapter_execute_called_only_by_gatewayŽ   s›   € Ü“%ˆØŸ,™,›.ò 	8‰JˆD�$ÜŸ™ ›ò 8�Ü˜t¤S§X¡XÕ.´:¸d¿i¹iÌÏÉÕ3WØ ŸI™IŸN™NÐ.FÒFØ—K‘K  t§y¡y§~¡~Ð 6Õ7ñ8ð	8ð
 	×Ñ˜Ð#<Ð>bÐ"cÕdr   c                 óì  — g }| j                  «       D ]Í  \  }}t        j                  |«      D ]°  }t        |t        j                  «      sŒt        |j
                  t        «      sŒ9|j
                  }|j                  d«      r;|j                  d«      dk\  r'|j                  d«      r|j                  |› d|› �«       |dv sŒ–|dvsŒ›|j                  |› d|› �«       Œ² ŒÏ | j                  |g «       y )Nú/é   )z/claudez/noder«   )Úclaudez-p)zcore.pyz	config.pyr¼   zclaude_channel.pyzcommands.py)rœ   r˜   r¬   r­   ÚConstantÚvaluer‰   Ú
startswithÚcountÚendswithr³   r]   )r   r¶   r   r·   r¸   rÈ   s         r   Ú0test_no_model_cli_strings_outside_codex_templatez@StructuralTests.test_no_model_cli_strings_outside_codex_template—   sá   € Øˆ	ØŸ,™,›.ò 		<‰JˆD�$ÜŸ™ ›ò <�Ü˜d¤C§L¡LÕ1´jÀÇÁÌSÕ6QØ ŸJ™J�Eà×'Ñ'¨Ô,°·±¸SÓ1AÀQÒ1FÈ5Ï>É>ÐZnÔKoØ!×(Ñ(¨D¨6°°5°'Ð):Ô;ØÐ 0Ò0°Tð Bhò 6hà!×(Ñ(¨D¨6°°5°'Ð):Õ;ñ<ð		<ð 	×Ñ˜ BÕ'r   N)r/   r0   r1   Ú__doc__rœ   rº   rÂ   rÌ   rC   r   r   r’   r’   {   s   „ ÙMòIò
(òeó(r   r’   Ú__main__)rÍ   r˜   r6   ÚunittestÚpathlibr   Úaria_router.adapter_contractr   r   r   r   Úaria_router.adaptersr   Úaria_router.configr	   Útests.helpersr
   r   Ú__file__ÚresolveÚparentsr–   r   ÚTestCaser4   r   r’   r/   ÚmainrC   r   r   ú<module>rÚ      s£   ðÙ \Û 
Û Û Ý ç ^Ó ^Ý ,Ý 1ç 9á
ˆx‹.×
 Ñ
 Ó
"×
*Ñ
*¨1Ñ
-°Ñ
=€ôf�ô fô K>�x×(Ñ(ô K>ô\
@ ô 
@ô((�h×'Ñ'ô ((ðV ˆzÒØ€H‡M�M…Oð r   