
    j                    v   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mZmZmZmZ  ee      j/                         j0                  j0                  dz  dz  Zdd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&d Z'd Z(ejR                  jU                  dg d      d        Z+y)u   tests.regression.test_collector_action_trigger — task-2636.

Spec: memory/specs/system_callback_collector_canonical_root_spec_260523.md §5.2, §8.
    )annotationsN)Path)REASON_INVALID_ENVELOPEREASON_NORMAL_CALLBACKREASON_NOT_REGISTEREDREASON_REGISTER_FAILEDREASON_SENDFILE_ONLYREASON_SKIPPEDenqueue_collector_actionis_callback_action_triggerfixtures!callback_collector_canonical_rootc                j    t         | z  dz  }t        j                  |j                  d            d   S )Nzevidence.jsonzutf-8)encodingenvelope)FIXTURE_ROOTjsonloads	read_text)scenariobases     E/home/jay/workspace/tests/regression/test_collector_action_trigger.py	_enveloper       s0    ("_4D::dnngn67
CC    c                 8   t        d      } 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normal_callback_is_triggerTisz0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py6)sr   envpy0py1py3py6assert %(py8)spy8
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanationr    @py_assert2@py_assert5@py_assert4@py_format7@py_format9s         r   test_normal_callback_is_triggerr7   %   s    
0
1C%c*2d2*d2222*d222222%222%222222c222c222*222d2222222r   c                 8   t        d      } 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sendfile_only_not_triggerFr   r   r   r    r!   r&   r'   r(   r1   s         r   !test_sendfile_only_is_not_triggerr:   *   s    
/
0C%c*3e3*e3333*e333333%333%333333c333c333*333e3333333r   c                 .   dddd} 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tNOT_REGISTEREDanu_cron_callbacktask_idregistration_result_statusdelivery_methodFr   r   r   r    r!   r&   r'   	r   r)   r*   r+   r,   r-   r.   r/   r0   r1   s         r   "test_not_registered_is_not_triggerrD   /   s    &6.C
 &c*3e3*e3333*e333333%333%333333c333c333*333e3333333r   c                 .   dddd} 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 )Nr<   REGISTER_FAILEDr>   r?   Fr   r   r   r    r!   r&   r'   rC   r1   s         r   #test_register_failed_is_not_triggerrG   8   s    &7.C
 &c*3e3*e3333*e333333%333%333333c333c333*333e3333333r   c                 .   dddd} 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 )Nr<   
REGISTEREDsendfile_onlyr?   Fr   r   r   r    r!   r&   r'   rC   r1   s         r   8test_registered_but_wrong_delivery_method_is_not_triggerrK   A   s    &2*C
 &c*3e3*e3333*e333333%333%333333c333c333*333e3333333r   c                 l   d } t        |       }d}||u }|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} t        |       }d}||u }|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}}g d	} t        |       }d}||u }|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}}y )
NFr   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} is %(py7)sr   )r"   py2py4py7zassert %(py9)spy9string)         rC   )@py_assert1@py_assert3@py_assert6r3   @py_format8@py_format10s         r   %test_non_dict_envelope_is_not_triggerrZ   J   s   &*4%d+4u4+u4444+u444444%444%444d444+444u4444444&.8%h/858/58888/5888888%888%888h888/88858888888&/9%i09E90E99990E999999%999%999i9990999E9999999r   c                 .   dddd} 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 )Nr<   rI   r>   )r@   registration_statusrB   Tr   r   r   r    r!   r&   r'   rC   r1   s         r   /test_legacy_registration_status_alias_supportedr]   P   s     +.C
 &c*2d2*d2222*d222222%222%222222c222c222*222d2222222r   c                 	   t        d      } g }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}}|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}}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   }||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}}y ) Nr   queue
