a
    zeΟ                     @   s*  d dl 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r&e   dS )    N)support)mockuuid_uuid)Zblocked)Zfreshc                 C   s"   zt |  W dS    Y dS 0 d S )NTF)
__import__)name r   $/usr/lib/python3.9/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   s    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jdkd(d)d* Zd+d, ZdS )-BaseTestUUIDNc                 C   sz  | 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| || q0|D ]}|D ]}||| qDq<|t|jtj |t|j	tj || qtt|D ]}tt|D ]}|||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   }   r/         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      r2   r0   r0       l	    z-urn:uuid:ffffffff-ffff-ffff-ffff-ffffffffffffl   ?  bytesbytes_lefieldsint      )assertEqualr   ZRESERVED_NCSRFC_4122ZRESERVED_FUTUREUUIDstrr<   r6   r8   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curlyrI   r6   r8   r:   ZintegerrJ   rK   rL   rM   rN   ZequivalentsuvijZresortedr   r   r	   	test_UUID!   sz   													 

"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 ]}g d/fgfD ]}g d0fgfD ]v}g d1fgfD ]`}t|| | | |  t d2krP| fd3d t d4kr| fd5d qq qqܐqʈ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                    s     t| S r   )assertRaises
ValueErrorfrV   r   r	   <lambda>       z.BaseTestUUID.test_exceptions.<locals>.<lambda>c                    s     t| S r   )r^   	TypeErrorr`   rb   r   r	   rc      rd   c                      s    j dS )N r   rA   r   rb   r   r	   rc      rd   c                      s    j dS )Nabcrg   r   rb   r   r	   rc      rd   c                      s    j dS )NZ1234567812345678123456781234567rg   r   rb   r   r	   rc      rd   c                      s    j dS )NZ!123456781234567812345678123456789rg   r   rb   r   r	   rc      rd   c                      s    j dS )NZ 123456781234567812345678z2345678rg   r   rb   r   r	   rc      rd   c                      s    j jddS )Nrh   r5   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N               r5   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N                 r5   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )Nrh   r7   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )Nri   r7   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )Nrj   r7   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r&   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r&   r=   r   r-   r>   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r&   r=   r   r-   r>         r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)l        r   r   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   rm   r   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r      r   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   rm   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   rn   r   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   rm   r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r      r   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   r   rm   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   r   ro   r   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   r   r   rm   r9   rg   r   rb   r   r	   rc      rd   c                      s    j jddS )N)r   r   r   r   r             r9   rg   r   rb   r   r	   rc     rd   c                      s    j jdddS )Nr   r   rN   rg   r   rb   r   r	   rc     rd   c                      s    j jdddS )Nr   rk   rq   rg   r   rb   r   r	   rc     rd   c                      s    j jddS )Nrm   r;   rg   r   rb   r   r	   rc     rd   c                      s    j jdd> dS )Nr&   r#   r;   rg   r   rb   r   r	   rc   	  rd   )r   r   r   r   )rI   r5   r7   r9   r;   c                      s
    j  S r   rg   r   rb   r   r	   rc     rd   c                      s   j  S r   rg   r   bhrV   r   r	   rc     rd   c                      s   j   S r   rg   r   rr   r   r	   rc     rd   c                      s   j   S r   rg   r   )rs   ra   rt   rV   r   r	   rc     rd   c                      s   j   S r   rg   r   )rs   ra   rt   r[   rV   r   r	   rc     rd   rI   r6   r8   r<   r:   r   c                      s   j jfi  S r   rg   r   )r   rt   rV   r   r	   rc   #  rd   r&   c                      s   j jf i  S r   rg   r   )r   rV   r   r	   rc   %  rd   c                      s   t d S )NrI   setattrr   )rt   rY   r   r	   rc   )  rd   c                      s   t d S )Nr6   ru   r   rs   rY   r   r	   rc   *  rd   c                      s   t d S )Nr8   ru   r   rw   r   r	   rc   +  rd   c                      s   t d S )Nr:   ru   r   )ra   rY   r   r	   rc   ,  rd   c                      s   t d S )Nr<   ru   r   )r[   rY   r   r	   rc   -  rd   c                      s   t  ddS )NrC   r   ru   r   rY   r   r	   rc   .  rd   c                      s   t  ddS )NrD   r   ru   r   rx   r   r	   rc   /  rd   c                      s   t  ddS NrE   r   ru   r   rx   r   r	   rc   0  rd   c                      s   t  ddS ry   ru   r   rx   r   r	   rc   1  rd   c                      s   t  ddS )NrF   r   ru   r   rx   r   r	   rc   2  rd   c                      s   t  ddS )NrG   r   ru   r   rx   r   r	   rc   3  rd   c                      s   t  ddS )NrH   r   ru   r   rx   r   r	   rc   4  rd   c                      s
    t  k S r   objectr   rx   r   r	   rc   7  rd   c                      s
    t  kS r   rz   r   rx   r   r	   rc   8  rd   )r   rA   dictrS   )rV   ZbadvalueZbadtypeZhhZbbZbbleiiZffr   )r   rs   ra   rt   r[   rV   rY   r	   test_exceptions   s    &zBaseTestUUID.test_exceptionsc                 C   sR   | j  }| d|  k o dk n  d|  | j  }| ||d||f  d S )Nr   rp   %012xz%012x != %012x)r   getnode
assertTruer?   )rV   Znode1node2r   r   r	   test_getnode:  s    
$
zBaseTestUUID.test_getnodec                    s    fdd}t tjd j  jjD ]} jjd|d}|t|| |t|| t	t
jd D ]H} j|d( |t
t
||| W d    qj1 s0    Y  qjq(W d    n1 s0    Y  d S )Nc                    s      | |   | j|j d S r   r?   is_safeactualexpectedrb   r   r	   checkC  s    z1BaseTestUUID.test_pickle_roundtrip.<locals>.checkr    d82579ce6642a0de7ddf490a7aec7aa5r   r&   )protocol)r   	swap_itemsysmodulesr   SafeUUIDrA   copydeepcopyrR   pickleHIGHEST_PROTOCOLsubTestloadsdumps)rV   r   r   rY   protor   rb   r	   test_pickle_roundtripB  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 ^ |D ]}|t	
|| qt|D ]}|t	
|| q|D ]}|t	
|| qW d    n1 s0    Y  d S )	Nc                    s      | |   | j|j d S r   r   r   rb   r   r	   r   R  s    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   rA   r   safeunsafer   r   r   r   r   r   )	rV   r   Zpickled_uuidsZpickled_uuids_safeZpickled_uuids_unsaferY   Zu_safeZu_unsafeZpickledr   rb   r	   &test_unpickle_previous_python_versionsQ  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>0    Y  | d|  k o^dk n  d|  z| jj|d W n ty   | d Y n0 d S )	Nc                   S   s   dS )Nrp   r   r   r   r   r	   rc     rd   z/BaseTestUUID.test_uuid1_eui64.<locals>.<lambda>)Z_node_GETTERSr   rp   r   )rH   z"uuid1 was given an invalid node ID)	r   patchmultipler   r   r   uuid1r_   Zfail)rV   Ztoo_large_getterrH   r   r   r	   test_uuid1_eui64  s    ($zBaseTestUUID.test_uuid1_eui64c                    s   j } fddtdD D ]F}||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                    s   g | ]} j  qS r   r   r   .0r[   rb   r   r	   
<listcomp>  rd   z+BaseTestUUID.test_uuid1.<locals>.<listcomp>
   r&   c                    s   g | ]} j  qS r   r   r   rb   r   r	   r     rd     r   l   ,Hr3   ?   r   r   r4   )r?   rR   rM   r   r@   rN   ZassertInr   r   r   r   unknownrS   keysr   rH   rF   rG   rV   rW   rY   Zuuidsr   rb   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   rV   rY   r   r   r	   test_uuid1_safe	  s    

zBaseTestUUID.test_uuid1_safec                 #   s~   t jdkr| d | j  | jj  du r8| d tj| jd fdd dV  W d   n1 sp0    Y  dS )zQ
        Mock uuid._generate_time_safe() to return a given *safe_value*.
        r   r   Nzneed uuid._generate_time_safe_generate_time_safec                      s     d fS Nr   r   r   ra   
safe_valuer   r	   rc   !  rd   z6BaseTestUUID.mock_generate_time_safe.<locals>.<lambda>)	osr   r   r   Z_load_system_functionsr   r   r   r{   )rV   r   r   r   r	   mock_generate_time_safe  s    



z$BaseTestUUID.mock_generate_time_safec                 C   sL   |  d . | j }| |j| jjj W d    n1 s>0    Y  d S r   r   r   r   r?   r   r   r   r   r   r   r	   test_uuid1_unknown$  s    
zBaseTestUUID.test_uuid1_unknownc                 C   sL   |  d. | j }| |j| jjj W d    n1 s>0    Y  d S r   )r   r   r   r?   r   r   r   r   r   r   r	   test_uuid1_is_safe,  s    
zBaseTestUUID.test_uuid1_is_safec                 C   sL   |  d. | j }| |j| jjj W d    n1 s>0    Y  d S )Nrm   )r   r   r   r?   r   r   r   r   r   r   r	   test_uuid1_is_unsafe2  s    
z!BaseTestUUID.test_uuid1_is_unsafec                 C   sL   |  d. | j }| |j| jjj W d    n1 s>0    Y  d S )Nr   r   r   r   r   r	   test_uuid1_bogus_return_value8  s    
z*BaseTestUUID.test_uuid1_bogus_return_valuec                 C   s@  t j| jdd& t j| jdd  t j| jdd  t jj| jddd t jdd	d\ t jd
dd. | j }| || jd W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s"0    Y  W d    n1 sB0    Y  t j| jdd t j| jdd  t j| jdd d t jdd	d4 | jjddd}| || jd W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s0    Y  W d    n1 s20    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)rH   rL   )r   r   r{   r   r   r?   rA   r   r   r   r	   test_uuid1_time>  s,    
zBaseTestUUID.test_uuid1_timec                 C   s   | 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 ]D\}}||j| jj ||j	d	 ||| j
| |t|| qZd 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   )r?   r   Zuuid3NAMESPACE_DNSNAMESPACE_URLNAMESPACE_OIDNAMESPACE_X500rM   r@   rN   rA   rB   rV   rW   rY   rZ   r   r   r	   
test_uuid3O  s$    	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||< qX|t| d d S )Nc                    s   g | ]} j  qS r   r   uuid4r   rb   r   r	   r   e  rd   z+BaseTestUUID.test_uuid4.<locals>.<listcomp>r   r-   c                    s   g | ]} j  qS r   r   r   rb   r   r	   r   k  rd   r   r&   )r?   rR   rM   r   r@   rN   rS   r   r   r   rb   r	   
test_uuid4a  s    
zBaseTestUUID.test_uuid4c                 C   s   | 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 ]D\}}||j| jj ||j	d	 ||| j
| |t|| qZd S )
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>   )r?   r   Zuuid5r   r   r   r   rM   r@   rN   rA   rB   r   r   r   r	   
test_uuid5o  s$    	zBaseTestUUID.test_uuid5requires Posixc                 C   s   t  }t  }|dkrTt |d  | j }t |d |jd t 	d n\t |d  | 
t j|d  | j j}tj|dd t |d dd}| || d S )Nr   r&   zlatin-1)exitcoded   )r   pipeforkcloser   r   writerI   r   _exitZ
addCleanupr   Zwait_processreaddecoder   )rV   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)rV   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   r   r   r   r   r   r	   r      s:    ;_y(







r   c                   @   s   e Zd ZeZdS )TestUUIDWithoutExtModuleNr   r   r   py_uuidr   r   r   r   r	   r     s   r   zrequires the C _uuid modulec                   @   s   e Zd ZeZdS )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}| |s>d}nd}|D ]\}}| | j|| qFdD ]R}|r||dd}| j|d	" | | j| W d    qh1 s0    Y  qhW d    n1 s0    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 )rd   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   r?   Z
_parse_macreplacer   ZassertIsNone)rV   Zaixr   Ztestsr   r   r   r   r	   check_parse_mac  s(    

z!BaseTestInternals.check_parse_macc                 C   s   |  d d S )NFr   rb   r   r   r	   test_parse_mac  s    z BaseTestInternals.test_parse_macc                 C   s   |  d d S )NTr   rb   r   r   r	   test_parse_mac_aix  s    z$BaseTestInternals.test_parse_mac_aixc                 C   s`   d}t jj| jddt|d" | jjdddd}W d    n1 sF0    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_headingr?   rV   r   r   r   r   r	   test_find_under_heading  s    
$z)BaseTestInternals.test_find_under_headingc                 C   s`   d}t jj| jddt|d" | jjdddd}W d    n1 sF0    Y  | |d	 d S )
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 sN0    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   ifconfigrf   s   hwaddrc                 S   s   | d S )Nr&   r   )xr   r   r	   rc   +  rd   z>BaseTestInternals.test_find_mac_near_keyword.<locals>.<lambda>)r   r   keywordsZget_word_indexr   )r   r   r   r   r   Z_find_mac_near_keywordr?   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r8t|dd | d|  k oNdk n  d|  d S )	Nz	requires r   r=    )endr   rp   z%s is not an RFC 4122 node ID)r   r   verboseprintr   )rV   rH   ZrequiresrI   r   r   r	   
check_node0  s    
zBaseTestInternals.check_nodez7ifconfig is not used for introspection on this platformc                 C   s   | j  }| |d d S )Nr  )r   _ifconfig_getnoder  rV   rH   r   r   r	   test_ifconfig_getnode9  s    
z'BaseTestInternals.test_ifconfig_getnodez1ip is not used for introspection on this platformc                 C   s   | j  }| |d d S )NZip)r   _ip_getnoder  r  r   r   r	   test_ip_getnode?  s    
z!BaseTestInternals.test_ip_getnodez2arp is not used for introspection on this platformc                 C   s   | j  }| |d d S )NZarp)r   _arp_getnoder  r  r   r   r	   test_arp_getnodeE  s    
z"BaseTestInternals.test_arp_getnodez6lanscan is not used for introspection on this platformc                 C   s   | j  }| |d d S )NZlanscan)r   _lanscan_getnoder  r  r   r   r	   test_lanscan_getnodeK  s    
z&BaseTestInternals.test_lanscan_getnodez6netstat is not used for introspection on this platformc                 C   s   | j  }| |d d S )Nr   )r   _netstat_getnoder  r  r   r   r	   test_netstat_getnodeQ  s    
z&BaseTestInternals.test_netstat_getnodec                 C   sH   | j  }| |d@ d|  | | | j  }| ||d|  d S )Nl        r   )r   Z_random_getnoder   r  r   )rV   rH   r   r   r   r	   test_random_getnodeW  s
    


z%BaseTestInternals.test_random_getnode)N)r   r   r   r   r   r   r   r   r  r  r  r  r   r   r  r   r  r  r  r  r  r  r  r  r  r  r   r   r   r	   r     s:   .%
	




r   c                   @   s   e Zd ZeZdS )TestInternalsWithoutExtModuleNr   r   r   r   r	   r  b  s   r  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   r   c                 C   sV   t dst ds| d z| j }W n tyD   | d Y n0 | |d d S )Nr   Zctypesz,neither _uuid extension nor ctypes availablezrequires uuid_generate_timeZunix)r
   r   r   Z_unix_getnodere   r  r  r   r   r	   test_unix_getnodei  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_getnodes  s    
z.TestInternalsWithExtModule.test_windll_getnodeN)r   r   r   r   r   r   r   r   r   r  r  r   r   r   r	   r  e  s
   
	r  __main__)r   testr   rQ   r   r   r   r   r   r   r   r   Zimport_fresh_moduler   r   r
   r   r   ZTestCaser   r   r   r   r  r  r   mainr   r   r   r	   <module>   s<        
 >

