o
    IXh                      @   s8  d dl Z d dlmZ d dlm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Zd dlZd dl mZ ejddgdZejddgdZd	d
 Zdd ZG dd dZG dd dee jZe edG dd dee jZG dd dZG dd dee jZe edG dd dee jZedkre   dS dS )    N)support)import_helper)mockuuid_uuid)Zblocked)Zfreshc                 C   s   zt |  W dS    Y dS )NTF)
__import__)name r	   8/opt/python-3.10.19/usr/lib/python3.10/test/test_uuid.py
importable   s
   r   c                    s    fdd}|S )Nc                    s   t   S N)ioBytesIOencode)commandargsdatar	   r
   get_command_stdout      z3mock_get_command_stdout.<locals>.get_command_stdoutr	   )r   r   r	   r   r
   mock_get_command_stdout   s   r   c                   @   s&  e Zd ZdZdd Zdd Zdd Zdd	 Zd
d Zdd Z	dd Z
eddeejdkddd Zejdd Zeejdkddd Zeejdkddd Zeejdkddd Zeejdkddd Zd d! Zd"d# Zd$d% Zd&d' Zeeed(d)d*d+ Zd,d- ZdS ).BaseTestUUIDNc                 C   st  | j }g }dddddddddd| jjd fdd	d
ddddddd| jjd fdddddddddd| jjdfdddd d!d"d#d$d%d&| jjd fd'd(d)d*d+d,d-d.d/d0| jjd1fd2d3d4d5d6d7d8d9d:d0| jjd1fd;d<d=d>d?d@dAdBdCd0| jjd1fdDdEdFdGdHdIdJdKdLd0| jjd1fdMdNdOdPdQdRdSdTdUdV| jjd1fdWdXdYdZd[d\d]d^d_d`| jjdfdadbdcdddedfdgdhdidj| jjdkfdldmdndodpdqdrdsdtdu| jjd1fdvdwdxdydzd{d|d}d~d| jjd fdddddddddd| jjd ffD ]\}}}}}}}	}
}}}}g }| j|| j|| j|| jj|d| jj|d| jj|d| jj|	d| j|
fD ]}|t|| |t||	 ||j| ||j	| ||j
| ||j|d  ||j|d1  ||j|d  ||j|d  ||j|dk  ||j|d  ||j| ||j|	 ||j|
 ||j| ||j| ||j| ||j| || q|D ]}|D ]}||| qq|t|jtj |t|j	tj || qtt|D ][}tt|D ]Q}|||k || || k  |||k|| || k |||k|| || k |||k|| || k |||k|| || k |||k|| || k qѐq|d d  }|  |  ||| d S )Nz$00000000-0000-0000-0000-000000000000z&{00000000-0000-0000-0000-000000000000} 00000000000000000000000000000000                   r   r   r   r   r   r   r   z-urn:uuid:00000000-0000-0000-0000-000000000000z$00010203-0405-0607-0809-0a0b0c0d0e0fz&{00010203-0405-0607-0809-0a0b0c0d0e0f}Z 000102030405060708090a0b0c0d0e0fs    	
