
    jB                        d Z ddlmZ ddlZddlmc mZ ddl	Z	ddl
mZ ddlZddlmZmZmZmZ ddZddZddZdd	Zdd
ZddZddZddZddZej6                  j9                  dg d      dd       Zy)u   tests.regression.test_collector_context_mismatch — task-2636.

Spec: memory/specs/system_callback_collector_canonical_root_spec_260523.md §6, §8.
    )annotationsN)Path)MISMATCH_DECISIONMISMATCH_EVENT_LOG_RELMISMATCH_EVENT_SCHEMAdetect_context_mismatchc                    | t         z  }|j                         sg S |j                  d      j                         D cg c]'  }|j	                         rt        j                  |      ) c}S c c}w )Nutf-8encoding)r   exists	read_text
splitlinesstripjsonloads)log_rootlog_pathlines      G/home/jay/workspace/tests/regression/test_collector_context_mismatch.py_read_eventsr      sg    00H??	 &&&8CCE::< 	

4  s   ,A-c                   dt        |       d}t        |t        |       t        |             }|d   }d}||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}}|d   }d }||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}}|d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }	t        t        j                  |	            d x}}t        |       }g }
||
k(  }|st        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t        j                  |      t        j                  |
      dz  }dd|iz  }t        t        j                  |            d x}x}}
y )Nztask-2636-tm-1task_idcanonical_rootcurrent_cwdr   mismatchFisz%(py1)s is %(py4)spy1py4assert %(py6)spy6recorded_event_iddecision==z%(py1)s == %(py3)sr   r#   py3assert %(py5)spy5z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr   tmp_pathpy0r#   r-   r&   assert %(py8)spy8)strr   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationr   @py_builtinslocals_should_repr_global_namer   )r1   envout@py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_format4@py_format6@py_assert5@py_assert4@py_format9s                r   "test_cwd_equals_canonical_no_eventrK       s   &#h-
HC
!#3x=3x=
YCz?#e#?e####?e###?###e#######"#+t+#t++++#t+++#+++t+++++++z?/?/////?////?//////////////////!'R'!R''''!R''''''<'''<''''''''''''!'''R'''''''    c                   dt        | dz        dd}| dz  j                          | dz  }|j                          t        |t        |      t        |             }|d   }d}||u }|slt        j                  d	|fd
||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }d }||u}|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }|t        k(  }|st        j                  d|fd|t        f      t        j
                  |      dt        j                         v st        j                  t              rt        j
                  t              nddz  }	dd|	iz  }
t        t        j                  |
            d x}}t        |       }t        |      }d}||k(  }|st        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t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }|d    }|t        k(  }|st        j                  d|fd|t        f      t        j
                  |      d!t        j                         v st        j                  t              rt        j
                  t              nd!dz  }	dd|	iz  }
t        t        j                  |
            d x}}|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$   }t        |      }||k(  }|st        j                  d|fd%||f      t        j
                  |      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't        j
                  |      d(z  }dd|iz  }t        t        j                  |            d x}x}}|d)   }d}| |z  }t        |      }||k(  }|s
t        j                  d|fd*||f      t        j
                  |      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+t        j
                  |      t        j
                  |      d,z  }d-d.|iz  }t        t        j                  |            d x}x}x}x}}|d/   }d}| |z  }t        |      }||k(  }|s
t        j                  d|fd*||f      t        j
                  |      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+t        j
                  |      t        j
                  |      d,z  }d-d.|iz  }t        t        j                  |            d x}x}x}x}}|d   }|t        k(  }|st        j                  d|fd|t        f      t        j
                  |      dt        j                         v st        j                  t              rt        j
                  t              nddz  }	dd|	iz  }
