
    Rh/                        d dl Z d dlZd dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
 ddlmZmZmZmZmZmZ  G d d      Z ej&                  dd	       G d
 d             Z ej&                  dd	       G d d             Z ej&                  dd	       G d d             Z ej&                  dd	       G d de             Z G d dej0                        Zdeeef   deeeef   z  fdZy)    N)Any)support   )StrPathStrJSON	TestTuple
TestFilterFilterTuple
FilterDictc                       e Zd ZdZdZdZy)JsonFileTypeUNIX_FDWINDOWS_HANDLESTDOUTN)__name__
__module____qualname__r   r   r        0/usr/lib/python3.12/test/libregrtest/runtests.pyr   r      s    G%NFr   r   T)slotsfrozenc                   d    e Zd ZU edz  ed<   eed<   deddfdZej                  d        Z
d	dZy)
JsonFileNfile	file_typepopen_kwargsreturnc                     | j                   xt        j                  k(  r | j                  g|d<   y t        j                  k(  r.t        j                         }d| j                  gi|_        ||d<   y y )Npass_fdshandle_liststartupinfo)r   r   r   r   r   
subprocessSTARTUPINFOlpAttributeList)selfr   r"   s      r   configure_subprocesszJsonFile.configure_subprocess   s_    nn%%%,0II;Z(,, )446/<tyyk.J+.9]+ -r   c              #   $  K   | j                   t        j                  k(  rFt        j                  | j
                  d       	 d  t        j                  | j
                  d       y d  y # t        j                  | j
                  d       w xY ww)NTF)r   r   r   osset_handle_inheritabler   r&   s    r   inherit_subprocesszJsonFile.inherit_subprocess+   sb     >>\888%%dii6<))$))U; ))$))U;s   >BA+ &B+"BBc                   | j                   t        j                  k(  rt        d      | j                  }| j                   t        j
                  k(  r$dd l}|j                  |t        j                        }t        |||      S )Nz)for STDOUT file type, just use sys.stdoutr   )encoding)r   r   r   