s    	
)i i  i     	   l   ,(l   ,(H@p`   z-urn:uuid:00010203-0405-0607-0809-0a0b0c0d0e0fl    80i	  z$02d9e6d5-9467-382e-8f9b-9300a64ac3cdz&{02d9e6d5-9467-382e-8f9b-9300a64ac3cd}Z 02d9e6d59467382e8f9b9300a64ac3cds   Քg8. Js   g.8 J)iig  i.8        l   CLL l	   CLL|e5l z-urn:uuid:02d9e6d5-9467-382e-8f9b-9300a64ac3cdl   fQtAi     z$12345678-1234-5678-1234-567812345678z&{12345678-1234-5678-1234-567812345678}Z 12345678123456781234567812345678s   4Vx4Vx4Vx4Vxs   xV44xV4Vx4Vx)ixV44  ixV     4   l   xVh$Y l	   xVh$YgF+ z-urn:uuid:12345678-1234-5678-1234-567812345678l   xVh$H3r    z$6ba7b810-9dad-11d1-80b4-00c04fd430c8z&{6ba7b810-9dad-11d1-80b4-00c04fd430c8}Z 6ba7b8109dad11d180b400c04fd430c8s   kр O0s   k O0)ik魝             0l	   05'Sk z-urn:uuid:6ba7b810-9dad-11d1-80b4-00c04fd430c8l   8OWvr&      z$6ba7b811-9dad-11d1-80b4-00c04fd430c8z&{6ba7b811-9dad-11d1-80b4-00c04fd430c8}Z 6ba7b8119dad11d180b400c04fd430c8s   kр O0s   k O0)ikr#   r$   r%   r&   r'   l	   05gSk z-urn:uuid:6ba7b811-9dad-11d1-80b4-00c04fd430c8l   8OWvz$6ba7b812-9dad-11d1-80b4-00c04fd430c8z&{6ba7b812-9dad-11d1-80b4-00c04fd430c8}Z 6ba7b8129dad11d180b400c04fd430c8s   kр O0s   k O0)ikr#   r$   r%   r&   r'   l	   05Sk z-urn:uuid:6ba7b812-9dad-11d1-80b4-00c04fd430c8l   8OWvz$6ba7b814-9dad-11d1-80b4-00c04fd430c8z&{6ba7b814-9dad-11d1-80b4-00c04fd430c8}Z 6ba7b8149dad11d180b400c04fd430c8s   kр O0s   k O0)ikr#   r$   r%   r&   r'   l	   05'Sk z-urn:uuid:6ba7b814-9dad-11d1-80b4-00c04fd430c8l   8OWvz$7d444840-9dc0-11d1-b245-5ffdce74fad2z&{7d444840-9dc0-11d1-b245-5ffdce74fad2}Z 7d4448409dc011d1b2455ffdce74fad2s   }DH@ѲE_ts   @HD}E_t)i@HD}i  r$      E   l   z l	   z*8'$"} z-urn:uuid:7d444840-9dc0-11d1-b245-5ffdce74fad2l   @HzwiE2  z$e902893a-9d22-3c7e-a7b8-d6e313b71d9fz&{e902893a-9d22-3c7e-a7b8-d6e313b71d9f}Z e902893a9d223c7ea7b8d6e313b71d9fs   :"<~s   :"~<)l   :	R i"  i~<        l   n'[ l	   n'[=GG$ND z-urn:uuid:e902893a-9d22-3c7e-a7b8-d6e313b71d9fl   :	Rtci'  z$eb424026-6f54-4ef8-a4d0-bb658a1fc6cfz&{eb424026-6f54-4ef8-a4d0-bb658a1fc6cf}Z eb4240266f544ef8a4d0bb658a1fc6cfs   B@&oTNлes   &@BToNлe)l   &@V iTo  iN        l   F?m l	   F?m&oj	 ! z-urn:uuid:eb424026-6f54-4ef8-a4d0-bb658a1fc6cfl   &@VS=wi$     z$f81d4fae-7dec-11d0-a765-00a0c91e6bf6z&{f81d4fae-7dec-11d0-a765-00a0c91e6bf6}Z f81d4fae7dec11d0a76500a0c91e6bf6s   O}Чe ks   O}e k)l   O:p i}  i  r+   e   l   k<l	   k<(;
=k z-urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6l   O:pwie'  z$fffefdfc-fffe-fffe-fffe-fffefdfcfbfaz&{fffefdfc-fffe-fffe-fffe-fffefdfcfbfa}Z fffefdfcfffefffefffefffefdfcfbfas   s   )l   }   r1         l   {{ l	   {{?~ z-urn:uuid:fffefdfc-fffe-fffe-fffe-fffefdfcfbfal   }i?  z$ffffffff-ffff-ffff-ffff-ffffffffffffz&{ffffffff-ffff-ffff-ffff-ffffffffffff}Z ffffffffffffffffffffffffffffffffs   )l      r4   r2   r2       l	    z-urn:uuid:ffffffff-ffff-ffff-ffff-ffffffffffffl   ?  bytesbytes_lefieldsint      )assertEqualr   ZRESERVED_NCSRFC_4122ZRESERVED_FUTUREUUIDstrr>   r8   r:   r<   time_lowtime_midtime_hi_versionclock_seq_hi_variantclock_seq_lownodehexurntime	clock_seqvariantversionappendtypebuiltinsrangelenreversesort)selfequalZ	ascendingstringZcurlyrK   r8   r:   r<   ZintegerrL   rM   rN   rO   rP   ZequivalentsuvijZresortedr	   r	   r
   	test_UUID"   s~  													 
	zBaseTestUUID.test_UUIDc              	      s~  fdd}fdd}|fdd |fdd |fdd |fdd |fdd |fd	d |fd
d |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fdd |fd d |fd!d d"\j  j jd# j jd$ j jd% j jd& j jd' |fd(d |fd)d |fd*d |fd+d |fd,d g d-fgfD ]\}g d.fgfD ]Q}g d/fgfD ]F}g d0fgfD ];}g d1fgfD ]0}t|| | | |  t d2kr| fd3d t d4kr| fd5d qqqwqnqej |fd6d |fd7d |fd8d |fd9d |fd:d |fd;d |fd<d |fd=d |fd>d |fd?d |fd@d |fdAd |fdBd |fdCd d S )DNc                         t| S r   )assertRaises
ValueErrorfrX   r	   r
   <lambda>       z.BaseTestUUID.test_exceptions.<locals>.<lambda>c                    r`   r   )ra   	TypeErrorrc   re   r	   r
   rf      rg   c                          j dS )N r   rC   r	   re   r	   r
   rf      rg   c                      ri   )Nabcrk   r	   re   r	   r
   rf      rg   c                      ri   )NZ1234567812345678123456781234567rk   r	   re   r	   r
   rf      rg   c                      ri   )NZ!123456781234567812345678123456789rk   r	   re   r	   r
   rf      rg   c                      ri   )NZ 123456781234567812345678z2345678rk   r	   re   r	   r
   rf      rg   c                          j jddS )Nrl   r7   rk   r	   re   r	   r
   rf          c                      rm   )N               r7   rk   r	   re   r	   r
   rf      rn   c                      rm   )N                 r7   rk   r	   re   r	   r
   rf      rn   c                      rm   )Nrl   r9   rk   r	   re   r	   r
   rf      rn   c                      rm   )Nro   r9   rk   r	   re   r	   r
   rf      rn   c                      rm   )Nrp   r9   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r(   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r(   r?   r   r/   r@   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r(   r?   r   r/   r@         r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)l        r   r   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   rs   r   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r      r   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   rs   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   rt   r   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r   rs   r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r      r   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r   r   rs   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r   r   ru   r   r;   rk   r	   re   r	   r
   rf      rn   c                      rm   )N)r   r   r   r   r   rs   r;   rk   r	   re   r	   r
   rf     rn   c                      rm   )N)r   r   r   r   r             r;   rk   r	   re   r	   r
   rf     rn   c                          j jdddS )Nr   r   rP   rk   r	   re   r	   r
   rf         c                      rw   )Nr   rq   rx   rk   r	   re   r	   r
   rf     ry   c                      rm   )Nrs   r=   rk   r	   re   r	   r
   rf   	  rn   c                      s    j jdd> dS )Nr(   r%   r=   rk   r	   re   r	   r
   rf   
      )r   r   r   r   )rK   r7   r9   r;   r=   c                      s
    j  S r   rk   r	   re   r	   r
   rf        
 c                      s   j  S r   rk   r	   bhrX   r	   r
   rf     rn   c                      s   j   S r   rk   r	   r|   r	   r
   rf     ry   c                      s   j   S r   rk   r	   )r}   rd   r~   rX   r	   r
   rf     rz   c                      s   j   S r   rk   r	   )r}   rd   r~   r]   rX   r	   r
   rf         rK   r8   r:   r>   r<   r   c                      s   j jfi  S r   rk   r	   )r   r~   rX   r	   r
   rf   $  r   r(   c                      s   j jdi  S )Nr	   rk   r	   )r   rX   r	   r
   rf   &  rz   c                         t d S )NrK   setattrr	   )r~   r[   r	   r
   rf   *  rg   c                      r   )Nr8   r   r	   r}   r[   r	   r
   rf   +  rg   c                      r   )Nr:   r   r	   r   r	   r
   rf   ,  rg   c                      r   )Nr<   r   r	   )rd   r[   r	   r
   rf   -  rg   c                      r   )Nr>   r   r	   )r]   r[   r	   r
   rf   .  rg   c                         t  ddS )NrE   r   r   r	   r[   r	   r
   rf   /  rg   c                      r   )NrF   r   r   r	   r   r	   r
   rf   0  rg   c                      r   NrG   r   r   r	   r   r	   r
   rf   1  rg   c                      r   r   r   r	   r   r	   r
   rf   2  rg   c                      r   )NrH   r   r   r	   r   r	   r
   rf   3  rg   c                      r   )NrI   r   r   r	   r   r	   r
   rf   4  rg   c                      r   )NrJ   r   r   r	   r   r	   r
   rf   5  rg   c                      s
    t  k S r   objectr	   r   r	   r
   rf   8  r{   c                      s
    t  kS r   r   r	   r   r	   r
   rf   9  r{   )r   rC   dictrU   )rX   ZbadvalueZbadtypeZhhZbbZbbleiiZffr	   )r   r}   rd   r~   r]   rX   r[   r
   test_exceptions   s   zBaseTestUUID.test_exceptionsc                 C   sR   | j  }| d|  k odk n  d|  | j  }| ||d||f  d S )Nr   rv   %012xz%012x != %012x)r   getnode