t        t        j                  |
            d x}}|d0   }|d   }||k(  }|slt        j                  d|fd#||f      t        j
                  |      t        j
                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}d1 |d2   D        }t        |      }|sd3d4t        j                         v st        j                  t              rt        j
                  t              nd4t        j
                  |      t        j
                  |      d5z  }t        t        j                  |            d x}}y )6Nztask-2636-tm-2	canonicalmemory/x.json)r   r   result_pathautosetr   r   Tr   r!   r"   r%   r&   r'   )is not)z%(py1)s is not %(py4)sr(   r)   r+   r   r,   r.   r/      r0   leneventsr2   r4   r5   r   schemar   r   z%(py1)s == %(py4)scwd)z0%(py1)s == %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}r6   	other_cwd)r#   r-   r$   r&   canonical_root_resolved)z<%(py1)s == %(py9)s
{%(py9)s = %(py3)s((%(py4)s / %(py6)s))
}r1   )r#   r-   r$   r&   py9zassert %(py11)spy11canonical_root_envelopeevent_idc              3  $   K   | ]  }d |v  
 yw)rO   N ).0ps     r   	<genexpr>z;test_cwd_differs_canonical_records_event.<locals>.<genexpr>B   s     @!#@s   delta_pathsz,assert %(py4)s
{%(py4)s = %(py0)s(%(py2)s)
}any)r3   py2r$   )r6   mkdirr   r7   r8   r9   r:   r;   r   r<   r=   r>   r   rT   r   re   )r1   r?   rY   r@   rA   rB   rC   rD   rE   rF   rG   rU   rH   rI   rJ   rec@py_assert7@py_assert8@py_format10@py_format12@py_assert1s                        r   (test_cwd_differs_canonical_records_eventrn   )   s   #h45&C
 ""$9$IOO
!Y#h-C z?"d"?d""""?d"""?"""d""""""""#/4/#4////#4///#///4///////z?/?/////?////?//////////////////(#Fv;!;!;!33vv;!
)Cx=1=11111=1111=111111111111111111y>--->----->---->-----------u:'Y':'''':''':'''''''''''''''Y'''Y''''''''''()HKHK1GHS1G-HH)-HHHHH)-HHHH)HHHHHHSHHHSHHHHHHHHHHHHKHHH-HHHHHHHH()HKHK1GHS1G-HH)-HHHHH)-HHHH)HHHHHHSHHHSHHHHHHHHHHHHKHHH-HHHHHHHHz?/?/////?////?//////////////////z?6c"566?66666?6666?66666666666@S-?@@3@@@@@@@@@3@@@3@@@@@@@@@@@@@@rL   c           	        ddd}t        |dt        |              t        |       }|s{t        j                  d      dz   dd	t        j                         v st        j                  |      rt        j                  |      nd	iz  }t        t        j                  |            |d
   }h d}|j                  }|j                  } |       } ||      }	|	sd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t        j                  |      t        j                  |      t        j                  |	      dz  }
t        t        j                  |
            d x}x}x}}	|d   }|t        k(  }|st        j                  d|fd|t        f      t        j                  |      dt        j                         v st        j                  t              rt        j                  t              nddz  }dd|iz  }t        t        j                  |            d x}}y )Nt/ar   /br   zexpected one eventz
>assert %(py0)sr3   rU   r   >	   rX   rV   ts_kstr   r(   r^   rd   r]   rZ   z{assert %(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.issubset
}(%(py7)s
{%(py7)s = %(py5)s
{%(py5)s = %(py3)s.keys
}()
})
}required_keysrh   )r3   rf   r-   r/   py7r[   rV   r)   r+   r   r,   r.   r/   )r   r6   r   r7   _format_assertmsgr<   r=   r>   r9   r:   r;   issubsetkeysr   r8   )r1   r?   rU   @py_format1rh   rt   rm   rI   @py_assert6rj   rk   rA   rC   rF   rG   s                  r   $test_mismatch_event_schema_validatorr{   E   sx   T
2CCTCMJ(#F'''''''''6'''6'''''
)C
M !!-#((-(*-!*--------=---=---!------#---#---(---*----------x=1=11111=1111=111111111111111111rL   c                   ddd}dD ]  }t        ||t        |               t        |       }t        |      }d}||k(  }|st	        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
t	        j                  |      t	        j                  |      dz  }dd|iz  }t        t	        j                  |            d x}x}}|D 	ch c]  }	|	d   	 }
}	h 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 c c}	w )Nrp   rq   r   )rr   /c/dr      r)   r0   rT   rU   r2   r4   r5   rX   >   rr   r}   r~   rW   r"   r%   r&   )r   r6   r   rT   r7   r8   r<   r=   r>   r9   r:   r;   )r1   r?   rX   rU   rC   rH   rI   rE   rJ   erA   rB   rD   s                r   test_mismatch_append_onlyr   Z   s)   T
2C! Ns8}MN(#Fv;!;!;!33vv;!$%AeH%;%);;%);;;;;%);;;;%;;;);;;;;;;;%s   Gc                Z   ddd}t        |dt        |       d      }|d   }d}||u }|slt        j                  d	|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}|d   }d }||u }|slt        j                  d	|fd
||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}}t        |       }g }||k(  }	|	st        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t        j                  |      t        j                  |      dz  }dd|iz  }
t        t        j                  |
            d x}x}	}y )Nrp   rq   r   rr   F)r   r   write_eventr   Tr   r!   r"   r%   r&   r'   r)   r0   r   r1   r2   r4   r5   )r   r6   r7   r8   r9   r:   r;   r   r<   r=   r>   )r1   r?   r@   rA   rB   rC   rD   rE   rH   rI   rJ   s              r    test_detect_can_skip_event_writer   c   sV   T
