JFIF$        dd7 

Viewing File: /usr/lib/python3.9/site-packages/certbot/_internal/tests/__pycache__/util_test.cpython-39.pyc

a

}|�g�`�@s�dZddlZddlZddlmZddlZddlZddlZddlm	Z	ddl
Z
ddlmZddl
mZddl
mZddlmmZGdd	�d	ej�ZGd
d�dej�ZGdd
�d
ej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�ZGdd�dej�Z Gdd�dej�Z!Gd d!�d!ej�Z"Gd"d#�d#ej�Z#Gd$d%�d%ej�Z$Gd&d'�d'ej�Z%Gd(d)�d)ej�Z&Gd*d+�d+ej�Z'e(d,k�r�e�)e
�*ej+d-d�e,g��dS).zTests for certbot.util.�N)�reload)�mock)�errors)�
filesystem)�osc@s,eZdZdZedd��Zdd�Zdd�ZdS)	�EnvNoSnapForExternalCallsTestz6Tests for certbot.util.env_no_snap_for_external_calls.cCsddlm}|�S)Nr)�env_no_snap_for_external_calls)�certbot.utilr)�clsr�r�E/usr/lib/python3.9/site-packages/certbot/_internal/tests/util_test.py�_callsz#EnvNoSnapForExternalCallsTest._callcCsvtjd}tj��}d||d<d|d<d|d<tjd|d��$|��d|ksTJ�Wd�n1sh0YdS)	N�PATH�"RANDOM_NONSENSE_GARBAGE/blah/blah:�RANDOM_NONSENSE_GARBAGE�SNAP�True�CERTBOT_SNAPPED�certbot.compat.os.environ.copy��return_value)r�environ�copyr�patchr
)�selfZ
original_path�
env_copy_dictrrr�test_removeds

z*EnvNoSnapForExternalCallsTest.test_removedcCs�tj��}d|d|d<|��}tjd|d���|�dd�|�dd�|��d|dksbJ�d|d<|��d|dks�J�|d=d|d<|��d|dks�J�Wd�n1s�0YdS)	Nrrrrrrrr)rrrrr�popr
)rZenv_copy_dict_unmodifiedrrrr�	test_noop"s
�z'EnvNoSnapForExternalCallsTest.test_noopN)�__name__�
__module__�__qualname__�__doc__�classmethodr
rrrrrrrs

	rc@sReZdZdZedd��Ze�d�dd��Ze�d�dd��Z	e�d�d	d
��Z
dS)�
RunScriptTestz"Tests for certbot.util.run_script.cCsddlm}||�S)Nr)�
run_script)r	r%)r
�paramsr%rrrr
6szRunScriptTest._callzcertbot.util.subprocess.runcCsDd|�_d|�_d|�_|�dg�\}}|dks4J�|dks@J�dS)z.These will be changed soon enough with reload.r�stdout�stderr�testN)�
returncoder'r(r
)r�mock_run�out�errrrr�test_default;szRunScriptTest.test_defaultcCsBt|_t�tj��|�dg�Wd�n1s40YdS)Nr))�OSError�side_effect�pytest�raisesr�SubprocessErrorr
�rr+rrr�test_bad_processFszRunScriptTest.test_bad_processcCsDd|�_t�tj��|�dg�Wd�n1s60YdS)N�r))r*r1r2rr3r
r4rrr�test_failureMszRunScriptTest.test_failureN)rr r!r"r#r
rrr.r5r7rrrrr$4s



r$c@s,eZdZdZedd��Zdd�Zdd�ZdS)	�
ExeExistsTestz"Tests for certbot.util.exe_exists.cCsddlm}||�S)Nr)�
exe_exists)r	r9)r
Zexer9rrrr
XszExeExistsTest._callcCs@tjddd��|�d�sJ�Wd�n1s20YdS)N�%certbot.util.filesystem.is_executableTr�/path/to/exe�rrr
�rrrr�test_exe_exists]szExeExistsTest.test_exe_existscCs@tjddd��|�d�rJ�Wd�n1s20YdS)Nr:Frr;r<r=rrr�test_exe_not_existsasz!ExeExistsTest.test_exe_not_existsN)rr r!r"r#r
r>r?rrrrr8Us

r8csHeZdZdZedd��Z�fdd�Ze�d�e�d�dd	���Z	�Z
S)
�LockDirUntilExitz+Tests for certbot.util.lock_dir_until_exit.cOsddlm}||i|��S)Nr)�lock_dir_until_exit)r	rA)r
�args�kwargsrArrrr
hszLockDirUntilExit._callcs t���ddl}t|j�dS)Nr)�super�setUpr	�
reload_module�util)r�certbot��	__class__rrrEms
zLockDirUntilExit.setUpzcertbot.util.loggerzcertbot.util.atexit_registercCs�tj�|jd�}t�|�|�|j�|�|�|�|�|jdksHJ�|jdd}ddl	m
}t|j�dkstJ�|�|j
jdks�J�dS)N�subdirr6r)rG�)r�path�join�tempdirr�mkdirr
�
call_count�	call_argsrHrG�lenZ_LOCKS�debug)rZ
mock_registerZmock_loggerrKZregistered_funcrGrrr�test_itss


zLockDirUntilExit.test_it)rr r!r"r#r
rErrrU�
__classcell__rrrIrr@fs
r@c@s<eZdZdZdd�Ze�d�dd��Ze�d�dd	��Zd
S)�SetUpCoreDirTestz/Tests for certbot.util.make_or_verify_core_dir.cOsddlm}||i|��S)Nr)�set_up_core_dir)r	rX)rrBrCrXrrrr
�szSetUpCoreDirTest._callz certbot.util.lock_dir_until_exitcCs@tj�|jd�}|�|dd�tj�|�s.J�|jdks<J�dS)N�new�Fr6)rrMrNrOr
�existsrQ)rZ	mock_lockZnew_dirrrr�test_success�szSetUpCoreDirTest.test_successzcertbot.util.make_or_verify_dircCsFt|_t�tj�� |�|jdd�Wd�n1s80YdS)NrZF)r/r0r1r2r�Errorr
rO)rZmock_make_or_verifyrrrr7�szSetUpCoreDirTest.test_failureN)	rr r!r"r
rrr\r7rrrrrW�s
rWcsHeZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	�Z
S)�MakeOrVerifyDirTestz�Tests for certbot.util.make_or_verify_dir.

    Note that it is not possible to test for a wrong directory owner,
    as this testing script would have to be run as root.

    cs.t���tj�|jd�|_t�|jd�dS)N�foo�)rDrErrMrNrOrrPr=rIrrrE�s
zMakeOrVerifyDirTest.setUpcCsddlm}|||dd�S)Nr)�make_or_verify_dirT)�strict)r	ra)rZ	directory�moderarrrr
�szMakeOrVerifyDirTest._callcCs@tj�|jd�}|�|d�tj�|�s,J�t�|d�s<J�dS)N�bari�)rrMrNrOr
�isdirr�
check_mode)rrMrrr�test_creates_dir_when_missing�sz1MakeOrVerifyDirTest.test_creates_dir_when_missingcCs$|�|jd�t�|jd�s J�dS)Nr`)r
rMrrfr=rrr�(test_existing_correct_mode_does_not_fail�sz<MakeOrVerifyDirTest.test_existing_correct_mode_does_not_failcCs>t�tj��|�|jd�Wd�n1s00YdS)N�)r1r2rr]r
rMr=rrr�test_existing_wrong_mode_fails�sz2MakeOrVerifyDirTest.test_existing_wrong_mode_failsc	Csptj�td��N}t�|_t�t��|�dd�Wd�n1sD0YWd�n1sb0YdS)N�makedirsrdi�޻)	rr�objectrr/r0r1r2r
)rrkrrr�test_reraises_os_error�sz*MakeOrVerifyDirTest.test_reraises_os_error)rr r!r"rEr
rgrhrjrmrVrrrIrr^�sr^csBeZdZdZ�fdd�Zd
dd�Zdd�Zd	d
�Zdd�Z�Z	S)�UniqueFileTestz#Tests for certbot.util.unique_file.cs t���tj�|jd�|_dS�Nzfoo.txt)rDrErrMrNrO�default_namer=rIrrrE�s
zUniqueFileTest.setUpr`cCsddlm}||j|�S)Nr)�unique_file)r	rqrp)rrcrqrrrr
�szUniqueFileTest._callcCsZ|��\}}|�d�|��t|�� }|��dks8J�Wd�n1sL0YdS)Nrd)r
�write�close�open�read)r�fd�name�frrr�test_returns_fd_for_writing�s


z*UniqueFileTest.test_returns_fd_for_writingcCsP|�d�\}}|�d�\}}t�|d�s,J�t�|d�s<J�|��|��dS)NrZr`)r
rrfrs)r�fd1�name1�fd2�name2rrr�test_right_mode�szUniqueFileTest.test_right_modec
Cs�|��\}}|��\}}|��\}}||ks0J�||ks<J�||ksHJ�tj�|�|jks^J�tj�|�|jkstJ�tj�|�|jks�J�tj�|�}|�d�s�J�tj�|�}|�d�s�J�tj�|�}	|	�d�s�J�|��|��|��dSro)r
rrM�dirnamerO�basename�endswithrs)
rrzr{r|r}Zfd3Zname3Z	basename1Z	basename2Z	basename3rrr�test_default_exists�s$z"UniqueFileTest.test_default_exists)r`)
rr r!r"rEr
ryr~r�rVrrrIrrn�s
rnc@s2eZdZdZddd�Zdd�Zdd�Zd	d
�ZdS)
�UniqueLineageNameTestz+Tests for certbot.util.unique_lineage_name.�cCsddlm}||j||�S)Nr)�unique_lineage_name)r	r�rO)r�filenamercr�rrrr
�szUniqueLineageNameTest._callcCsB|�d�\}}t|tj�sJ�tj�|jd�|ks6J�|��dS)N�wowzwow.conf)	r
�
isinstance�io�
TextIOWrapperrrMrNrOrs)rrxrMrrr�
test_basicsz UniqueLineageNameTest.test_basiccCsrg}td�D]}|�|�d��q|d\}}t|tj�s>J�t|t�sLJ�d|vsXJ�|D]\}}|��q\dS)N�
r����z
wow-0009.conf)�range�appendr
r�r�r��strrs)r�items�_rxrwrrr�
test_multiplesz#UniqueLineageNameTest.test_multiplec	Csltjdttj�d��Dt�t��|�d�Wd�n1s@0YWd�n1s^0YdS)Nzcertbot.compat.filesystem.open)r0r�)rrr/�errnoZEIOr1r2r
r=rrrr7sz"UniqueLineageNameTest.test_failureN)r�)rr r!r"r
r�r�r7rrrrr��s