assertTruerA   )rX   Znode1node2r	   r	   r
   test_getnode;  s   
$
zBaseTestUUID.test_getnodec                    s    fdd}t tjd jT  jjD ]F} jjd|d}|t|| |t|| t	t
jd D ]$} j|d |t
t
||| W d    n1 sTw   Y  q5qW d    d S 1 sfw   Y  d S )Nc                          | |   | j|j d S r   rA   is_safeactualexpectedre   r	   r
   checkD     z1BaseTestUUID.test_pickle_roundtrip.<locals>.checkr    d82579ce6642a0de7ddf490a7aec7aa5r   r(   )protocol)r   	swap_itemsysmodulesr   SafeUUIDrC   copydeepcopyrT   pickleHIGHEST_PROTOCOLsubTestloadsdumps)rX   r   r   r[   protor	   re   r
   test_pickle_roundtripC  s    "z"BaseTestUUID.test_pickle_roundtripc           	         s    fdd}g d}g d}g d} j d} j jd j jjd} j jd j jjd}ttjd j 0 |D ]
}|t	
|| q:|D ]
}|t	
|| qG|D ]
}|t	
|| qTW d    d S 1 sjw   Y  d S )	Nc                    r   r   r   r   re   r	   r
   r   S  r   zBBaseTestUUID.test_unpickle_previous_python_versions.<locals>.check)sr   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR(dS'int'
L287307832597519156748809049798316161701L
sb.so   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR}UintL287307832597519156748809049798316161701L
sb.s+   cuuid
UUID
)}Uintzz
I}ޠBfy% sb.sp   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR(dVint
L287307832597519156748809049798316161701L
sb.sr   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR}X   intL287307832597519156748809049798316161701L
sb.s.   cuuid
UUID
)}X   intzz
I}ޠBfy% sb.s.   cuuid
UUID
)}X   intzz
I}ޠBfy% sb.s6   +       uuidUUID)}intzz
I}ޠBfy% sb.s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR(dVint
L287307832597519156748809049798316161701L
sVis_safe
cuuid
SafeUUID
(NtRsb.s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR}(X   intL287307832597519156748809049798316161701L
X   is_safecuuid
SafeUUID
(NtRub.sM   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
NRub.sM   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
NRub.sQ   F       uuidUUID)}(intzz
I}ޠBfy% is_safeh SafeUUIDNRub.)s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR(dVint
L287307832597519156748809049798316161701L
sVis_safe
cuuid
SafeUUID
(I0
tRsb.s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR}(X   intL287307832597519156748809049798316161701L
X   is_safecuuid
SafeUUID
(K tRub.sN   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
K Rub.sN   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
K Rub.sR   G       uuidUUID)}(intzz
I}ޠBfy% is_safeh SafeUUIDK Rub.)s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR(dVint
L287307832597519156748809049798316161701L
sVis_safe
cuuid
SafeUUID
(I-1
tRsb.s   ccopy_reg
_reconstructor
(cuuid
UUID
c__builtin__
object
NtR}(X   intL287307832597519156748809049798316161701L
X   is_safecuuid
SafeUUID
(JtRub.sQ   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
JRub.sQ   cuuid
UUID
)}(X   intzz
I}ޠBfy% X   is_safecuuid
SafeUUID
JRub.sU   J       uuidUUID)}(intzz
I}ޠBfy% is_safeh SafeUUIDJRub.r   r   r   )r   rC   r   safeunsafer   r   r   r   r   r   )	rX   r   Zpickled_uuidsZpickled_uuids_safeZpickled_uuids_unsafer[   Zu_safeZu_unsafeZpickledr	   re   r
   &test_unpickle_previous_python_versionsR  s(   1"z3BaseTestUUID.test_unpickle_previous_python_versionsc                 C   s   dd }t jj| jd |gd | j }W d    n1 sw   Y  | d|  k o/dk n  d|  z
| jj|d W d S  tyO   | d Y d S w )	Nc                   S   s   dS )Nrv   r	   r	   r	   r	   r
   rf     s    z/BaseTestUUID.test_uuid1_eui64.<locals>.<lambda>)Z_node_GETTERSr   rv   r   )rJ   z"uuid1 was given an invalid node ID)	r   patchmultipler   r   r   uuid1rb   Zfail)rX   Ztoo_large_getterrJ   r	   r	   r
   test_uuid1_eui64  s   $zBaseTestUUID.test_uuid1_eui64c                    s   j } fddtdD D ]#}||j jj ||jd  |j jjj	 jjj
 jjjh qi } fddtdD D ]}d||< q?|t| d  jd}||jd  jd}||jd  jd	}||jd	  jdd}||jd ||jd