2C
!H5C z?"d"?d""""?d"""?"""d""""""""#+t+#t++++#t+++#+++t+++++++!'R'!R''''!R''''''<'''<''''''''''''!'''R'''''''rL   c                <   ddd}t        |d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}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}}y )Nrp   z/canonr   z/totally/differentr   r(   PROCEED_WITH_CANONICAL_ROOTr)   rW   r"   r%   r&   r   )r   r6   r7   r8   r9   r:   r;   )r1   r?   r@   rA   rB   rC   rD   rE   s           r   !test_decision_is_always_canonicalr   m   s     X
6C
!-HC z?;;;?;;;;;?;;;;?;;;;;;;;;;; ,H, H,,,, H,,, ,,,H,,,,,,,rL   c                X   ddd}t        |dt        |              t        |       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 )Nrp   z	/explicitr   /otherr   r   r]   r)   rW   r"   r%   r&   r   r6   r   r7   r8   r9   r:   r;   r1   r?   rh   rA   rB   rC   rD   rE   s           r   /test_envelope_canonical_root_explicit_persistedr   x   s~    [
9CCXHN
x
 
#C()8[8)[8888)[888)888[8888888rL   c                T   ddi}t        |dt        |              t        |       d   }|d   }d }||u }|slt        j                  d|fd||f      t        j
                  |      t        j
                  |      d	z  }d
d|iz  }t        t        j                  |            d x}x}}|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 )Nr   rp   r   r   r   r]   r   r!   r"   r%   r&   rZ   z/home/jay/workspacer)   rW   r   r   s           r   5test_envelope_canonical_root_missing_recorded_as_nullr      s    c
CCXHN
x
 
#C()1T1)T1111)T111)111T1111111()B-BB)-BBBBB)-BBBB)BBB-BBBBBBBBrL   zscenario,expects_mismatch))canonical_root_explicitF)canonical_root_missing_defaultF)canonical_root_wrong_absoluteT)%cwd_in_autoset_canonical_in_workspaceT)sendfile_only_not_triggerF)normal_callback_is_triggerFc                   t        t              j                         j                  j                  dz  dz  |z  }t	        j
                  |dz  j                  d            }t	        j
                  |dz  j                  d            }t        |d   |d   t        |       	      }|d
   }||u }|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
   }|d   }||u }|slt        j                  d|fd||f      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                   |            d x}x}}t#        |       }t%        |      }|d   }||u }|st        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t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                   |            d x}x}}y )Nfixtures!callback_collector_canonical_rootzevidence.jsonr
   r   zexpected.jsonenveloper   r   r   r   )z%(py1)s is %(py3)sexpects_mismatchr,   r.   r/   context_mismatchr!   r"   r%   r&   mismatch_event_recorded)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sboolrU   r2   r4   r5   )r   __file__resolveparentr   r   r   r   r6   r7   r8   r9   r<   r=   r>   r:   r;   r   r   )r1   scenarior   fxevidenceexpectedr@   rA   rC   rF   rG   rB   rD   rE   rU   rH   rI   rJ   s                     r   test_fixture_mismatch_decisionr      s    	X ''..
	
-	. 	  zz2/::G:LMHzz2/::G:LMH
!]+XC
 z?.?.....?....?..................z?:h'9::?:::::?::::?:::::::::::(#F<>8$=>><>>>>><>>>>>>>4>>>4>>>>>>>>>>>><>>>>>>>>>>>rL   )r   r   )r1   r   )__doc__
__future__r   builtinsr<   _pytest.assertion.rewrite	assertionrewriter7   r   pathlibr   pytestutils.canonical_root_resolverr   r   r   r   r   rK   rn   r{   r   r   r   r   r   markparametrizer   r`   rL   r   <module>r      s    #      (A82*<(-9C 
?
?rL   