
    )Wi                        d Z ddlZddlmc mZ ddlZddlZddl	m
Z
 ddlZej                  j                  d e e
e      j!                         j"                  d   dz               ej$                  d        Zd Zd Zd	 Zy)
uN   tests/dev7/test_post_merge_probe.py — post-merge health probe (task-2367 P1)    N)Path   scriptsc                 f   | dz  dz  j                  d       | dz  dz  j                  d       | dz  j                  d       |j                  dt        |              dd l}|j                  j                  d	t        t        t              j                         j                  d
   dz  dz              }g }d }||u}|}|r|j                  }d }	||	u}
|
}|slt        j                  d|fd||f      dt        j                         v st        j                  |      rt        j                   |      ndt        j                   |      dz  }dd|iz  }|j#                  |       |rt        j                  d
fd	f      dt        j                         v st        j                  |      rt        j                   |      ndt        j                   |      t        j                   |	      dz  }dd|iz  }|j#                  |       t        j$                  |d      i z  }dd|iz  }t'        t        j(                  |            d x}x}x}x}x}x}
}	|j                  j+                  |      }|j                  j-                  |       | |_        | dz  dz  dz  |_        | dz  dz  |_        | |fS )NmemoryeventsT)parentsauditlogsWORKSPACE_ROOTr   post_merge_prober   r   zpost_merge_probe.py)is not)z%(py2)s is not %(py5)sspec)py2py5z%(py7)spy7)z5%(py11)s
{%(py11)s = %(py9)s.loader
} is not %(py14)s)py9py11py14z%(py16)spy16zassert %(py19)spy19auto-merge.log)mkdirsetenvstrimportlib.utilutilspec_from_file_locationr   __file__resolver	   loader
@pytest_ar_call_reprcompare@py_builtinslocals_should_repr_global_name	_safereprappend_format_boolopAssertionError_format_explanationmodule_from_specexec_module	WORKSPACE	AUDIT_LOGPROBE_MARK_DIR)tmp_pathmonkeypatch	importlibr   @py_assert1@py_assert4@py_assert3@py_assert0@py_assert10@py_assert13@py_assert12@py_format6@py_format8@py_format15@py_format17@py_format18@py_format20pmps                     7/home/jay/workspace/tests/dev7/test_post_merge_probe.pyprobe_workspacerC      s   8#**4*87"))$)7d+'X7>>11DN""$,,Q/);>SSTD 8t74t77474 777774t77777747774777t77777774777777777777777477777777777777
..
)
)$
/CKKC CMx''14DDCM!H,x7CS=    c                 V   | \  }}|dz  }|j                          |j                  dd|d      }|d   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }	dd|	iz  }
t        t        j                  |
            dx}x}}|d   d   }d}||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   }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z  dz  dz  }|j                  } |       }|sddt        j                         v st        j                  |      rt        j                  |      ndt        j                  |      t        j                  |      dz  }	t        t        j                  |	            dx}}|j                         j                         j                  d      }t        j                  |d         }|d   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }	dd|	iz  }
t        t        j                  |
            dx}x}}|d   }d}||k(  }|slt        j                  d|fd	||f      t        j                  |      t        j                  |      d
z  }	dd|	iz  }
t        t        j                  |
            dx}x}}y)u.   build/test 모두 PASS — outcome=probe_pass.empty_projectztask-test-passabc123r   delayoutcome
probe_pass==z%(py1)s == %(py4)spy1py4assert %(py6)spy6Nprobebuild_okTisz%(py1)s is %(py4)stest_okr   r
   r   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}log)py0r   rQ   
task_id)r   	run_prober"   r#   r'   r*   r+   existsr$   r%   r&   	read_textstripsplitjsonloads)rC   r1   	workspacerA   projectresultr7   r6   @py_assert2@py_format5@py_format7rZ   r4   linesrecords                  rB   test_probe_passrm       sz   $NIs(GMMO]]+Xwa]HF),,,,,,,,,,,,,,,,,,,'?:&.$.&$....&$...&...$.......'?9%--%----%---%---------- h

