
    jE                       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
Z	d dlZd dlZd dlZd dlZd dlZd dlmZ d dlZ ee      j)                         j*                  Zedz  ZdZdZedfZej*                  dz  d	z  Zd
 Zd Zd$dZd%dZd&d'dZ d(dZ!d)dZ"d*dZ#	 	 	 	 	 	 d+dZ$	 	 	 	 	 	 d+dZ%ejL                  jO                  dg d      d,d       Z(ejL                  jO                  dg d      d-d       Z)ejL                  jO                  dg d      d-d       Z*d*dZ+ejL                  jO                  dddg      d.d        Z,d*d!Z-d*d"Z.d*d#Z/y)/    )annotationsN)Pathz)task27_supplemental_cleanup_controller.pycb_mYUoMIsk_CRzSDKYpPE9dg
85279166390z:task26/task26-combined-v38-delivered-st_01a019d7/artifactsz$hermes_agent-0.17.0-py3-none-any.whlc                 6   t         j                  j                  dt              } g }d }| |u}|}|r| j                  }d }||u}|}|slt        j                  d|fd| |f      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      dz  }dd|iz  }	|j                  |	       |rt        j                  dfdf      dt        j                         v st        j                  |       rt        j                  |       ndt        j                  |      t        j                  |      d	z  }
d
d|
iz  }|j                  |       t        j                  |d      i z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}}t         j                  j                  |       }|t         j"                  | j$                  <   | j                  j'                  |       |S )Ntask27_supplement)is not)z%(py2)s is not %(py5)sspec)py2py5z%(py7)spy7)z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)py9py11py14z%(py16)spy16r   zassert %(py19)spy19)	importlibutilspec_from_file_location
CONTROLLERloader
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specsysmodulesnameexec_module)r   @py_assert1@py_assert4@py_assert3@py_assert0@py_assert10@py_assert13@py_assert12@py_format6@py_format8@py_format15@py_format17@py_format18@py_format20modules                  m/home/cube/projects/richard/traning coach/.omo/evidence/task27/test_task27_supplemental_cleanup_controller.pyloadr7      s/   >>112EzRD7t74t77474 777774t77777747774777t77777774777777777777777477777777777777^^,,T2F#CKK		KKF#M    c                P    t        j                  | ddd      j                         S )NT),:)ensure_ascii	sort_keys
separators)jsondumpsencode)values    r6   	canonicalrC   $   s#    ::DDZfhr8   c                    | j                   j                  ddd       | j                  t        |      dz          | j	                  d       y )NT  parentsexist_okmode   
  )parentmkdirwrite_bytesrC   chmod)pathrB   s     r6   private_jsonrQ   *   s?    KKdT>Yu%-.JJur8   c           	        | dz  }|j                  dd       |dz  }|j                  d       |j                  d       |dz  }|j                  j                  ddd	       |j	                  d
       |j                  d       t
        j                  j                  dt        t                     t        j                  d      }t        j                  d      }t        |d      }t        |d      }ddd}d}	 ||      }
