a
    äze¬  ã                   @   s^   d dl Z d dlZd dlmZ e d¡Ze eedƒd¡G dd„ dejƒƒZ	e
dkrZe ¡  dS )	é    N)ÚsupportÚpwdÚgetpwallzDoes not have getpwall()c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚPwdTestc                 C   s  t  ¡ }|D ] }|  t|ƒd¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt	¡ |  |d |j
¡ |  |j
t	¡ |  |d |j¡ |  t|jƒttd ƒf¡ |  |d |j¡ |  |jt¡ |  |d |j¡ |  |jt¡ qd S )	Né   r   é   é   é   é   é   é   )r   r   ZassertEqualÚlenÚpw_nameZassertIsInstanceÚstrÚ	pw_passwdÚpw_uidÚintÚpw_gidÚpw_gecosÚassertInÚtypeÚpw_dirÚpw_shell)ÚselfÚentriesÚe© r   ú#/usr/lib/python3.9/test/test_pwd.pyÚtest_values
   s"    
zPwdTest.test_valuesc                 C   s°   t  ¡ }i }i }t|ƒdkr&|  d¡ |D ],}| |jg ¡ |¡ | |jg ¡ |¡ q*|D ]N}|d r\|d dkrvq\|  t  	|j¡||j ¡ |  t  
|j¡||j ¡ q\d S )Niè  z*passwd file is huge; extended test skippedr   ú+)r   r   r   ZskipTestÚ
setdefaultr   Úappendr   r   ÚgetpwnamÚgetpwuid)r   r   ZentriesbynameZentriesbyuidr   r   r   r   Útest_values_extended$   s    
zPwdTest.test_values_extendedc                 C   s²  |   ttj¡ |   ttjd¡ |   ttj¡ |   ttjd¡ |   ttjd¡ i }i }t ¡ D ]"\}}}}}}}	|||< |||< q\t| ¡ ƒ}
d}|
| }||v rBt|ƒ}tt	|ƒƒD ]N}|| dkrÖd||<  q6q¶|| dkræq¶q¶t
t|| ƒd ƒ||<  q6q¶|d }z|
| }W n ty4   Y qBY n0 d |¡}q˜|   ttj|¡ tj}|  ||¡ |   ttj|¡ |   ttjd	¡ |   ttjd
d ¡ |   ttjd
d  ¡ d S )Ng…ëQ¸	@é*   r   ÚzÚAÚZr   Ú éÿÿÿÿr   é€   )ZassertRaisesÚ	TypeErrorr   r#   r"   r   ÚlistÚkeysÚranger   ÚchrÚordÚ
IndexErrorÚjoinÚKeyErrorÚsysÚmaxsizeZassertNotIn)r   ZbynamesZbyuidsÚnÚpÚuÚgZgecosÚdÚsZallnamesZnameiZfakenameÚcharsÚiZfakeuidr   r   r   Útest_errors8   sH    

zPwdTest.test_errorsN)Ú__name__Ú
__module__Ú__qualname__r   r$   r?   r   r   r   r   r      s   r   Ú__main__)r5   ZunittestÚtestr   Úimport_moduler   Z
skipUnlessÚhasattrZTestCaser   r@   Úmainr   r   r   r   Ú<module>   s   
g