r�cs@eZdZdZ�fdd�Zdd�Zdd�Zdd	�Zd
d�Z�Z	S)�SafelyRemoveTestz%Tests for certbot.util.safely_remove.cs t���tj�|jd�|_dS)Nr_)rDrErrMrNrOr=rIrrrEs
zSafelyRemoveTest.setUpcCsddlm}||j�S)Nr)�
safely_remove)r	r�rM)rr�rrrr
 szSafelyRemoveTest._callcCsJt|jd��Wd�n1s"0Y|��tj�|j�rFJ�dS)N�w)rtrMr
rr[r=rrr�test_exists$szSafelyRemoveTest.test_existscCs|��tj�|j�rJ�dS�N)r
rrMr[r=rrr�test_missing*szSafelyRemoveTest.test_missingc	Csft�d��H}t|_t�t��|��Wd�n1s:0YWd�n1sX0YdS)Nzcertbot.util.os.remove)rrr/r0r1r2r
)rZmock_removerrr�test_other_error_passthrough/sz-SafelyRemoveTest.test_other_error_passthrough)
rr r!r"rEr
r�r�r�rVrrrIrr�sr�c@s,eZdZdZedd��Zdd�Zdd�ZdS)	�
SafeEmailTestzTest safe_email.cCsddlm}||�S)Nr)�
safe_email)r	r�)r
�addrr�rrrr
8szSafeEmailTest._callcCs,gd�}|D]}|�|�sJd|��qdS)N)zcertbot@certbot.orgztbd.ade@gmail.comzabc_def.jdk@hotmail.museum�
%s failed.�r
�r�addrsr�rrr�test_valid_emails=szSafeEmailTest.test_valid_emailscCs,gd�}|D]}|�|�rJd|��qdS)N)zcertbot@certbot..orgz.tbd.ade@gmail.comz~/abc_def.jdk@hotmail.museumr�r�r�rrr�test_invalid_emailsFsz!SafeEmailTest.test_invalid_emailsN)rr r!r"r#r
r�r�rrrrr�6s

	r�c@sPeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�ZdS)�AddDeprecatedArgumentTestzTest add_deprecated_argument.cCst��|_dSr�)�argparse�ArgumentParser�parserr=rrrrERszAddDeprecatedArgumentTest.setUpcCs ddlm}||jj||�dS)Nr)�add_deprecated_argument)r	r�r��add_argument)r�
argument_name�nargsr�rrrr
UszAddDeprecatedArgumentTest._callcCs�|�dd�t�d��}|j�dg�Wd�n1s:0Y|jdksRJ�d|jddvshJ�d|jddvs~J�dS)N�--old-optionr�certbot.util.logger.warningr6�
is deprecated�r
rrr��
parse_argsrQrR�rZ	mock_warnrrr�test_warning_no_argYs,z-AddDeprecatedArgumentTest.test_warning_no_argcCs�|�dd�t�d�� }|j�ddg�Wd�n1s<0Y|jdksTJ�d|jddvsjJ�d|jddvs�J�dS)Nr�r6r��42r�rr�r�rrr�test_warning_with_argas.z/AddDeprecatedArgumentTest.test_warning_with_argc	Cs||�dd�t��}tjd|d��6z|j�dg�WntyHYn0Wd�n1s^0Yd|��vsxJ�dS)Nr�rLz
sys.stdout)rYz-h)	r
r��StringIOrrr�r��
SystemExit�getvalue)rr'rrr�	test_helpis$z#AddDeprecatedArgumentTest.test_helpcCs|�t�dS)z�Test when ACTION_TYPES_THAT_DONT_NEED_A_VALUE is a set.

        This variable is a set in configargparse versions < 0.12.0.

        N)�_test_constant_common�setr=rrr�test_set_constantssz+AddDeprecatedArgumentTest.test_set_constantcCs|�t�dS)z�Test when ACTION_TYPES_THAT_DONT_NEED_A_VALUE is a tuple.

        This variable is a tuple in configargparse versions >= 0.12.0.

        N)r��tupler=rrr�test_tuple_constant{sz-AddDeprecatedArgumentTest.test_tuple_constantcCs`t�d��0}|�|_|�dd�|�dd�Wd�n1s@0Yt|j�dks\J�dS)Nzcertbot.util.configargparser�r6z
--old-option2rL)rrZ#ACTION_TYPES_THAT_DONT_NEED_A_VALUEr
rS)r�typZmock_configargparserrrr��s
*z/AddDeprecatedArgumentTest._test_constant_commonN)rr r!r"rEr
r�r�r�r�r�r�rrrrr�Ps
r�c@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�EnforceLeValidityzTest enforce_le_validity.cCsddlm}||�S)Nr)�enforce_le_validity)r	r�)r�domainr�rrrr
�szEnforceLeValidity._callcCs:t�tj��|�d�Wd�n1s,0YdS)Nz..�r1r2r�ConfigurationErrorr
r=rrr�test_sanity�szEnforceLeValidity.test_sanitycCs:t�tj��|�d�Wd�n1s,0YdS)Nzhello_world.example.comr�r=rrr�test_invalid_chars�sz$EnforceLeValidity.test_invalid_charscCs:t�tj��|�d�Wd�n1s,0YdS)Nz-a.example.comr�r=rrr�test_leading_hyphen�sz%EnforceLeValidity.test_leading_hyphencCs:t�tj��|�d�Wd�n1s,0YdS)Nza-.example.comr�r=rrr�test_trailing_hyphen�sz&EnforceLeValidity.test_trailing_hyphencCs:t�tj��|�d�Wd�n1s,0YdS)NZcomr�r=rrr�test_one_label�sz EnforceLeValidity.test_one_labelcCs|�d�dksJ�dS)Nzexample.comr�r=rrr�test_valid_domain�sz#EnforceLeValidity.test_valid_domaincCspt�tj��|�d�Wd�n1s,0Yt�tj��|�d�Wd�n1sb0YdS)Nzhttp://example.comzhttps://example.comr�r=rrr�test_input_with_scheme�s(z(EnforceLeValidity.test_input_with_schemecCs|�d�dksJ�dS)Nzhttp.example.comr�r=rrr�!test_valid_input_with_scheme_name�sz3EnforceLeValidity.test_valid_input_with_scheme_nameN)
rr r!r"r
r�r�r�r�r�r�r�r�rrrrr��sr�c@speZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZdS)�EnforceDomainSanityTestzTest enforce_domain_sanity.cCsddlm}||�S)Nr)�enforce_domain_sanity)r	r�)rr�r�rrrr
�szEnforceDomainSanityTest._callcCs@t�tj�� |�d�d��Wd�n1s20YdS)N�eichhörnchen.example.comzutf-8)r1r2rr�r
�encoder=rrr�test_nonascii_str�sz)EnforceDomainSanityTest.test_nonascii_strcCs:t�tj��|�d�Wd�n1s,0YdS)Nr�r�r=rrr�test_nonascii_unicode�sz-EnforceDomainSanityTest.test_nonascii_unicodecCs>d}t�tj��|�|�Wd�n1s00YdS)NAaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar�)rZlong_domainrrr�
test_too_long�sz%EnforceDomainSanityTest.test_too_longcCsd�dddd�}|�|�dS)Nz{0}.{1}.{2}.{3}�?aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa�?bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbZ?cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccZ?ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd��formatr
)rZnot_too_long_domainrrr�test_not_too_long�sz)EnforceDomainSanityTest.test_not_too_longcCs>d}t�tj��|�|�Wd�n1s00YdS)Nzfizz..example.comr�)rZempty_label_domainrrr�test_empty_label�sz(EnforceDomainSanityTest.test_empty_labelcCs>d}t�tj��|�|�Wd�n1s00YdS)Nz
example.com..r�)rZempty_trailing_label_domainrrr�test_empty_trailing_label�sz1EnforceDomainSanityTest.test_empty_trailing_labelcCs>d}t�tj��|�|�Wd�n1s00YdS)N�@aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar��rZlong_label_domainrrr�test_long_label_1�sz)EnforceDomainSanityTest.test_long_label_1cCsFd�dd�}t�tj��|�|�Wd�n1s80YdS)N�{0}.{1}.comr�r�)r�r1r2rr�r
r�rrr�test_long_label_2�sz)EnforceDomainSanityTest.test_long_label_2cCsd�dd�}|�|�dS)Nr�r�r�r�)rZnot_too_long_label_domainrrr�test_not_long_label�sz+EnforceDomainSanityTest.test_not_long_labelcCs>d}t�tj��|�|�Wd�n1s00YdS)N�r�)rZempty_domainrrr�test_empty_domain�sz)EnforceDomainSanityTest.test_empty_domaincCs|�d�dS)Nzthis.is.xn--ls8h.tldr�r=rrr�test_punycode_ok�sz(EnforceDomainSanityTest.test_punycode_okN)rr r!r"r
r�r�r�r�r�r�r�r�r�r�r�rrrrr��sr�c@s0eZdZdZdd�Zdd�Zdd�Zdd	�Zd
S)�IsWildcardDomainTestzTests for is_wildcard_domain.cCsd|_d|_dS)Nz
*.example.orgzexample.org)�wildcard�no_wildcardr=rrrrE�szIsWildcardDomainTest.setUpcCsddlm}||�S)Nr)�is_wildcard_domain)r	r�)rr�r�rrrr
�szIsWildcardDomainTest._callcCs(|�|j�rJ�|�|j���r$J�dSr�)r
r�r�r=rrr�test_no_wildcard�sz%IsWildcardDomainTest.test_no_wildcardcCs(|�|j�sJ�|�|j���s$J�dSr�)r
r�r�r=rrr�
test_wildcard�sz"IsWildcardDomainTest.test_wildcardN)rr r!r"rEr
r�r�rrrrr��s
r�c@s�eZdZdZe�d�e�ej	�
d�d�dd���Ze�d�e�ej	�
d�d�dd���Ze�d�e�ej	�
d�d�d	d
���Z
dd�Ze�d�e�ej	�
d�d�d
d���Ze�d�e�ej	�
d�d�dd���ZdS)�
OsInfoTestz Test OS / distribution detectionzcertbot.util.distro�linuxzrequires LinuxcCs<ddlm}d|j_|��}t|�dks,J�d|vs8J�dS)Nrzfirst debian third�Zdebian)r	rGZlikerZget_systemd_os_likerS)r�m_distro�cbutilZid_likesrrr�test_systemd_os_release_likes
z'OsInfoTest.test_systemd_os_release_likecCs�ddlm}tjddd��Bd|j_gd�|j_|��d�	|j
dd	��ksNJ�Wd�n1sb0Yd
g|j_|��d
ks�J�dS)Nr�platform.system_alias)r�r�r�r�1.0)r��	somethingr�� T)ZprettyZwhatever)r	rGrr�versionrrwr0Zget_os_info_uarN�get_python_os_info�rr�r�rrr�test_get_os_info_ua
s��&
zOsInfoTest.test_get_os_info_uacCs�ddlm}t�d��V}d|j_d|j_d|_|��dks>J�d|j_d|j_|��d	ks^J�Wd�n1sr0YdS)
Nrzplatform.systemrwr�r�)rwr�r��else)r�r�)r	rGrr�idrr�Zget_os_info)rr�r�Z
mock_platformrrr�test_get_os_infoszOsInfoTest.test_get_os_infoc
Cs�ddlm}t�dd����tjddd��$|��ddks@J�Wd�n1sT0Ytjddd��jt�d	��@}d
|�_|��ddks�J�|��dd
ks�J�Wd�n1s�0YWd�n1s�0Ytjdd
d��"|��dk�sJ�Wd�n1�s0Ytjddd��Rtjddd��"|��dk�sZJ�Wd�n1�sp0YWd�n1�s�0YWd�n1�s�0YdS)Nrzcertbot.util._USE_DISTROFr�)Z
NonSystemDr�r�rZ
nonsystemd)�darwinr�r�zsubprocess.runz42.42.42r�r6)�freebsdz
9.3-RC3-p1r�)r��9)�windowsr�r�zplatform.win32_ver)Z4242�95�2r�)r�r�)r	rGrrr�r')rr�Zrun_mockrrr�test_non_systemd_os_info*s4�2�P�2���z#OsInfoTest.test_non_systemd_os_infocCs4ddlm}d|j_d|j_|��ddks0J�dS)Nrr�r��r	rGr�rr�r�r�rrr�test_python_os_info_notfoundCsz'OsInfoTest.test_python_os_info_notfoundcCs0ddlm}d|j_d|j_|��dks,J�dS)Nr�testdistr�)rr�rr�rrr�test_python_os_info_customKsz%OsInfoTest.test_python_os_info_customN)rr r!r"rr�unittestZ
skipUnless�sys�platform�
startswithr�r�r�rrrrrrrr�s"
r�c@s<eZdZdZdd�Zedd��Zdd�Zdd	�Zd
d�Z	dS)
�AtexitRegisterTestz'Tests for certbot.util.atexit_register.cCst��|_d|_ddi|_dS)N)�hiZanswer�*)rZ	MagicMock�funcrBrCr=rrrrEVs
zAtexitRegisterTest.setUpcOsddlm}||i|��S)Nr)�atexit_register)r	r)r
rBrCrrrrr
[szAtexitRegisterTest._callcCs(|�t���|jj|ji|j��dSr�)�_test_commonr�getpidr
Zassert_called_withrBrCr=rrr�test_called`szAtexitRegisterTest.test_calledcCs |jdd�|jjdusJ�dS)Nr�)�initial_pidF)rr
�calledr=rrr�test_not_calleddsz"AtexitRegisterTest.test_not_calledc	Cs�t�d|���t�d��.}|j|jg|j�Ri|j��Wd�n1sL0Y|jjsbJ�|jj\}}|d}||dd�i|��Wd�n1s�0YdS)Nzcertbot.util._INITIAL_PIDzcertbot.util.atexitrr6)	rrr
r
rBrC�registerrrR)rrZmock_atexitrBrCZatexit_funcrrrrhs<zAtexitRegisterTest._test_commonN)
rr r!r"rEr#r
rrrrrrrr
Ts
r
c@s<eZdZdZedd��Zdd�Zdd�Zdd	�Zd
d�Z	dS)
�LooseVersionTestz�Test for certbot.util.LooseVersion.

    These tests are based on the original tests for
    distutils.version.LooseVersion at
    https://github.com/python/cpython/blob/v3.10.0/Lib/distutils/tests/test_version.py#L58-L81.

    cOsddlm}||i|��S)Nr)�LooseVersion)r	r)r