(+;
;C:::<<33:<MMO!!#))$/EZZa!F)0 00 00000 0000000 00000000),,,,,,,,,,,,,,,,,,,rD   c                    | \  }}|dz  }|j                          |dz  dz  dz  }|j                  d       |j                  dd|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)u7   이미 probe-done 마크가 있으면 재실행 스킵.p2r   r   ztask-test-idem.probe-donez{}ztask-test-idemabcr   rH   statusalready_runrL   rN   rO   rR   rS   N)r   
write_textr^   r"   r#   r'   r*   r+   )rC   r1   re   rA   rf   markrg   r7   r6   rh   ri   rj   s               rB   test_probe_idempotentru   5   s    $NIsoGMMOx(*-HHDOOD]]+UG1]EF(,},},,,,},,,,,,},,,,,,,rD   c                  	   | \  }}|dz  }|j                          |j                  |dd        |j                  |dd        |j                  |dd        g  G fdd	      }|j                  |j                  d
|       |j                  dd|d      }|d   }d}	||	k(  }
|
slt	        j
                  d|
fd||	f      t	        j                  |      t	        j                  |	      dz  }dd|iz  }t        t	        j                  |            dx}x}
}	|d   d   }d}	||	u }
|
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#}d$}	|	j                  }d   } ||      }||v }
|
st	        j
                  d%|
fd&||f      t	        j                  |      t	        j                  |	      t	        j                  |      t	        j                  |      t	        j                  |      d'z  }d(d)|iz  }t        t	        j                  |            dx}x}
x}	x}x}}d*}d   }	||	v }
|
slt	        j
                  d%|
fd+||	f      t	        j                  |      t	        j                  |	      dz  }dd|iz  }t        t	        j                  |            dx}x}
}	d}d   }	||	v }
|
slt	        j
                  d%|
fd+||	f      t	        j                  |      t	        j                  |	      dz  }dd|iz  }t        t	        j                  |            dx}x}
}	y),u)   build FAIL 시 auto_revert 호출 시도.broken_project
_run_buildc                      y)N)Fzfake build error )_ps    rB   <lambda>z1test_probe_fail_triggers_revert.<locals>.<lambda>F       rD   _run_tests_scopedc                      y)N)Tokrz   )r{   _tps     rB   r|   z1test_probe_fail_triggers_revert.<locals>.<lambda>H   r}   rD   _changed_pathsc                     g S Nrz   )r{   _shas     rB   r|   z1test_probe_fail_triggers_revert.<locals>.<lambda>J   s     rD   c                       e Zd Z fdZy)3test_probe_fail_triggers_revert.<locals>._MockPopenc                 (    j                  |       y r   )r(   )selfargs_kwcallss      rB   __init__z<test_probe_fail_triggers_revert.<locals>._MockPopen.__init__N   s    LLrD   N)__name__
__module____qualname__r   )r   s   rB   
_MockPopenr   M   s    	rD   r   Popenztask-test-faildeadbeefr   rH   rJ   
probe_failrL   rN   rO   rR   rS   NrT   rU   FrV   rX      )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)slenr   )r[   rP   py3rS   zassert %(py8)spy8zauto_revert.py )in)zL%(py1)s in %(py10)s
{%(py10)s = %(py6)s
{%(py6)s = %(py4)s.join
}(%(py8)s)
})rP   rQ   rS   r   py10zassert %(py12)spy12z	--task-id)z%(py1)s in %(py4)s)r   setattr
subprocessr^   r"   r#   r'   r*   r+   r   r$   r%   r&   join)rC   r1   r2   _rA   rf   r   rg   r7   r6   rh   ri   rj   @py_assert5r5   @py_format9@py_assert7@py_assert9@py_format11@py_format13r   s                       @rB   test_probe_fail_triggers_revertr   A   s   FAs))GMMO\+QR02NO-/BCE  <]]+Z]JF),,,,,,,,,,,,,,,,,,,'?:&/%/&%////&%///&///%///////u::?:33uu:1s1sxx1a1x11111111111111s111x111111111111111"%(";("""";(""";"""("""""""'uQx'x''''x''''''x'''''''rD   )__doc__builtinsr$   _pytest.assertion.rewrite	assertionrewriter"   rc   syspathlibr   pytestpathinsertr   r   r    r	   fixturerC   rm   ru   r   rz   rD   rB   <module>r      ss    T    
   3tH~--/77:YFG H  &-*	-(rD   