
    jn
                    h   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mZ  ee      j                   Ze
j$                  j'                  dedz        Zg ZeZerej.                  ZeZesddd ej2                         v s ej4                  e      r ej6                  e      ndiz  Zej;                  e       er`d	d ej2                         v s ej4                  e      r ej6                  e      nd ej6                  e      d
z  Zej;                  e        ej>                  ed       i z  Z dde iz  Z! e" ejF                  e!            dxZxZZe
j$                  jI                  e      Z%ej.                  jM                  e%       ddZ'ddZ(ddZ)ddZ*ddZ+ddZ,ddZ-ddZ.y)    )annotationsN)Path
cleanup_v3cleanup_controller.pyz%(py2)spy2SPECz#%(py6)s
{%(py6)s = %(py4)s.loader
})py4py6assert %(py9)spy9c                    t         j                  } ddd} | |      }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                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x} x}x}x}}y )N      )bas   {"a":2,"b":1}
==)zK%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.canon
}(%(py4)s)
} == %(py9)sMODULE)py0r   r	   r
   r   zassert %(py11)spy11)
r   canon
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation)@py_assert1@py_assert3@py_assert5@py_assert8@py_assert7@py_format10@py_format12s          /home/cube/projects/richard/traning coach/.omo/evidence/task26/task26-post-lifecycle-cleanup-v3-4a6c7ee5-st_01a00e50/test_cleanup_controller.py$test_canonical_json_is_deterministicr(      s    <<?aa(?<()?-??)-?????)-???????6???6???<???(???)???-?????????    c                 j   t        j                  t        dz  j                               } | 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   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}}y )Nschema-contract-v3.jsonbindingscandidate_digest@4a6c7ee54cf9526a30de8bb576c1d71b411938beba33a04914738f6e1b6ed1cbr   )z%(py1)s == %(py4)s)py1r	   zassert %(py6)sr
   lifecycle_root_sha256@fdcfb1efd1f2d4a2b95f22f7311827d197898a6d480cb572956e87bd66d20361config_sha256@a95a89e838793d246bbbbba0d93da9ab0f2f2726f4fd27864648c4111563f509)	jsonloadsHERE	read_textr   r   r   r   r   )contract@py_assert0r!   @py_assert2@py_format5@py_format7s         r'   (test_contract_is_current_candidate_boundr=      s2   zz4";;FFHIHJ 23y7yy37yyyyy37yyyy3yyy7yyyyyyyyJ 78~<~~8<~~~~~8<~~~~8~~~<~~~~~~~~J0v4vv04vvvvv04vvvv0vvv4vvvvvvvvr)   c                 0   t        j                  t        dz  j                               } h d}| d   }t	        |      }||k  }|st        j                  d|fd||f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              ndt        j                  |      t        j                  |      dz  }dd	|iz  }t        t        j                  |            d x}x}x}}y )
Nr+   >   profile-reset-archivesrehearsal-reset-archivespost-lifecycle-cleanup-archivesprotected_data_roots)<=)z0%(py1)s <= %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}set)r/   py3py5py7r   r   )r4   r5   r6   r7   rD   r   r   r   r   r   r   r   r   )r8   r9   @py_assert4@py_assert6r:   @py_format8r%   s          r'   *test_archive_scope_protects_prior_archivesrK      s/   zz4";;FFHIHd  Nlt  vL  mM  Nhk  mM  iN  Nd  iN  N  N  N  Nd  iN  N  N  Nd  N  N  N  N  N  Nhk  N  N  Nhk  N  N  N  mM  N  N  N  iN  N  N  N  N  N  N  Nr)   c                 T   t         dz  j                         } | | j                  d      | j                  d       }|j                  }d} ||      }|j                  }d} ||      }||k  }|j                  }	d}
 |	|
      }||k  }|r|st        j                  d||fd|||f      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |      t        j                  |      t        j                  |      d	t        j                         v st        j                  |      rt        j                  |      nd	t        j                  |	      t        j                  |
      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}x}x}x}x}x}x}	x}
}d}||v }|st        j                  d|fd||f      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}|| v}|st        j                  d|fd|| f      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}}y )Nr   zdef execute(zdef verify_archive(zarchive_prestate(zdisable_customer(zpatch_delivery_gate()<rM   )z%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.index
}(%(py4)s)
} < %(py15)s
{%(py15)s = %(py11)s
{%(py11)s = %(py9)s.index
}(%(py13)s)
}z%(py15)s
{%(py15)s = %(py11)s
{%(py11)s = %(py9)s.index
}(%(py13)s)
} < %(py22)s
{%(py22)s = %(py18)s
{%(py18)s = %(py16)s.index
}(%(py20)s)
}execute)r   r   r	   r
   r   r   py13py15py16py18py20py22zassert %(py24)spy24zrestore_prestate(inz%(py1)s in %(py3)sr/   rE   assert %(py5)srF   zshutil.rmtree(archive)not inz%(py1)s not in %(py3)ssource)r6   r7   indexr   r   r   r   r   r   r   r   )r^   rN   r    r!   r"   @py_assert10@py_assert12@py_assert14r$   @py_assert17@py_assert19@py_assert21r#   @py_format23@py_format25r9   r:   @py_format4@py_format6s                      r'   4test_source_has_archive_before_mutation_and_rollbackrj       sN   ,,779FV\\.1&,,?T2UVG==z,z=,-zz>Qz>Q0Rz-0RzzU\UbUbzcyzUbcyUzz0RUzzzzzz-0RUzzzzzzz7zzz7zzz=zzz,zzz-zzzzzzzzzzzzzzz>Qzzz0RzzzzzzU\zzzU\zzzUbzzzcyzzzUzzzzzzzzzz)'))))')))))))))')))')))))))#1#61111#6111#111111611161111111r)   c                    t         dz  j                         } | | j                  d      | j                  d       }d}||v }|st        j                  d|fd||f      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}||v}|st        j                  d|fd||f      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}}y )Nr   zdef patch_delivery_gate(zdef qa_and_stop(zargs.apply_patchrV   rX   functionrY   rZ   rF   z#atomic(args.profile / "config.yaml"r[   r]   )r6   r7   r_   r   r   r   r   r   r   r   r   )r^   rl   r9   r:   rh   ri   s         r'   &test_config_edit_uses_apply_patch_onlyrm   (   s    ,,779Ffll#=>v||L^?_`H))))))))))))))))))))))))2B2(BBBB2(BBB2BBBBBB(BBB(BBBBBBBr)   c                    t         j                  dz  } t        j                  }| j                  } |       } ||      }|j
                  } |       }d}||k(  }|sZt        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                  |      t        j                  |      d	z  }	dd	|	iz  }
