
    jA                    b   d Z ddlmZ ddlZddlmc mZ ddl	Z	e	j                  j                  dd       ddlmZmZmZ ddlmZmZ ddZ G d d	      Z G d
 d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Z G d d      Zy)u   Tests for finish_task_profile_judge.py — 192-cell matrix sampling (min 30 cases).

chair_authorization_id=CHAIR-AUTH-TASK-2706-V36-FINISH-TASK-PROFILE-LAYER-P1B-260529
    )annotationsNz/home/jay/workspace)evaluate_gatescompute_overallSEVERITY)	GATE_KEYSVALID_GRADESc                F    | j                  |i       j                  dd      S )NresultN/A)get)gatesgate_keys     G/home/jay/workspace/tests/harness/test_v36_finish_task_profile_judge.py_grader      s     99Xr"&&x77    c                  0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestG1GitEvidencec                   ddddgdgd}t        d|      }d}t        ||      }d	}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nabc123claude)shaauthorsrc/models/user.pysrc/)commit_info
diff_pathsexpected_pathscodeG1_git_evidencePASS==z9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} == %(py8)sr   r   py0py1py3py5py8assert %(py10)spy10
r   r   
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprAssertionError_format_explanation	selfinputsr   @py_assert2@py_assert4@py_assert7@py_assert6@py_format9@py_format11s	            r   "test_code_g1_pass_with_commit_infoz4TestG1GitEvidence.test_code_g1_pass_with_commit_info   s    #+x@/0%h

 vv..9ve./969/69999/6999999v999v999999e999e999.999/99969999999r   c                r   i }t        d|      }d}t        ||      }d}||v }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )Nr   r   )FAILWARNinz9%(py5)s
{%(py5)s = %(py0)s(%(py1)s, %(py3)s)
} in %(py8)sr   r   r$   r*   r+   r,   r5   s	            r   #test_code_g1_fail_no_commit_no_diffz5TestG1GitEvidence.test_code_g1_fail_no_commit_no_diff(   s    vv..Cve./C3CC/3CCCCC/3CCCCCCCvCCCvCCCCCCeCCCeCCC.CCC/CCC3CCCCCCCCr   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )N	read_onlyr   r   r!   r#   r   r   r$   r*   r+   r,   r6   r   r8   r9   r:   r;   r<   r=   s           r   test_read_only_g1_naz&TestG1GitEvidence.test_read_only_g1_na-   s    {B/.8ve./858/58888/5888888v888v888888e888e888.888/88858888888r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )Ncallback_onlyr   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g1_naz*TestG1GitEvidence.test_callback_only_g1_na1   s    3.8ve./858/58888/5888888v888v888888e888e888.888/88858888888r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )Ncloseout_marker_onlyr   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_closeout_g1_naz%TestG1GitEvidence.test_closeout_g1_na5   s    5r:.8ve./858/58888/5888888v888v888888e888e888.888/88858888888r   c                n   t        di       }d}t        ||      }d}||v }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )Nlocal_runtimer   r    rA   r   rB   rD   r   r   r$   r*   r+   r,   rH   s           r   "test_local_runtime_g1_warn_missingz4TestG1GitEvidence.test_local_runtime_g1_warn_missing9   s    3.Jve./J3JJ/3JJJJJ/3JJJJJJJvJJJvJJJJJJeJJJeJJJ.JJJ/JJJ3JJJJJJJJr   N)	__name__
__module____qualname__r>   rE   rI   rL   rO   rS    r   r   r   r      s"    :D
999Kr   r   c                  *    e Zd Zd Zd Zd Zd Zd Zy)TestG2L1Smokec                |   dddii}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nsmoke_resultstatusr    r   G2_L1_smoker!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g2_pass_smoke_passz*TestG2L1Smoke.test_code_g2_pass_smoke_passD        8V"45vv.*5ve]+5v5+v5555+v555555v555v555555e555e555]555+555v5555555r   c                |   dddii}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr[   r\   r@   r   r]   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g2_fail_smoke_failz*TestG2L1Smoke.test_code_g2_fail_smoke_failI   r_   r   c                |   dddii}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr[   r\   rA   r   r]   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g2_warn_smoke_warnz*TestG2L1Smoke.test_code_g2_warn_smoke_warnN   r_   r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrG   r]   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_read_only_g2_naz"TestG2L1Smoke.test_read_only_g2_naS   s    {B/*4ve]+4u4+u4444+u444444v444v444444e444e444]444+444u4444444r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrK   r]   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g2_naz&TestG2L1Smoke.test_callback_only_g2_naW   s    3*4ve]+4u4+u4444+u444444v444v444444e444e444]444+444u4444444r   N)rT   rU   rV   r^   ra   rc   re   rg   rW   r   r   rY   rY   C   s    6
6
6
55r   rY   c                  6    e Zd Zd Zd Zd Zd Zd Zd Zd Z	y)	TestG3ScopeGuardc                   ddgddgdgd}t        d|      }d}t        ||      }d	}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   ztests/test_user.pyr   tests/scripts/finish-task.shscope_diff_pathsr   forbidden_pathsr   G3_scope_guardr    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g3_pass_clean_scopez.TestG3ScopeGuard.test_code_g3_pass_clean_scopea   s    !57K L%x0 89

 vv.-8ve-.8&8.&8888.&888888v888v888888e888e888-888.888&8888888r   c                   ddgdgdgd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   rl   r   rm   r   rp   ESCALATEr!   r#   r   r   r$   r*   r+   r,   r5   s	            r   $test_code_g3_escalate_forbidden_pathz5TestG3ScopeGuard.test_code_g3_escalate_forbidden_pathj   s    !57O P%h 89

 vv.-<ve-.<*<.*<<<<.*<<<<<<v<<<v<<<<<<e<<<e<<<-<<<.<<<*<<<<<<<r   c                   t        d      D cg c]  }dd|z    d }}dg|z   dgg d}t        d|      }d	}t        ||      }d
}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}x}}y c c}w )N   memory/events/task-  .done.ackedr   r   rm   r   rp   rs   r!   r#   r   r   r$   r*   r+   ranger   r   r-   r.   r/   r0   r1   r2   r3   r4   )r6   iout_of_scoper7   r   r8   r9   r:   r;   r<   r=   s              r   +test_code_g3_escalate_large_scope_violationz<TestG3ScopeGuard.test_code_g3_escalate_large_scope_violations   s    KPQS9Ua-d1fX[AUU!5 6 E%h!

 vv.-<ve-.<*<.*<<<<.*<<<<<<v<<<v<<<<<<e<<<e<<<-<<<.<<<*<<<<<<< Vs   E"c                   ddgt        d      D cg c]  }dd|z    d c}z   }|g dddgd	|d
}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d	x}x}x}}y	c c}w )zASimulates task-2705+3 misfire: session-watchdog.sh in scope diff.zdispatch/__init__.pyzscripts/session-watchdog.sh   rw   rx   ry   )z	dispatch/zscripts/harness/rk   rl   N)rn   r   ro   lock_shamain_diff_pathsr   rp   rs   r!   r#   r   r   r$   r*   r+   rz   )r6   r|   scope_pathsr7   r   r8   r9   r:   r;   r<   r=   s              r   ,test_code_g3_escalate_misfire_with_forbiddenz=TestG3ScopeGuard.test_code_g3_escalate_misfire_with_forbidden~   s
   -/LMJOPR)TQ,T!VHK@TU !,I =?WX*
 vv.-<ve-.<*<.*<<<<.*<<<<<<v<<<v<<<<<<e<<<e<<<-<<<.<<<*<<<<<<< Us   E)c                   ddgddgdgd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nz.claude/hooks/pre_tool_call.pyzsettings.jsonz.claude/hooks/rl   rm   system_hookrp   r    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_system_hook_g3_pass_cleanz/TestG3ScopeGuard.test_system_hook_g3_pass_clean   s    !A? S/A 89

 }f5-8ve-.8&8.&8888.&888888v888v888888e888e888-888.888&8888888r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrG   rp   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_read_only_g3_naz%TestG3ScopeGuard.test_read_only_g3_na   s    {B/-7ve-.7%7.%7777.%777777v777v777777e777e777-777.777%7777777r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrK   rp   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g3_naz)TestG3ScopeGuard.test_callback_only_g3_na   s    3-7ve-.7%7.%7777.%777777v777v777777e777e777-777.777%7777777r   N)
rT   rU   rV   rq   rt   r~   r   r   r   r   rW   r   r   ri   ri   `   s%    9=	==988r   ri   c                  <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestG4DirtyWorkspacec                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   CLEANdirty_countdirty_classificationr   G4_dirty_workspacer    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g4_pass_cleanz,TestG4DirtyWorkspace.test_code_g4_pass_clean   s    !"GDvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )N   	OWN_DIRTYr   r   r   r    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g4_pass_own_dirtyz0TestG4DirtyWorkspace.test_code_g4_pass_own_dirty   s    !"KHvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )N-   INHERITED_DIRTYr   r   r   rA   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   !test_code_g4_warn_inherited_dirtyz6TestG4DirtyWorkspace.test_code_g4_warn_inherited_dirty   s    !#=NOvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            dx}x}x}}y)z0task-2705+3 scenario: 1041 EXTERNAL_DIRTY files.i  EXTERNAL_DIRTYr   r   r   r@   r!   r#   r   r   r$   r*   r+   Nr,   r5   s	            r   &test_code_g4_fail_external_dirty_largez;TestG4DirtyWorkspace.test_code_g4_fail_external_dirty_large   s    !%?OPvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )N   DAEMON_RECURRENCEr   r   r   rA   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   #test_code_g4_warn_daemon_recurrencez8TestG4DirtyWorkspace.test_code_g4_warn_daemon_recurrence   s    !#=PQvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                x   ddd}t        d|      }d}t        ||      }d}||v }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   r   r   rG   r   rR   rB   rD   r   r   r$   r*   r+   r,   r5   s	            r   test_read_only_g4_lenient_smallz4TestG4DirtyWorkspace.test_read_only_g4_lenient_small   s    !"KH{F31Mve12M6MM26MMMMM26MMMMMMMvMMMvMMMMMMeMMMeMMM1MMM2MMM6MMMMMMMMr   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrK   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g4_naz-TestG4DirtyWorkspace.test_callback_only_g4_na       31;ve12;e;2e;;;;2e;;;;;;v;;;v;;;;;;e;;;e;;;1;;;2;;;e;;;;;;;r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrN   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_closeout_g4_naz(TestG4DirtyWorkspace.test_closeout_g4_na   s    5r:1;ve12;e;2e;;;;2e;;;;;;v;;;v;;;;;;e;;;e;;;1;;;2;;;e;;;;;;;r   N)rT   rU   rV   r   r   r   r   r   r   r   r   rW   r   r   r   r      s+    =
=
=
==
N<<r   r   c                  $    e Zd Zd Zd Zd Zd Zy)TestG5QcVerificationc                |   dddii}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )N	qc_resultr\   r    r   G5_qc_verificationr!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g5_pass_qc_passz.TestG5QcVerification.test_code_g5_pass_qc_pass   s    &12vv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                ~   ddddi}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   r@   zpyright error)r\   reasonr   r   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g5_fail_qc_failz.TestG5QcVerification.test_code_g5_fail_qc_fail   s    &OLMvv.1<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                |   dddii}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   r\   r    rG   r   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_read_only_g5_pass_qc_passz3TestG5QcVerification.test_read_only_g5_pass_qc_pass   s    &12{F31<ve12<f<2f<<<<2f<<<<<<v<<<v<<<<<<e<<<e<<<1<<<2<<<f<<<<<<<r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrK   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g5_naz-TestG5QcVerification.test_callback_only_g5_na   r   r   N)rT   rU   rV   r   r   r   r   rW   r   r   r   r      s    =
=
=
<r   r   c                  *    e Zd Zd Zd Zd Zd Zd Zy)TestG6LineagePreservationc                x   ddi}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nlineage_sha_changedFr   G6_lineage_preservationr    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g6_pass_no_changez5TestG6LineagePreservation.test_code_g6_pass_no_change   s    '/vv.6Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                x   ddi}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   Tr   r   r@   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_code_g6_fail_changedz3TestG6LineagePreservation.test_code_g6_fail_changed   s    '.vv.6Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                x   ddi}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   Tr   r   r@   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r    test_system_hook_g6_fail_changedz:TestG6LineagePreservation.test_system_hook_g6_fail_changed   s    '.}f56Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrG   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_read_only_g6_naz.TestG6LineagePreservation.test_read_only_g6_na       {B/6@ve67@5@75@@@@75@@@@@@v@@@v@@@@@@e@@@e@@@6@@@7@@@5@@@@@@@r   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrK   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_callback_only_g6_naz2TestG6LineagePreservation.test_callback_only_g6_na   s    36@ve67@5@75@@@@75@@@@@@v@@@v@@@@@@e@@@e@@@6@@@7@@@5@@@@@@@r   N)rT   rU   rV   r   r   r   r   r   rW   r   r   r   r      s     B
B
B
AAr   r   c                      e Zd Zd Zy)TestG7ActorAttributionc           	        dD ]S  }t        |i       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }t        j                  d	| d
      dz   d|iz  }t        t        j                  |            d x}x}x}}V y )Nr   r   rQ   rG   rK   rN   UNKNOWNG7_actor_attributionrA   r!   r#   r   r   r$   zG7 for mode=z* should be WARN (P1-C not yet implemented)
>assert %(py10)sr+   )r   r   r-   r.   r/   r0   r1   r2   _format_assertmsgr3   r4   )	r6   moder   r8   r9   r:   r;   r<   r=   s	            r   test_all_modes_g7_warnz-TestG7ActorAttribution.test_all_modes_g7_warn  sF   I 	D"4,E!7 6%!78 F 8FB   8F  v     I   v      I    I "8  I 9  I =C    tf$NO     	r   N)rT   rU   rV   r   rW   r   r   r   r     s    r   r   c                  *    e Zd Zd Zd Zd Zd Zd Zy)TestG8CallbackEnforcementc                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )NTi  callback_registeredenvelope_bytesr   G8_callback_enforcementr    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   +test_code_g8_pass_registered_small_envelopezETestG8CallbackEnforcement.test_code_g8_pass_registered_small_envelope      )-Fvv.6Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )NTi  r   r   r   r@   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   $test_code_g8_fail_envelope_too_largez>TestG8CallbackEnforcement.test_code_g8_fail_envelope_too_large  r   r   c                z   ddd}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }dd|iz  }t        t        j                  |            d x}x}x}}y )NTi  r   rK   r   r    r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   test_callback_only_g8_passz4TestG8CallbackEnforcement.test_callback_only_g8_pass  s    )-F76Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                x   ddi}t        d|      }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      d
z  }dd|iz  }t        t        j                  |            d x}x}x}}y )Nr   FrK   r   r@   r!   r#   r   r   r$   r*   r+   r,   r5   s	            r   )test_callback_only_g8_fail_not_registeredzCTestG8CallbackEnforcement.test_callback_only_g8_fail_not_registered$  s    '/76Ave67A6A76AAAA76AAAAAAvAAAvAAAAAAeAAAeAAA6AAA7AAA6AAAAAAAr   c                p   t        di       }d}t        ||      }d}||k(  }|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                  |      t        j                  |      t        j                  |      dz  }d	d
|iz  }t        t        j                  |            d x}x}x}}y )NrG   r   r   r!   r#   r   r   r$   r*   r+   r,   rH   s           r   test_read_only_g8_naz.TestG8CallbackEnforcement.test_read_only_g8_na)  r   r   N)rT   rU   rV   r   r   r   r   r   rW   r   r   r   r     s     B
B
B
B
Ar   r   c                  <    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
y	)
TestComputeOverallc                   t         D ci c]	  }|dddd }}t        |      \  }}d}||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 c c}w )
Nr     r
   evidence	rationaler!   z%(py0)s == %(py3)sr
   r%   r'   assert %(py5)sr(   
r   r   r-   r.   r/   r0   r1   r2   r3   r4   	r6   gkr   r
   _r8   @py_assert1@py_format4@py_format6s	            r   test_all_pass_overall_passz-TestComputeOverall.test_all_pass_overall_pass3  s      
 6rCC
 
 $E*	vvvv
   Cc                   t         D ci c]	  }|dddd }}d|d   d<   t        |      \  }}d}||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 c c}w )Nr    r   r   rA   r   r
   r!   r   r   r   r(   r   r   s	            r   test_one_warn_overall_warnz-TestComputeOverall.test_one_warn_overall_warn;  s      
 6rCC
 
 17"#H-#E*	vvvv
   Cc                   t         D ci c]	  }|dddd }}d|d   d<   t        |      \  }}d}||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 c c}w )Nr    r   r   r@   rp   r
   r!   r   r   r   r(   r   r   s	            r   test_one_fail_overall_failz-TestComputeOverall.test_one_fail_overall_failD  s      
 6rCC
 
 -3)#E*	vvvv
r   c                   t         D ci c]	  }|dddd }}d|d   d<   t        |      \  }}d}||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 c c}w )NrA   r   r   rs   rp   r
   r!   r   r   r   r(   r   r   s	            r   "test_one_escalate_overall_escalatez5TestComputeOverall.test_one_escalate_overall_escalateM        
 6rCC
 
 -7)#E*	##v####v######v###v##########
r   c                   t         D ci c]	  }|dddd }}d|d   d<   t        |      \  }}d}||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 c c}w )Nr@   r   r   rs   rp   r
   r!   r   r   r   r(   r   r   s	            r   test_escalate_beats_failz+TestComputeOverall.test_escalate_beats_failV  r   r   c                   t         D ci c]	  }|dddd }}t        |      \  }}d}||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 c c}w )Nr   r   r   r    r!   r   r
   r   r   r(   r   r   s	            r   test_all_na_defaults_passz,TestComputeOverall.test_all_na_defaults_pass_  s      
 5brBB
 
 $E*	vvvv
r   c                   t         D ci c]	  }|dddd }}d|d   d<   d|d   d<   t        |      \  }}d}||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 c c}w )Nr    r   r   rA   r   r
   r@   r   r!   r   r   r   r(   r   r   s	            r   !test_mixed_fail_warn_overall_failz4TestComputeOverall.test_mixed_fail_warn_overall_failg  s    S\]RBRHH]]06"#H-5;'(2#E*	vvvv	 ^s   Cc                r   t        ddi      \  }}h d}||v }|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 )
Nbaddata>   r@   r    rA   rs   rB   )z%(py0)s in %(py3)sr
   r   r   r(   )	r   r-   r.   r/   r0   r1   r2   r3   r4   )r6   r
   r   r8   r   r   r   s          r   test_safe_fail_does_not_raisez0TestComputeOverall.test_safe_fail_does_not_raisen  sp    #UFO4	==v=====v=======v===v===========r   N)rT   rU   rV   r   r   r   r   r   r   r  r  rW   r   r   r   r   2  s*       $$  >r   r   c                  *    e Zd Zd Zd Zd Zd Zd Zy)TestEvaluateGatesSafeFailc                L   dD ]  }t        |i       }t        |t              }|sd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                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }|j                  } |       }t        |      }t        t              }||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                  |      t        j                  |      d	t        j                         v st        j                  t              rt        j                  t              nd	d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      dz  }
dd|
iz  }t        t        j                  |            d x}x}x}x}	}! y )Nr   5assert %(py4)s
{%(py4)s = %(py0)s(%(py1)s, %(py2)s)
}
isinstancer   dictr%   r&   py2py4r!   z%(py7)s
{%(py7)s = %(py0)s(%(py5)s
{%(py5)s = %(py3)s
{%(py3)s = %(py1)s.keys
}()
})
} == %(py12)s
{%(py12)s = %(py9)s(%(py10)s)
}setr   r%   r&   r'   r(   py7py9r+   py12assert %(py14)spy14r   r  r  r/   r0   r-   r1   r2   r3   r4   keysr  r   r.   )r6   r   r   @py_assert3@py_format5r8   r9   r;   @py_assert11@py_assert8@py_format13@py_format15s               r    test_does_not_raise_empty_inputsz:TestEvaluateGatesSafeFail.test_does_not_raise_empty_inputsy  s   I 	7D"4,EeT********:***:******e***e******T***T**********zz6z|63|$6I6$6666$66666636663666666u666u666z666|666$666666666666666I666I66666666666		7r   c                \   t        di       }t        |t              }|sd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                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }y )Nr   r
  r  r   r  r  )
r   r  r  r/   r0   r-   r1   r2   r3   r4   )r6   r   r  r  s       r   "test_unknown_mode_returns_na_gatesz<TestEvaluateGatesSafeFail.test_unknown_mode_returns_na_gates  s    y"-%&&&&&&&&z&&&z&&&&&&%&&&%&&&&&&&&&&&&&&&&&&&r   c                :   t        di       }t        |t              }|sd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                  t              rt        j                  t              ndt        j                  |      dz  }t        t        j                  |            d }|j                  } |       }t        |      }t        t              }||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                  |      t        j                  |      d	t        j                         v st        j                  t              rt        j                  t              nd	d
t        j                         v st        j                  t              rt        j                  t              nd
t        j                  |      dz  }	dd|	iz  }
t        t        j                  |
            d x}x}x}x}}y )Ntotally_invalid_mode_xyzr
  r  r   r  r  r!   r  r  r   r  r  r  r  )r6   r   r  r  r8   r9   r;   r  r  r  r  s              r   'test_invalid_mode_falls_back_to_unknownzATestEvaluateGatesSafeFail.test_invalid_mode_falls_back_to_unknown  s   92>%&&&&&&&&z&&&z&&&&&&%&&&%&&&&&&&&&&&&&&&&&&&::2:<2s< 2C	N2 N2222 N222222s222s22222252225222:222<222 222222C222C222222	222	222N22222222r   c                Z   ddidgdgg ddddiddid	d
dd}dD ]  }t        ||      }|j                         D ]l  \  }}|j                  }d} ||      }|t        v }	|	s=t	        j
                  d|	fd|t        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                  t              rt	        j                  t              nddz  }
t	        j                  d| d| d|j                  d      d      dz   d|
iz  }t        t	        j                  |            d x}x}x}}	o  y )Nr   abczsrc/x.pyr   
   r   r\   r    FTi  )r   rn   r   ro   r   r   r[   r   r   r   r   )r   r   rQ   rG   rK   rN   r
   rB   )zI%(py6)s
{%(py6)s = %(py2)s
{%(py2)s = %(py0)s.get
}(%(py4)s)
} in %(py8)sgvalr   )r%   r  r  py6r)   zmode=z gate=z result=z not in VALID_GRADESr   r+   )r   itemsr   r   r-   r.   r/   r0   r1   r2   r   r3   r4   )r6   r7   r   r   r   r)  r   r  @py_assert5r:   r<   r=   s               r   $test_gate_results_always_valid_gradez>TestEvaluateGatesSafeFail.test_gate_results_always_valid_grade  s   !5>!+%h!$/%v."F+#(#'"
> 	D"40E!KKM Dxx  x) )\9    )\  6     	   	    	 !)  	 *  6   .:  	 .:     D6t8DHHX4F3II]^     	r   c                \   t         d   }t         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   }t         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   }t         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
   }t         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    rA   )<)z%(py1)s < %(py4)s)r&   r  zassert %(py6)sr*  r@   rs   r   )r   r-   r.   r2   r3   r4   )r6   @py_assert0r  r8   r  @py_format7s         r   !test_severity_ordering_consistentz;TestEvaluateGatesSafeFail.test_severity_ordering_consistent  sf   2(6"22"22222"2222222"222222222(6"22"22222"2222222"222222226(:"66"66666"6666666"666666661&!11!11111!1111111!11111111r   N)rT   rU   rV   r   r"  r%  r-  r2  rW   r   r   r  r  x  s    7'3
,2r   r  )r   r  r   strreturnr3  )__doc__
__future__r   builtinsr/   _pytest.assertion.rewrite	assertionrewriter-   syspathinsert-scripts.harness.v36.finish_task_profile_judger   r   r   .scripts.harness.v36.finish_task_profile_schemar   r   r   r   rY   ri   r   r   r   r   r   r   r  rW   r   r   <module>r@     s    #   
 ( ) 
 S8K KJ5 5:;8 ;8D'< '<\< <2A A: A A<?> ?>L+2 +2r   