@ d> |jB d  jdd}||jd ||jd
@ d> |jB d  jdd}||jd ||jd
@ d> |jB d d S )Nc                       g | ]} j  qS r	   r   r   .0r]   re   r	   r
   
<listcomp>      z+BaseTestUUID.test_uuid1.<locals>.<listcomp>
   r(   c                    r   r	   r   r   re   r	   r
   r     r     r   l   ,Hr5   ?   r   r    r6   )rA   rT   rO   r   rB   rP   ZassertInr   r   r   r   unknownrU   keysr   rJ   rH   rI   rX   rY   r[   Zuuidsr	   re   r
   
test_uuid1  sF   
zBaseTestUUID.test_uuid1r   r@   posixPOSIX-only testc                 C   s4   | j js	| d | j  }| |j| j jj d S )Nz#requires uuid_generate_time_safe(3))r   _has_uuid_generate_time_safeskipTestr   assertNotEqualr   r   r   rX   r[   r	   r	   r
   test_uuid1_safe
  s   

zBaseTestUUID.test_uuid1_safec                 #   s    	 t jdkr| d | j  | jj  d u r| d tj| jd fdd d V  W d    d S 1 s;w   Y  d S )Nr   r   zneed uuid._generate_time_safe_generate_time_safec                      s     d fS Nr   r	   r	   rd   
safe_valuer	   r
   rf   "  rn   z6BaseTestUUID.mock_generate_time_safe.<locals>.<lambda>)	osr   r   r   Z_load_system_functionsr   r   r   r   )rX   r   r	   r   r
   mock_generate_time_safe  s   