is_triggerTr   z%(py1)s is %(py4)sr#   rN   assert %(py6)sr%   enqueuedreason==z%(py1)s == %(py3)sr   r#   r$   assert %(py5)spy5r@   )z%(py1)s == %(py4)srA   rI   rR   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr`   r!   r&   r'   r   )z%(py1)s is %(py3)srecord)r   r   r)   r*   r.   r/   r0   r   r+   r,   r-   rm   )r    r`   rn   @py_assert0rV   r2   @py_format5r5   @py_format4@py_format6r3   r4   r6   s                r   *test_enqueue_normal_callback_pushes_recordrs   Z   s   
0
1CE%c7F,'4'4''''4''''''4'''''''*%%%%%%%%%%%%%%%%%%%(5555555555555555555555555555).I.................../?<?/<????/<???/???<???????u::?:33uu:88v8v8vvr   c                    t        d      } g }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}}g }||k(  }
|
st        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  }	t        t        j                  |	            d x}
}y )Nr9   r_   ra   Fr   rb   rc   rd   r%   re   rf   rg   ri   r	   rj   rk   rl   z%(py0)s == %(py3)sr`   r"   r$   )r   r   r)   r*   r.   r/   r0   r	   r+   r,   r-   r    r`   rn   ro   rV   r2   rp   r5   rq   rr   rU   s              r   (test_enqueue_sendfile_only_does_not_pushrx   g   s   
/
0CE%c7F,(5(5((((5((((((5(((((((*&&&&&&&&&&&&&&&&&&&(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5B;5B55Br   c                    dddd} g }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   }|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}}g }||k(  }
|
st        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  }	t	        t        j
                  |	            d x}
}y )Nr<   r=   r>   r?   r_   re   Fr   rb   rc   rd   r%   rf   rg   ri   r   rj   rk   rl   ru   r`   rv   )
r   r)   r*   r.   r/   r0   r   r+   r,   r-   rw   s              r   )test_enqueue_not_registered_does_not_pushrz   q   s4   &6.C
 E%c7F*&&&&&&&&&&&&&&&&&&&(44444444444444444444444444445B;5B55Br   c                    dddd} g }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   }|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}}g }||k(  }
|
st        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  }	t	        t        j
                  |	            d x}
}y )Nr<   rF   r>   r?   r_   re   Fr   rb   rc   rd   r%   rf   rg   ri   r   rj   rk   rl   ru   r`   rv   )
r   r)   r*   r.   r/   r0   r   r+   r,   r-   rw   s              r   *test_enqueue_register_failed_does_not_pushr|   ~   s4   &7.C
 E%c7F*&&&&&&&&&&&&&&&&&&&(55555555555555555555555555555B;5B55Br   c                    dddd} g }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   }|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 )Nr<   SKIPPED_WITH_EXPLICIT_REASONnoner?   r_   re   Fr   rb   rc   rd   r%   rf   rg   ri   r
   rj   rk   rl   )
r   r)   r*   r.   r/   r0   r
   r+   r,   r-   )
r    r`   rn   ro   rV   r2   rp   r5   rq   rr   s
             r   "test_enqueue_skipped_does_not_pushr      s    &D!C
 E%c7F*&&&&&&&&&&&&&&&&&&&(-~----~---------~---~-------r   c                    t        d g       } | 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}}y )Nr_   ra   Fr   rb   rc   rd   r%   rf   rg   ri   r   rj   rk   rl   )
r   r)   r*   r.   r/   r0   r   r+   r,   r-   )rn   ro   rV   r2   rp   r5   rq   rr   s           r   test_enqueue_invalid_enveloper      s    %d"5F,(5(5((((5((((((5((((((((6666666666666666666666666666r   c                 0   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}}y )Nr   r_   ra   Tr   rb   rc   rd   r%   re   F)r   r   r)   r*   r.   r/   r0   )r    rn   ro   rV   r2   rp   r5   s          r   <test_enqueue_without_queue_returns_record_but_does_not_crashr      s    
0
1C%c6F,'4'4''''4''''''4'''''''*&&&&&&&&&&&&&&&&&&&r   zscenario,expected_trigger))canonical_root_explicitT)canonical_root_missing_defaultT)canonical_root_wrong_absoluteT) relative_paths_resolve_correctlyT)absolute_paths_passthroughT)%cwd_in_autoset_canonical_in_workspaceT)r9   F)r   Tc                   t        |       }t        |      }||u }|s#t        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                  |      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   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} is %(py5)sr   r    expected_trigger)r"   r#   r$   rl   zassert %(py7)srO   r(   )r   r   r    r2   r4   rr   rX   s          r   test_fixture_trigger_matrixr      s     H
C%c*>*.>>>>>*.>>>>>>>%>>>%>>>>>>c>>>c>>>*>>>>>>.>>>>.>>>>>>>>r   )r   str),__doc__
__future__r   builtinsr+   _pytest.assertion.rewrite	assertionrewriter)   r   pathlibr   pytest"utils.anu_collector_action_triggerr   r   r   r   r	   r
   r   r   __file__resolveparentr   r   r7   r:   rD   rG   rK   rZ   r]   rs   rx   rz   r|   r   r   r   markparametrizer    r   r   <module>r      s    #     	 	 	 	N##**)* D
3
4
444:3


	.7' 	??r   