|
j                  t        d|t        d|	       |
j!                  t        dt"        dd       |
j%                  t        d|t        d|	d        ||dz        j'                  ddddt"        gd       |S ) NprofileTrE   )rG   rI   $.task27-supplemental-disposable-copyz$TASK27_SUPPLEMENTAL_DISPOSABLE_COPY
rK   zdata/.profile-authority.lockrF   )rI   r   zBgateway.platforms.telegram_nutrition_onboarding_publication_outboxz0gateway.platforms.telegram_staff_membership_gate"GatewayOnboardingPublicationOutboxMembershipJournal@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
collecting)body_digeststate@bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbcustomer)
session_id
generationpayloadrouterolerender_identityr   i0  )r]   r^   chat_idtopic_id
message_id)r]   r^   r_   r`   ra   rb   re   9data/onboarding/telegram-staff-membership-v1/events.jsonlsubscription_armedzepoch-1z2026-08-18T14:55:11+00:00@cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc)eventsubscription_epoch_idobserved_at_utcstaff_chat_inventory_sha256customer_user_ids)rM   
write_textrO   rL   touchr$   rP   insertstrWHEELr   import_modulegetattrclaimSESSIONROUTErecord_receiptUSERmark_committedr   )tmp_pathrootmarkerauthority_lockoutbox_modulemembership_moduleoutbox_typejournal_typer_   renderoutboxs              r6   rS   rS   0   s   iDJJt%J(::F
=>
LL::Nt%He$HHOOAs5z"++LM "//: -)MNK,.ABL&>GFF
LL         JJf)%.:+3"&	
 Kr8   c                Z    | |rdndz  }t        ||rdnd|rdnd|rdnd|rd	ndd
       |S )Nzactive.jsonzinactive.jsonactiveinactiverunningdead*   r      )active_state	sub_statemain_pidmatching_processes)rQ   )r{   r   rP   s      r6   service_stater   m   sC    }ODD(.HJ&,&$!'-!1		
 Kr8   c                V    |dz  }| j                  ||t        |            }||d   |fS )Npermission.jsonservice_overridepermission_seal)dry_runr   )r5   r|   r{   rP   results        r6   
permissionr   {   sA    ''D^^d]8%<  F )*F22r8   c                    | j                  t        | j                  |      j                         D ci c]&  \  }}|| j	                  | j                  |            ( c}}            S c c}}w )N)	sha_bytesrC   mutation_pathsitemscompacttree_inventory)r5   r|   keyrB   s       r6   mutation_digestr      sp     #)"7"7"="C"C"E"EJC V^^F$9$9%$@AA"E	
 s   +A*c                   t               }t        |       }t        |||       \  }}}|d   }|d   }t        |      }h d}||k(  }	|	st	        j
                  d|	fd||f      dt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      t	        j                  |      dz  }
dd	|
iz  }t        t	        j                  |            d x}x}x}	}|d
   d   }|j                  }||k(  }|st	        j
                  d|fd||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      dz  }dd|iz  }
t        t	        j                  |
            d x}x}}|d   }|j                  } |       }||k(  }|st	        j
                  d|fd||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      dz  }
dd	|
iz  }t        t	        j                  |            d x}x}x}}d |d   D        }t        |      }|sddt        j                         v st	        j                  t              rt	        j                  t              ndt	        j                  |      t	        j                  |      dz  }t        t	        j                  |            d x}}|d   }|j                  } |       }||k(  }|st	        j
                  d|fd||f      t	        j                  |      dt        j                         v st	        j                  |      rt	        j                  |      ndt	        j                  |      t	        j                  |      dz  }
dd	|
iz  }t        t	        j                  |            d x}x}x}}y )Npermission_payloadexact_state>   r   
membershipsupplemental_archive==)z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py7)sset)py0r   py4r   zassert %(py9)sr   cleanup_receiptsha256)z>%(py1)s == %(py5)s
{%(py5)s = %(py3)s.CLEANUP_RECEIPT_SHA256
}r5   py1py3r   assert %(py7)sr   proposed_mutations)zQ%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.proposed_mutations
}()
})r   r   r   r   c              3  ,   K   | ]  }|d    dk(    yw)rP   zE.omo/evidence/task27/.task27-supplemental-live-cleanup-receipt.json.*N ).0mutations     r6   	<genexpr>z.test_dry_run_binds_contract.<locals>.<genexpr>   s+       6H 	?	

 6s   ,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}anyr   r   r   tools)zK%(py1)s == %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.tool_binding
}()
})r7   rS   r   r   r   r   r   r   r   r   r!   r"   CLEANUP_RECEIPT_SHA256r   r   tool_binding)r{   r5   r|   _r   r_   r(   r*   @py_assert6@py_assert5r0   @py_format10r+   r)   @py_assert2r/   @py_format5s                    r6   test_dry_run_binds_contractr      sR   VF8DfdH5LAq&)*G}% 3%&  + & +   	& +   	  	    	    	 &   	 '   	+     	  
 $%h/P63P3PP/3PPPPP/3PPPP/PPPPPP6PPP6PPP3PPPPPPPP'(GF,E,EG,E,GG(,GGGGG(,GGGG(GGGGGGFGGGFGGG,EGGG,GGGGGGGG   45 3                         74v224244444444444444444v444v444244444444444r8   c                
   t               }t        |      }|dz  }|dz  }| j                  |d|       | j                  |d|d       | j                  |d|d       |dz  }| j                  |d	|d       |j                  ||t	        |      
      }|d   }d}	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}
}	d|j                         d   t        |      |j                  |      |d   ddd}ddt        |      |j                  |j                  |j                  |j                   |j"                  t%        |j&                        d|j)                         dddddddddd	|d	}t+        ||       |j-                  d        t/        j0                  |j2                  d!"      5  |j5                  |||d   |t	        |      
       d d d        |d#z  }|j                  |||t	        |      $      }|d%   }t7        |      }d |d&<   |d%   }
||
k(  }|st        j                  d|fd'||
f      d(t9        j:                         v st        j<                  |      rt        j                  |      nd(t        j                  |
      d)z  }d*d+|iz  }t        t        j                  |            d x}}
t?        j@                  t?        jB                  |            }|d%   }d,|d-   d.<   |jE                  tG        |            |d<   |d/z  }t+        ||       t/        j0                  |j2                  d0"      5  |j5                  |||d   ||t	        |      $       d d d        |j5                  |||d   ||t	        |      $      }|d   }d1}	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}
}	|d2   }d3}	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}
}	|d&   d4   }|j                  } ||      }||k(  }
|
st        j                  d|
fd5||f      t        j                  |      d6t9        j:                         v st        j<                  |      rt        j                  |      nd6t        j                  |      d!t9        j:                         v st        j<                  |      rt        j                  |      nd!t        j                  |      d7z  }d8d9|iz  }t        t        j                  |            d x}x}
x}}tI        |d:   d;         d<z  }|jJ                  } |       }	|	sd=d>t9        j:                         v st        j<                  |      rt        j                  |      nd>t        j                  |      t        j                  |	      d?z  }t        t        j                  |            d x}}	t?        j@                  |jM                               d   }|d   }	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd|iz  }t        t        j                  |            d x}x}
}	y # 1 sw Y   KxY w# 1 sw Y   xY w)@Nzauthorization.jsonzlive-receipt.jsonLIVELIVE_AUTHORIZATIONFraisingLIVE_OUTPUTzpreview.jsonLIVE_PREVIEWr   statusAWAITING_AUTHORIZATIONr   z%(py1)s == %(py4)sr   r   assert %(py6)spy6z2026-08-20T03:56:29Zcontroller_sha256r   ztest-sessionu   ㅇㅇ)approved_atapproved_controller_sha256approved_dry_run_pathapproved_dry_run_sha256approved_permission_sealthread_session_iduser_messagez1task27-supplemental-live-cleanup-authorization-v1APPROVED_ONCE)customer_keyr]   user_idr`   noner   T)	
activationcommitcustomer_deliveryexternal_network_actionsgateway_must_remain_stoppedprovider_actionspushreleasetelegram_actions)	schemar   targetcandidate_digestcleanup_receipt_sha256identityr   constraintsapproval   authorizationmatchzlive-permission.jsonlive_authorization_filer   r   live_authorization)z%(py0)s == %(py3)sapproved_projection)r   r   zassert %(py5)sr   c   observedmembership_rowszforged-permission.jsonzapproved preview	COMMITTEDexecution_targetliver   )zN%(py1)s == %(py8)s
{%(py8)s = %(py5)s
{%(py5)s = %(py3)s.sha_file
}(%(py6)s)
}r5   )r   r   r   r   py8zassert %(py10)spy10archiver|   zauthorization-consumed.jsonzBassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_file
}()
}consumptionr   )'r7   rS   setattrr   r   r   r   r   r!   r"   r   rq   sha_file	CANDIDATEr   CUSTOMERrv   USER_IDlistrw   r   rQ   rO   pytestraisesRefusalexecutedictr   r   r   r?   loadsr@   r   rC   r   is_file	read_text)monkeypatchr{   r5   r|   r   live_outputpreviewpreview_resultr+   r*   r   r   @py_format7r   authorization_documentpermission_pathpermission_resultauthorized_payloadr   r(   @py_format4r/   forged_permissionforged_payloadforged_pathr   r)   @py_assert7@py_format9@py_format11r   s                                  r6   0test_live_execution_requires_exact_authorizationr     sO    VF8D33M00K- 4mUS{EJ'GG^^&x0 $ N
 (#?'??#'?????#'????#???'????????-&,&9&9&;'
 "%W#)??7#;$23D$E+ 
#H F!d)",,"("?"?"OO ..~~&,,'	
 %779!&()+/ ! !

 14  67	v~~_	=,-*84 	 	
 
> !77O -&x0	 '  ++?@1204,-"01E"FF"FFFFF"FFFFFFFFFFFFF"FFFFFFFF

4::.?#@A&';<N46N:01+1+;+;.!,'( 55K/0	v~~-?	@/0$1*84 	 	
 
A ^^+, -&x0  F (*{*{****{******{*******$%//%////%///%//////////&'1SV__S_]5SS15SSSSS15SSSS1SSSSSSVSSSVSSS_SSSSSS]SSS]SSS5SSSSSSSSVIv&'*GG           ;   ;             ::k++-./@A +,A,  A,   B    	-      g 
>	=6 
A	@s   ?#]+$]8+]58^c                F   t               }t        |      }|dz  }| j                  |d|       | j                  |d|d       t        j                  |j
                  d      5  |j                  ||dz  d	|d
z  |dz  t        |             d d d        y # 1 sw Y   y xY w)Nzexpected.jsonr   r   Fr   outputr   zunused-permission.json@0000000000000000000000000000000000000000000000000000000000000000zarbitrary.jsonzunused-authorization.jsonr   )r7   rS   r   r  r  r  r  r   )r  r{   r5   r|   expected_outputs        r6   *test_live_execution_refuses_unbound_outputr"    s     VF8D0O-N	v~~X	6//''$,/J$J*84 	 	
 
7	6	6s   $*BB kind)foreign_sessionforeign_routemixed_membershipc                   t               }t        |       }|j                  d      rS|dz  }t        j                  |j                               }|dk(  rd|d   d   d<   nddg|d   d   d	<   t        ||       n|d
z  }t        j                  |j                               }t        dg|d<   |j                  d       t        j                  t        |            j                         |d<   |j                  t        |      dz          t        j                  |j                         5  |j#                  || dz  t%        |              d d d        y # 1 sw Y   y xY w)Nforeignz:data/onboarding/telegram-publication-outbox-v1/ledger.jsonr$  recordsr   r]   999r   r`   rf   rm   
row_sha256rJ   bad-permission.jsonr   )r7   rS   
startswithr?   r
  r  rQ   ry   pophashlibr   rC   	hexdigestrN   r  r  r  r   r   )r{   r#  r5   r|   rP   documentrows          r6   #test_rejects_foreign_or_mixed_stater3  )  s3    VF8Dy!RR::dnn./$$3<HY"<0/4clHY"7+T8$QQjj)*$(%= #NN9S>:DDFL3%/0	v~~	&,,*84 	 	
 
'	&	&s   )!EEattack)hmacunknownsymlinkhardlinkrI   c                r   t               }t        |       }|dz  }|dz  }|dk(  r;t        j                  |j	                               }d|d   d   d<   t        ||       n|dk(  r(|d	z  }|j                  d
       |j                  d       nW|dk(  r"|j                          |j                  d       n0|dk(  rt        j                  ||dz         n|j                  d       t        j                  |j                        5  |j                  || dz  t!        |              d d d        y # 1 sw Y   y xY w)N.data/onboarding/telegram-publication-outbox-v1zledger.jsonr5  r   r)  r   receipt_integrityr6  zunexpected.jsonz{}
rK   r7  zemergency.jsonr8  zledger-copy.json  r,  r   )r7   rS   r?   r
  r  rQ   rn   rO   unlink
symlink_tooslinkr  r  r  r   r   )r{   r4  r5   r|   r   ledgerr1  rP   s           r6   %test_rejects_unsafe_or_unknown_outboxrB  F  s    VF8DDDFm#F::f..016>A23VX&	9	))

5	9	*+	:	
!334U	v~~	&,,*84 	 	
 
'	&	&s   !D--D6)r6  r7  r8  rI   	malformedc                    t               }t        |       }|dz  }|dz  }|dk(  r(|dz  }|j                  d       |j                  d       nn|dk(  r"|j	                          |j                  d       nG|d	k(  rt        j                  ||d
z         n(|dk(  r|j                  d       n|j                  d       t        j                  |j                        5  |j                  || dz  t        |              d d d        y # 1 sw Y   y xY w)N,data/onboarding/telegram-staff-membership-v1zevents.jsonlr6  
unexpectedxrK   r7  zevents.jsonl.lockr8  copyrI   r<  {r,  r   )r7   rS   rn   rO   r=  r>  r?  r@  r  r  r  r   r   )r{   r4  r5   r|   r   eventsrP   s          r6   test_rejects_unsafe_membershiprK  e  s     VF8DFFJ.(FL(

5	9	-.	:	

V+,	6	U#	v~~	&,,*84 	 	
 
'	&	&s   !DDc           
        t               }t        |       }t        j                  |j                        5  |j                  || dz  t        | d             d d d        t        |||       \  }}}|dz  j                  d       t        j                  |j                  d      5  |j                  |||| dz  t        |              d d d        y # 1 sw Y   {xY w# 1 sw Y   y xY w)Nzactive-permission.jsonTr   z4data/onboarding/telegram-publication-outbox-v1/.lockdriftr   receipt.json)