"z$BaseTestUUID.mock_generate_time_safec                 C   sN   |  d  | j }| |j| jjj W d    d S 1 s w   Y  d S r   r   r   r   rA   r   r   r   r   r	   r	   r
   test_uuid1_unknown%  s   
"zBaseTestUUID.test_uuid1_unknownc                 C   N   |  d | j }| |j| jjj W d    d S 1 s w   Y  d S r   )r   r   r   rA   r   r   r   r   r	   r	   r
   test_uuid1_is_safe-     
"zBaseTestUUID.test_uuid1_is_safec                 C   r   )Nrs   )r   r   r   rA   r   r   r   r   r	   r	   r
   test_uuid1_is_unsafe3  r   z!BaseTestUUID.test_uuid1_is_unsafec                 C   r   )Nr   r   r   r	   r	   r
   test_uuid1_bogus_return_value9  r   z*BaseTestUUID.test_uuid1_bogus_return_valuec                 C   sF  t j| jdd t j| jdd x t j| jdd _ t jj| jdddE t jdd	d. t jd
dd | j }| || jd W d    n1 sRw   Y  W d    n1 saw   Y  W d    n1 spw   Y  W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  t j| jddm t j| jdd J t j| jdd 1 t jdd	d | jjddd}| || jd W d    n1 sw   Y  W d    n1 sw   Y  W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   Fr   Z_last_timestampr   l   ZYS )Zreturn_valueztime.time_nsl   3E5<+ zrandom.getrandbitsi  z$a7a55b92-01fc-11e9-94c5-54e1acf6da7f)rJ   rN   )r   r   r   r   r   rA   rC   r   r	   r	   r
   test_uuid1_time?  sL   
     	 T zBaseTestUUID.test_uuid1_timec                 C      | j }| j| jjddf| j| jjddf| j| jjddf| j| jjddffD ]"\}}||j| jj ||j	d	 ||| j