ValueErrorr   r   msvcrtopen_osfhandler)   O_WRONLYopen)r&   moder.   r   r0   s        r   r3   zJsonFile.open6   sc    >>\000HIIyy>>\888((r{{;DD$22r   )r)r   r   r   int__annotations__strdictr'   
contextlibcontextmanagerr,   r3   r   r   r   r   r      sE     *N
: 
:$ 
:  	3r   r   c                   >    e Zd ZU eed<   eed<   eed<   dee   fdZy)HuntRefleakwarmupsrunsfilenamer   c                 >    d| j                    d| j                   dgS )Nz-R:)r>   r?   r+   s    r   bisect_cmd_argszHuntRefleak.bisect_cmd_argsH   s$     a		{!455r   N)	r   r   r   r6   r7   r   listr8   rC   r   r   r   r=   r=   B   s"    L
I6c 6r   r=   c                      e Zd ZU eed<   eed<   eed<   eed<   edz  ed<   eed<   eed<   eed	<   eed
<   eed<   edz  ed<   e	ed<   eed<   e
dz  ed<   edz  ed<   eed<   edz  ed<   e	dz  ed<   eedf   ed<   eedf   dz  ed<   eed<   e	ez  ed<   d"dZd Zdedz  fdZd Zd ZdefdZdee   fd Zdee   fd!Zy)#RunTeststests	fail_fastfail_env_changedmatch_testsNmatch_tests_dictrerunforeverpgopgo_extendedoutput_on_failuretimeoutverbosequiethunt_refleaktest_dir	use_junitmemory_limitgc_threshold.use_resources
python_cmd	randomizerandom_seedr   c                 d    t        j                  |       }|j                  |       t        di |S Nr   )dataclassesasdictupdaterF   r&   overridestates      r   copyzRunTests.copyg   s,    ""4(X %  r   c                 d    t        j                  |       }|j                  |       t        di |S r^   )r_   r`   ra   WorkerRunTestsrb   s      r   create_worker_runtestszRunTests.create_worker_runtestsl   s,    ""4(X&&&r   c                 T    | j                   | j                   j                  |d       S y N)rK   get)r&   	test_names     r   get_match_testszRunTests.get_match_testsq   s*      ,((,,Y==r   c                 F    | j                   ry t        | j                        S rj   )rM   lenrG   r+   s    r   get_jobszRunTests.get_jobsw   s     <<4::r   c              #      K   | j                   r	 | j                  E d {    | j                  E d {    y 7 7 wrj   )rM   rG   r+   s    r   
iter_testszRunTests.iter_tests~   s:     <<::%%  zz!! &!s   >:><>>c                 t    t        | j                        xs" t        j                  xs t        j                  S rj   )boolrZ   r   is_emscriptenis_wasir+   s    r   json_file_use_stdoutzRunTests.json_file_use_stdout   s/     ! $$	
r   c                     t        j                         }| j                  "| j                  }|D cg c]
  }|dk7  s	| }}nt        j                  f}g ||}d|vr|j                  d       |S c c}w )Nz-E-u)r   args_from_interpreter_flagsrZ   sys
executableappend)r&   python_optsr|   optcmds        r   create_python_cmdzRunTests.create_python_cmd   sx    99;??&J +6E33EKE..*J)
)[){"JJt
 Fs
   
A1A1c                    g }| j                   r|j                  d       | j                  r|j                  d       | j                  r|j                  d| j                          | j                  )|j                  | j                  j                                | j                  r|j                  d| j                  f       | j                  r|j                  d| j                  f       | j                  r|j                  d| j                          | j                  r,|j                  ddj                  | j                        f       | j                  r2t        j                  | j                        }|j                  d	|f       | j                  r|j                  d
       |j                  d| j                          |S )Nz
--failfastz--fail-env-changedz
--timeout=z	--testdirz
--memlimitz--threshold=ry   ,z--pythonz--randomizez--randseed=)rH   r}   rI   rQ   rT   extendrC   rU   rW   rX   rY   joinrZ   shlexr[   r\   )r&   argsr   s      r   rC   zRunTests.bisect_cmd_args   sY   >>KK%  KK,-<<KK*T\\N34(KK))99;<==KKdmm45KKt'8'89:KK,t'8'8&9:;KKsxx(:(:;<=??**T__-CKKS)*>>KK+'k$"2"2!345r   )r   rF   )r   r   r   r   r7   rt   r	   r   floatr6   r=   r   r8   tuplere   rh   r
   rm   rp   rr   rw   rD   r   rC   r   r   r   rF   rF   N   s   O 4''KM	IT\LK$$nO**c?"c3h$&&Os!
'
K$,> "
d 
49 c r   rF   c                   >    e Zd ZU eed<   defdZededd fd       Zy)rg   	json_filer   c                 8    t        j                  | t              S )N)cls)jsondumps_EncodeRunTestsr+   s    r   as_jsonzWorkerRunTests.as_json   s    zz$O44r   worker_jsonc                 8    t        j                  | t              S )N)object_hook)r   loads_decode_runtests)r   s    r   	from_jsonzWorkerRunTests.from_json   s    zz+3CDDr   N)	r   r   r   r   r7   r   r   staticmethodr   r   r   r   rg   rg      s;    5 5 Ew E+; E Er   rg   c                   2     e Zd Zdedeeef   f fdZ xZS )r   or   c                 z    t        |t              rt        j                  |      }d|d<   |S t        |   |      S )NT__runtests__)
isinstancerg   r_   r`   superdefault)r&   r   result	__class__s      r   r   z_EncodeRunTests.default   s;    a( ''*F%)F>"M7?1%%r   )r   r   r   r   r9   r8   r   __classcell__)r   s   @r   r   r      s#    & &c3h & &r   r   datar   c                     d| v rH| j                  d       | d   rt        di | d   | d<   | d   rt        di | d   | d<   t        di | S | S )Nr   rT   r   r   )popr=   r   rg   )r   s    r   r   r      sg     #.#Fn1E#FD  ( =4+< =D%%%r   )r:   r_   r   r)   r   r#   r{   typingr   testr   utilsr   r   r   r	   r
   r   r   	dataclassr   r=   rF   rg   JSONEncoderr   r9   r8   r   r   r   r   <module>r      s      	   
  F F  T$/(3 (3 0(3V T$/6 6 06 T$/j j 0jZ T$/EX E 0E&d&& &	4S> 	hc3h.G 	r   