r7   rS   r  r  r  r   r   r   rn   r  r{   r5   r|   r  sealr   s         r6   +test_rejects_active_service_and_state_driftrQ    s    VF8D	v~~	&//*8T: 	 	
 
'  *&$AOT1	BBNN 
v~~W	5~%*84 	 	
 
6	5 
'	& 
6	5s   "C%#CCC&faultafter_archive_copyafter_prunec                   t               }t        |       }t        |||       \  }}}t        ||      }t	        j
                  t        |      5  |j                  |||| dz  |t        |              d d d        t        ||      }||k(  }	|	sdt        j                  d|	fd||f      dt        j                         v st        j                  t              rt        j                  t              nddt        j                         v st        j                  |      rt        j                  |      nddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      d	t        j                         v st        j                  |      rt        j                  |      nd	d
z  }
dd|
iz  }t        t        j                   |            d x}}	d}||z  }|j"                  } |       }| }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                   |            d x}x}x}x}}y # 1 sw Y   QxY w)Nr   rN  )rR  r   r   )z9%(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
} == %(py6)sr   r5   r|   before)r   r   r   r   r   zassert %(py8)sr   z data/task27-supplemental-cleanupQassert not %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = (%(py0)s / %(py2)s).exists
}()
}r   r   r   r   )r7   rS   r   r   r  r  RuntimeErrorr  r   r   r   r   r   r   r   r!   r"   exists)r{   rR  r5   r|   r  rP  r   rV  r*   r   r  r  r(   r)   r   @py_assert8s                   r6   test_fault_rollback_is_exactr\    s   VF8D)&$AOT1VT*F	|5	1~%*84 	 	
 