| |t|| q-d S )
N
python.orgz$6fa459ea-ee8a-3ca4-894e-db77e160355ehttp://python.org/z$9fe8e8c4-aaa8-32a9-a55c-4535a88b748d1.3.6.1z$dd1a1cef-13d5-368a-ad82-eca71acd4cd1c=caz$658d3002-db6b-3040-a1d1-8ddd7d189a4dr   )rA   r   Zuuid3NAMESPACE_DNSNAMESPACE_URLNAMESPACE_OIDNAMESPACE_X500rO   rB   rP   rC   rD   rX   rY   r[   r\   r	   r	   r
   
test_uuid3P  &   	zBaseTestUUID.test_uuid3c                    s|    j } fddtdD D ]}||j jj ||jd qi } fddtdD D ]}d||< q,|t| d d S )Nc                    r   r	   r   uuid4r   re   r	   r
   r   f  r   z+BaseTestUUID.test_uuid4.<locals>.<listcomp>r   r/   c                    r   r	   r   r   re   r	   r
   r   l  r   r   r(   )rA   rT   rO   r   rB   rP   rU   r   r   r	   re   r
   
test_uuid4b  s   
zBaseTestUUID.test_uuid4c                 C   r   )
Nr   z$886313e1-3b8a-5372-9b90-0c9aee199e5dr   z$4c565f0d-3f5a-5890-b41b-20cf47701c5er   z$1447fa61-5277-5fef-a9b3-fbc6e44f4af3r   z$cc957dd1-a972-5349-98cd-874190002798r@   )rA   r   Zuuid5r   r   r   r   rO   rB   rP   rC   rD   r   r	   r	   r
   
test_uuid5p  r   zBaseTestUUID.test_uuid5forkzneed os.forkc                 C   s   t  }t  }|dkr+t |d  | j }t |d |jd t 	d d S t |d  | 
t j|d  | j j}tj|dd t |d dd}| || d S )Nr   r(   zlatin-1)exitcoded   )r   piper   closer   r   writerK   r   _exitZ
addCleanupr   Zwait_processreaddecoder   )rX   fdspidvalueZparent_valueZchild_valuer	   r	   r
   testIssue8621  s   
zBaseTestUUID.testIssue8621c                 C   s&   | j  }t|}| ||  d S r   )r   r   weakrefrefZassertIs)rX   ZstrongZweakr	   r	   r
   test_uuid_weakref  s   

zBaseTestUUID.test_uuid_weakref) __name__
__module____qualname__r   r_   r   r   r   r   r   r   r   Zrequires_mac_verunittest
skipUnlessr   r   r   
contextlibcontextmanagerr   r   r   r   r   r   r   r   r   hasattrr   r   r	   r	   r	   r
   r      s<     ;_y