rBrCrrrrr
}szLooseVersionTest._callcCs4d}|D]&\}}|�|��|�|��dksJ�qdS)N)�z1.5.1z1.5.2b2�z3.4jz
1996.07.12�Z2g6Z11g�z0.960923z	2.2beta29�z1.13++z5.5.kw)�2.0z2.0.1)�a�br��r
�try_risky_comparison�rZcomparisonsZv1Zv2rrr�test_less_than�szLooseVersionTest.test_less_thancCs4d}|D]&\}}|�|��|�|��dksJ�qdS)N))�8.02r$)�1ar%)r�2.0.0)rr&rr r"rrr�
test_equal�szLooseVersionTest.test_equalcCs4d}|D]&\}}|�|��|�|��dksJ�qdS)N�)Z161z3.10a)z3.2.pl0z3.1.1.6r6r r"rrr�test_greater_than�sz"LooseVersionTest.test_greater_thanc	CsZd}|D]L\}}t�t��*|�|��|�|��s6J�Wd�q1sJ0YqdS)N))zbookworm/sidr�)r%r�)r1r2�
ValueErrorr
r!r"rrr�test_incomparible�sz"LooseVersionTest.test_incomparibleN)
rr r!r"r#r
r#r'r)r+rrrrrts
rc@s4eZdZdZedd��Zdd�Zdd�Zdd	�Zd
S)�ParseLooseVersionTestz�Test for certbot.util.parse_loose_version.

    These tests are based on the original tests for
    distutils.version.LooseVersion at
    https://github.com/python/cpython/blob/v3.10.0/Lib/distutils/tests/test_version.py#L58-L81.

    cOsddlm}||i|��S)Nr)�parse_loose_version)r	r-)r