t        t        j                  |
            d x}x}x}x}x}x}x}}y )
NzLreset-controller-st_01a0054d/post-lifecycle-cleanup-v2/cleanup_controller.py@8b03fa714304b34a7f19dc9b077d8fbd54e7f7bc46232bf8d5bc65ae7b873ff5r   z%(py13)s
{%(py13)s = %(py11)s
{%(py11)s = %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.sha256
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.read_bytes
}()
})
}.hexdigest
}()
} == %(py16)shashlibstale	r   r   rE   rF   rG   r   r   rO   rQ   assert %(py18)srR   r6   parentrq   sha256
read_bytes	hexdigestr   r   r   r   r   r   r   r   )rr   r    rH   rI   r#   r`   ra   @py_assert15rb   @py_format17@py_format19s              r'   test_stale_controller_unchangedr}   /   s   KKhhE>>%***,>,--7779=9=9=77>%%*,-79=r)   c                    t         j                  dz  } t        j                  }| j                  } |       } ||      }|j
                  } |       }d}||k(  }|sZt        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                  |      t        j                  |      d	z  }	dd	|	iz  }
t        t        j                  |
            d x}x}x}x}x}x}x}}y )
NzBtask26-live-lifecycle-evidence-seal-4a6c7ee5-st_01a00e44/SEAL.json@50e7556e58a876d8136fbfb2023ede8bcb46ac816d97d4b85e1d0559f463d008r   rp   rq   sealrs   rt   rR   ru   )r   r    rH   rI   r#   r`   ra   rz   rb   r{   r|   s              r'   test_lifecycle_seal_unchangedr   4   s   ;;]]D>>~$//~/+~>+,~,66~68~<~~8<~~~~~8<~~~~~~~7~~~7~~~>~~~~~~$~~~$~~~/~~~+~~~,~~~6~~~8~~~<~~~~~~~~~r)   c                 D   t         j                  } d}t        |z  } | |      }|j                  }d}||z  }d}||k(  }|sNt	        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                  t              rt	        j                  t              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}x}x}}y )Nr   r   r   r   )z(%(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.stat
}((%(py3)s / %(py5)s))
}.st_mode
} & %(py12)s) == %(py16)sosr6   )r   r   rE   rF   py8py10py12rQ   rt   rR   )r   statr6   st_moder   r   r   r   r   r   r   r   )r    rH   rI   r$   @py_assert9@py_assert11@py_assert13rz   rb   r{   r|   s              r'   %test_controller_is_not_world_writabler   9   s    77G1G411G712G2::GUG:UBGaGBaGGGGBaGGGGGG2GGG2GGG7GGGGGG4GGG4GGG1GGG2GGG:GGGUGGGaGGGGGGGGGr)   )returnNone)/
__future__r   builtinsr   _pytest.assertion.rewrite	assertionrewriter   rq   importlib.util	importlibr4   r   pathlibr   __file__rv   r6   utilspec_from_file_locationr   r    r9   loaderr"   r   r   r   @py_format3appendr<   _format_booloprJ   r%   r   r   module_from_specr   exec_moduler(   r=   rK   rj   rm   r}   r   r    r)   r'   <module>r      s   "      	 H~~~--lDCZ<Z[ t t      t   t    t                     		(	(	.    @wN
2C@

Hr)   