(






r   c                   @      e Zd ZeZdS )TestUUIDWithoutExtModuleNr   r   r   py_uuidr   r	   r	   r	   r
   r         r   zrequires the C _uuid modulec                   @   r   )TestUUIDWithExtModuleN)r   r   r   c_uuidr   r	   r	   r	   r
   r     s    r   c                   @   s   e Zd ZeZdd Zdd Zdd Zdd Zd	d
 Z	dd Z
d!ddZeejejv ddd Zeejejv ddd Zeejejv ddd Zeejejv ddd Zeejejv ddd Zdd  ZdS )"BaseTestInternalsc              
   C   s   |st jj| jddd}n
t jj| jddd}|M |sd}nd}|D ]\}}| | j|| q#dD ])}|r>|dd}| j|d	 | | j| W d    n1 sXw   Y  q4W d    d S 1 siw   Y  d S )
N   :F)
_MAC_DELIM_MAC_OMITS_LEADING_ZEROES   .T))s   52:54:00:9d:0e:67   g:PI )s   12:34:56:78:90:ab   ,H))s   fe.ad.c.1.23.4   #z )    s   fe80::5054:ff:fe9s   123:2:3:4:5:6:7:8s   52:54:00:9d::67s0   52:54:00:9d:0e52:54:00:9d:0e:6x52-54-00-9d-0e-67)mac)	r   r   r   r   rA   Z
_parse_macreplacer   ZassertIsNone)rX   Zaixr   Ztestsr  r   r	   r	   r
   check_parse_mac  s0   

"z!BaseTestInternals.check_parse_macc                 C      |  d d S )NFr  re   r	   r	   r
   test_parse_mac  r   z BaseTestInternals.test_parse_macc                 C   r  )NTr  re   r	   r	   r
   test_parse_mac_aix  r   z$BaseTestInternals.test_parse_mac_aixc                 C   `   d}t jj| jddt|d | jjdddd}W d    n1 s#w   Y  | |d	 d S )
Na  Name  Mtu   Network     Address           Ipkts Ierrs    Opkts Oerrs  Coll
en0   1500  link#2      fe.ad.c.1.23.4   1714807956     0 711348489     0     0
                        01:00:5e:00:00:01
en0   1500  192.168.129 x071             1714807956     0 711348489     0     0
                        224.0.0.1
en0   1500  192.168.90  x071             1714807956     0 711348489     0     0
                        224.0.0.1
r  Tr  r  Z_get_command_stdoutnetstat-ian   Addressr   r   headingr	  r   r   r   r   r   Z_find_mac_under_headingrA   rX   r   r  r	   r	   r
   test_find_under_heading  s   

z)BaseTestInternals.test_find_under_headingc                 C   r  )
Nat  Name    Mtu Network       Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
vtnet  1500 <Link#1>      52:54:00:9d:0e:67    10017     0     0     8174     0     0
vtnet     - fe80::%vtnet0 fe80::5054:ff:fe9        0     -     -        4     -     -
vtnet     - 192.168.122.0 192.168.122.45        8844     -     -     8171     -     -
lo0   16384 <Link#2>      lo0                 260148     0     0   260148     0     0
lo0       - ::1/128       ::1                    193     -     -      193     -     -
                          ff01::1%lo0
                          ff02::2:2eb7:74fa
                          ff02::2:ff2e:b774
                          ff02::1%lo0
                          ff02::1:ff00:1%lo
lo0       - fe80::%lo0/64 fe80::1%lo0              0     -     -        0     -     -
                          ff01::1%lo0
                          ff02::2:2eb7:74fa
                          ff02::2:ff2e:b774
                          ff02::1%lo0
                          ff02::1:ff00:1%lo
lo0       - 127.0.0.0/8   127.0.0.1           259955     -     -   259955     -     -
                          224.0.0.1
r  Fr  r  r  r  r  r  r  r  r	   r	   r
   test_find_under_heading_ipv6  s   

z.BaseTestInternals.test_find_under_heading_ipv6c                 C   sh   d}t jj| jddt|d | jjdddgdd	 d
}W d    n1 s'w   Y  | |d d S )Nz
fake      Link encap:UNSPEC  hwaddr 00-00
cscotun0  Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
eth0      Link encap:Ethernet  HWaddr 12:34:56:78:90:ab
r  Fr  ifconfigrj   s   hwaddrc                 S   s   | d S )Nr(   r	   )xr	   r	   r
   rf   ,  s    z>BaseTestInternals.test_find_mac_near_keyword.<locals>.<lambda>)r   r   keywordsZget_word_indexr  )r   r   r   r   r   Z_find_mac_near_keywordrA   r  r	   r	   r
   test_find_mac_near_keyword  s   
z,BaseTestInternals.test_find_mac_near_keywordNc                 C   s`   |r|d u r|  d|  d| }tjdkrt|dd | d|  k o'dk n  d|  d S )	Nz	requires r   r?    )endr   rv   z%s is not an RFC 4122 node ID)r   r   verboseprintr   )rX   rJ   ZrequiresrK   r	   r	   r
   