2 64(2(F2222(F222222?222?2222226222622222242224222(222222F222F22222229C99C9AACACCCCCCCCCCCCCCCCC9CCCACCCCCCCCCCC 
2	1s   $KKc                >   t               }t        |       }t        |||       \  }}}| dz  }|j                  ||||t	        |             }|d   }d}	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd	|iz  }t        t        j                  |            d x}x}
}	|d
   d   }d}	||	k(  }
|
slt        j                  d|
fd||	f      t        j                  |      t        j                  |	      dz  }dd	|iz  }t        t        j                  |            d x}x}
}	d}||z  }	|	j                  } |       }| }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            d x}x}	x}x}}d}||z  }	|	j                  } |       }| }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      dz  }t        t        j                  |            d x}x}	x}x}}t        |d   d         }t        j                   }|j                  } |       }|j"                  } ||      }d}||k(  }|sFt        j                  d|fd||f      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      t        j                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}}d |g|j%                  d      D        }t'        |      }	|	sddt        j                         v st        j                  t&              rt        j                  t&              ndt        j                  |      t        j                  |	      dz  }t        t        j                  |            d x}}	t)        j*                  |j,                  d      5  |j                  ||||t	        |              d d d        y # 1 sw Y   y xY w) NrN  r   r   r   r   r   r   r   r   terminalactive_target_matchesr   r:  rW  r|   rX  rE  r   i@  )z%(py11)s
{%(py11)s = %(py2)s
{%(py2)s = %(py0)s.S_IMODE
}(%(py9)s
{%(py9)s = %(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.stat
}()
}.st_mode
})
} == %(py14)sstat)r   r   r   r   r   r   r   r   zassert %(py16)sr   c              3  X   K   | ]"  }|j                         j                  d z    $ yw)   N)r`  st_mode)r   rP   s     r6   r   z>test_success_is_frozen_terminal_and_one_use.<locals>.<genexpr>  s,      2D YY[  5()2s   (**r   allr   zoutput already exists|reuser   )r7   rS   r   r  r   r   r   r   r!   r"   rZ  r   r   r   r   r`  S_IMODErc  rglobre  r  r  r  )r{   r5   r|   r  rP  r   r  r   r+   r*   r   r   r  r(   r)   r   r[  r  r   r,   r-   r.   r1   r2   s                           r6   +test_success_is_frozen_terminal_and_one_userh    s   VF8D)&$AOT1&F^^&x0  F (*{*{****{******{********56;!;6!;;;;6!;;;6;;;!;;;;;;;????f           	 Y 	 Y @ Y  Y       >===f           	 Y 	 Y > Y  Y       6)$V,-G<<888..8<./858/58888/588888848884888<888888888888888888.888/8885888888882w}}S12 3                         
v~~-J	K*84 	 	
 
L	K	Ks   * VVc           
     &   t               }t        |       }t        |||       \  }}}|dz  j                          t	        j
                  |j                  d      5  |j                  |||| dz  t        |              d d d        y # 1 sw Y   y xY w)NrT   
disposabler   rN  r   )	r7   rS   r   r=  r  r  r  r  r   rO  s         r6   test_execute_is_disposable_onlyrk    s    VF8D)&$AOT1	22::<	v~~\	:~%*84 	 	
 
;	:	:s   #BBc                	   t        |       }t        |       }| dz  }t        j                  t        j
                  t        t              ddt        |      dt        |      dt        |      g	dd      }|j                  }d}||k(  }|st        j                  d	|fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }t        j                  |j                         dz   d|iz  }	t#        t        j$                  |	            d x}x}}t'        j(                  |j+                               d   }
t        j                  t        j
                  t        t              ddt        |      dt        |      dddt        | dz        dt        |      gdd      }|j                  }d}||k(  }|st        j                  d	|fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }dd|iz  }	t#        t        j$                  |	            d x}x}}d}|j                   }||v }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      dz  }dd|iz  }	t#        t        j$                  |	            d x}x}}t        j                  t        j
                  t        t              ddt        |      dt        |      d|
dt        | dz        dt        |      gdd      }|j                  }d}||k(  }|st        j                  d	|fd
||f      dt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }t        j                  |j                         dz   d|iz  }	t#        t        j$                  |	            d x}x}}y )Nr   zdry-runz	--profilez--outputz--test-service-stateT)textcapture_outputr   r   )z2%(py2)s
{%(py2)s = %(py0)s.returncode
} == %(py5)sdry)r   r   r   z
>assert %(py7)sr   r   r  z--permission-filez--permission-sealr   zbad.json   badr   zpermission seal mismatch)in)z.%(py1)s in %(py5)s
{%(py5)s = %(py3)s.stderr
}r   z	good.jsongood)rS   r   
subprocessrunr$   
executablerq   r   
returncoder   r   r   r   r   r   _format_assertmsgstderrr!   r"   r?   r
  r  )r{   r|   rZ   r  ro  r(   r)   r*   r/   r0   rP  rq  r+   r   rs  s                  r6   test_cli_bad_seal_and_successrz    s&   8D(#E!22O
..NN
OI "J
	
 C >>*Q*>Q***>Q******3***3***>***Q***

*******::o//123DED
..NN
OI :%&"J	
 #C& >>Q>Q>Q33>Q%33%3333%333%3333333333333333333>>NN
OI ;&'"J	
 #D& ??,a,?a,,,?a,,,,,,4,,,4,,,?,,,a,,,,,,,,,,r8   )rP   r   returnNone)r{   r   r{  r   )F)r{   r   r   boolr{  r   )r|   r   r{   r   )r|   r   r{  rq   )r{   r   r{  r|  )r  zpytest.MonkeyPatchr{   r   r{  r|  )r{   r   r#  rq   r{  r|  )r{   r   r4  rq   r{  r|  )r{   r   rR  rq   r{  r|  )0
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   r/  r   importlib.utilr?   r?  r`  rt  r$   pathlibr   r  __file__resolverL   HEREr   rv   ry   rw   rr   r7   rC   rQ   rS   r   r   r   r   r  r"  markparametrizer3  rB  rK  rQ  r\  rh  rk  rz  r   r8   r6   <module>r     s   "       	   
  H~&&??

%	sKKBC,- :z35.n#n/3n	nb
#
/3
	
& 
D

4 @

8 E

4
. #7"GHD ID$!
H
=-r8   