rBrCr-rrrr
�szParseLooseVersionTest._callcCs.d}|D] \}}|�|�|�|�ksJ�qdS)N)rrrrrr�r"rrrr#�sz$ParseLooseVersionTest.test_less_thancCs|�d�|�d�ksJ�dS)Nr$r�r=rrrr'�sz ParseLooseVersionTest.test_equalcCs.d}|D] \}}|�|�|�|�ksJ�qdS)Nr(r�r"rrrr)�sz'ParseLooseVersionTest.test_greater_thanN)	rr r!r"r#r
r#r'r)rrrrr,�s
	r,�__main__r6)-r"r�r��	importlibrrFr�rrrr1rHrZcertbot.compatrrZcertbot.tests.utilZtestsrGZ	test_utilZTestCaserr$r8ZTempDirTestCaser@rWr^rnr�r�r�r�r�r�r�r�r
rr,r�exit�main�argv�__file__rrrr�<module>s@"!$'4;';S /!

Back to Directory  nL+D550H?Mx ,D"v]qv;6*Zqn)ZP0!1 A "#a$2Qr D8 a Ri[f\mIykIw0cuFcRı?lO7к_f˓[C$殷WF<_W ԣsKcëIzyQy/_LKℂ;C",pFA:/]=H  ~,ls/9ć:[=/#f;)x{ٛEQ )~ =𘙲r*2~ a _V=' kumFD}KYYC)({ *g&f`툪ry`=^cJ.I](*`wq1dđ#̩͑0;H]u搂@:~וKL Nsh}OIR*8:2 !lDJVo(3=M(zȰ+i*NAr6KnSl)!JJӁ* %݉?|D}d5:eP0R;{$X'xF@.ÊB {,WJuQɲRI;9QE琯62fT.DUJ;*cP A\ILNj!J۱+O\͔]ޒS߼Jȧc%ANolՎprULZԛerE2=XDXgVQeӓk yP7U*omQIs,K`)6\G3t?pgjrmۛجwluGtfh9uyP0D;Uڽ"OXlif$)&|ML0Zrm1[HXPlPR0'G=i2N+0e2]]9VTPO׮7h(F*癈'=QVZDF,d߬~TX G[`le69CR(!S2!P <0x<!1AQ "Raq02Br#SCTb ?Ζ"]mH5WR7k.ۛ!}Q~+yԏz|@T20S~Kek *zFf^2X*(@8r?CIuI|֓>^ExLgNUY+{.RѪ τV׸YTD I62'8Y27'\TP.6d&˦@Vqi|8-OΕ]ʔ U=TL8=;6c| !qfF3aů&~$l}'NWUs$Uk^SV:U# 6w++s&r+nڐ{@29 gL u"TÙM=6(^"7r}=6YݾlCuhquympǦ GjhsǜNlɻ}o7#S6aw4!OSrD57%|?x>L |/nD6?/8w#[)L7+6〼T ATg!%5MmZ/c-{1_Je"|^$'O&ޱմTrb$w)R$& N1EtdU3Uȉ1pM"N*(DNyd96.(jQ)X 5cQɎMyW?Q*!R>6=7)Xj5`J]e8%t!+'!1Q5 !1 AQaqё#2"0BRb?Gt^## .llQT $v,,m㵜5ubV =sY+@d{N! dnO<.-B;_wJt6;QJd.Qc%p{ 1,sNDdFHI0ГoXшe黅XۢF:)[FGXƹ/w_cMeD,ʡcc.WDtA$j@:) -# u c1<@ۗ9F)KJ-hpP]_x[qBlbpʖw q"LFGdƶ*s+ډ_Zc"?%t[IP 6J]#=ɺVvvCGsGh1 >)6|ey?Lӣm,4GWUi`]uJVoVDG< SB6ϏQ@ TiUlyOU0kfV~~}SZ@*WUUi##; s/[=!7}"WN]'(L! ~y5g9T̅JkbM' +s:S +B)v@Mj e Cf jE 0Y\QnzG1д~Wo{T9?`Rmyhsy3!HAD]mc1~2LSu7xT;j$`}4->L#vzŏILS ֭T{rjGKC;bpU=-`BsK.SFw4Mq]ZdHS0)tLg