check_node1  s   
zBaseTestInternals.check_nodez7ifconfig is not used for introspection on this platformc                 C      | j  }| |d d S )Nr  )r   _ifconfig_getnoder%  rX   rJ   r	   r	   r
   test_ifconfig_getnode:     
z'BaseTestInternals.test_ifconfig_getnodez1ip is not used for introspection on this platformc                 C   r&  )Nip)r   _ip_getnoder%  r(  r	   r	   r
   test_ip_getnode@  r*  z!BaseTestInternals.test_ip_getnodez2arp is not used for introspection on this platformc                 C   r&  )NZarp)r   _arp_getnoder%  r(  r	   r	   r
   test_arp_getnodeF  r*  z"BaseTestInternals.test_arp_getnodez6lanscan is not used for introspection on this platformc                 C   r&  )NZlanscan)r   _lanscan_getnoder%  r(  r	   r	   r
   test_lanscan_getnodeL  r*  z&BaseTestInternals.test_lanscan_getnodez6netstat is not used for introspection on this platformc                 C   r&  )Nr  )r   _netstat_getnoder%  r(  r	   r	   r
   test_netstat_getnodeR  r*  z&BaseTestInternals.test_netstat_getnodec                 C   sH   | j  }| |d@ d|  | | | j  }| ||d|  d S )Nl        r   )r   Z_random_getnoder   r%  r   )rX   rJ   r   r	   r	   r
   test_random_getnodeX  s
   


z%BaseTestInternals.test_random_getnoder   )r   r   r   r   r   r  r  r  r  r  r   r%  r   r   r'  r   r)  r,  r-  r.  r/  r0  r1  r2  r3  r4  r	   r	   r	   r
   r    s<    .%
	




r  c                   @   r   )TestInternalsWithoutExtModuleNr   r	   r	   r	   r
   r5  c  r   r5  c                   @   sD   e Zd ZeZeejdkddd Z	eejdkddd Z
d	S )
TestInternalsWithExtModuler   zrequires Posixc                 C   sV   t dst ds| d z| j }W n ty"   | d Y nw | |d d S )Nr   Zctypesz,neither _uuid extension nor ctypes availablezrequires uuid_generate_timeZunix)r   r   r   Z_unix_getnoderh   r%  r(  r	   r	   r
   test_unix_getnodej  s   
z,TestInternalsWithExtModule.test_unix_getnodentzrequires Windowsc                 C   s   | j  }| | d S r   )r   Z_windll_getnoder%  r(  r	   r	   r
   test_windll_getnodet  s   
z.TestInternalsWithExtModule.test_windll_getnodeN)r   r   r   r  r   r   r   r   r   r7  r9  r	   r	   r	   r
   r6  f  s    
	r6  __main__)r   testr   Ztest.supportr   rS   r   r   r   r   r   r   r   r   Zimport_fresh_moduler   r  r   r   r   ZTestCaser   r   r   r  r5  r6  r   mainr	   r	   r	   r
   <module>   sB         
 >
