HEX
Server: LiteSpeed
System: Linux shams.tasjeel.ae 5.14.0-611.5.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Nov 11 08:09:09 EST 2025 x86_64
User: infowars (1469)
PHP: 8.2.29
Disabled: NONE
Upload Files
File: //usr/lib64/python3.9/site-packages/borg/testsuite/__pycache__/helpers.cpython-39.opt-1.pyc
a

HZ�h���
@s�ddlZddlZddlZddlZddlmZddlmZmZmZddl	m
Z
mZddlm
Z
ddlZddlmZddlmZdd	lmZdd
lmZddlmZmZmZmZmZmZmZddlmZmZdd
lmZm Z m!Z!ddlm"Z"m#Z#m$Z$m%Z%m&Z&ddlm'Z'ddlm(Z(ddlm)Z)m*Z*m+Z+m,Z,ddlm-Z-m.Z.m/Z/m0Z0ddlm1Z1m2Z2m3Z3ddlm4Z4m5Z5ddlm6Z6ddlm7Z7ddlm8Z8m9Z9m:Z:ddlm;Z;ddlm<Z<ddlm=Z=ddlm>Z>ddlm?Z?m@Z@ddlmAZAmBZBGdd �d eA�ZCd!d"�ZDGd#d$�d$�ZEGd%d&�d&�ZFGd'd(�d(eA�ZGd)d*�ZHGd+d,�d,eA�ZIGd-d.�d.�ZJejK�Ld/d0d1d2d3d4d5d6d7dgfg�d8d9��ZMd:d;�ZNd<d=�ZOGd>d?�d?eA�ZPGd@dA�dAeA�ZQGdBdC�dCeA�ZRGdDdE�dEeA�ZSdFdG�ZTdHdI�ZUdJdK�ZVdLdM�ZWdNdO�ZXdPdQ�ZYdRdS�ZZdTdU�Z[dVdW�Z\ejK�LdXdY�dZd[��Z]ejK�Ld\d]�d^d_��Z^d`da�Z_Gdbdc�dc�Z`ddde�Zadfdg�Zbdhdi�Zcdjdk�Zddldm�Zedndo�Zfdpdq�Zgdrds�Zhdtdu�Zidvdw�Zjdxdy�ZkejKjle?dzd{�d|d}��Zmd~d�Znd�d��Zod�d��Zpd�d��Zqd�d��Zrd�d��Zsd�d��Ztd�d��Zud�d��Zvd�d��Zwd�d��Zxd�d��Zyd�d��ZzejKjlez�d�d{�d�d���Z{ejKjlez�d�d{�d�d���Z|d�d��Z}d�d��Z~Gd�d��d��Zd�d��Z�d�d��Z�d�d��Z�dS)��N)�ArgumentTypeError)�datetime�timezone�	timedelta)�StringIO�BytesIO)�sleep�)�platform)�
MAX_DATA_SIZE)�Location)�Buffer)�partial_format�format_file_size�parse_file_size�format_timedelta�format_line�PlaceholderError�replace_placeholders)�make_path_safe�clean_lines)�interval�prune_within�prune_split)�get_base_dir�
get_cache_dir�get_keys_dir�get_security_dir�get_config_dir)�is_slow_msgpack)�msgpack)�yes�TRUISH�FALSISH�
DEFAULTISH)�
StableDict�
int_to_bigint�
bigint_to_int�
bin_to_hex)�parse_timestamp�ChunkIteratorFileWrapper�
ChunkerParams)�ProgressIndicatorPercent�ProgressIndicatorEndless)�swidth_slice)�chunkit)�safe_ns�safe_s�SUPPORT_32BIT_PLATFORMS��popen_with_error_handling)�	dash_open)�iter_separated)�eval_escapes)�is_win32�swidth�)�BaseTestCase�
FakeInputsc@seZdZdd�ZdS)�BigIntTestCasecCs�|�td�d�|�td�d�|�td�d�|�td�d�|�td�d�|�ttdd	��dd	�|�ttdd	��dd	�dS)
Nrl����l��������ls	�l����s	��r	�F)�assert_equalr&r'��self�rB�</usr/lib64/python3.9/site-packages/borg/testsuite/helpers.py�test_bigint(s zBigIntTestCase.test_bigintN)�__name__�
__module__�__qualname__rDrBrBrBrCr=&sr=cCsdS�NrBrBrBrBrC�test_bin_to_hex2srIc@s�eZdZejdd��Zdd�Zdd�Zdd�Zd	d
�Z	dd�Z
d
d�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%S)&�TestLocationWithoutEnvcCs2t|�}|�d|�|�tjj�s.|tjj7}|S)N�
BORG_KEYS_DIR)�str�setenv�endswith�os�path�sep)rAZtmpdir�monkeypatchrBrBrC�keys_dir8s
zTestLocationWithoutEnv.keys_dircCs|jddd�dS�N�	BORG_REPOF�Zraising��delenv�rArRrSrBrBrC�test_ssh@s%zTestLocationWithoutEnv.test_sshcCs|jddd�dSrTrWrYrBrBrC�	test_fileisz TestLocationWithoutEnv.test_filecCs|jddd�dSrTrWrYrBrBrC�test_scpqszTestLocationWithoutEnv.test_scpcCs|jddd�dSrTrWrYrBrBrC�test_smb�szTestLocationWithoutEnv.test_smbcCs|jddd�dSrTrWrYrBrBrC�test_folder�sz"TestLocationWithoutEnv.test_foldercCs|jddd�dSrTrWrYrBrBrC�test_long_path�sz%TestLocationWithoutEnv.test_long_pathcCs|jddd�dSrTrWrYrBrBrC�test_abspath�sz#TestLocationWithoutEnv.test_abspathcCs|jddd�dSrTrWrYrBrBrC�test_relpath�sz#TestLocationWithoutEnv.test_relpathcCs|jddd�dSrTrWrYrBrBrC�test_with_colons�sz'TestLocationWithoutEnv.test_with_colonscCsdSrHrBr@rBrBrC�test_user_parsing�sz(TestLocationWithoutEnv.test_user_parsingcCsdSrHrBr@rBrBrC�test_with_timestamp�sz*TestLocationWithoutEnv.test_with_timestampcCs�|jddd�t�t��td�Wd�n1s60Yt�t��td�Wd�n1sh0Yt�t��t�Wd�n1s�0YdS)NrUFrVz	::archivez::�rX�pytest�raises�
ValueErrorr�rArRrBrBrC�test_underspecified�s&&z*TestLocationWithoutEnv.test_underspecifiedcCsD|jddd�t�t��td�Wd�n1s60YdS)NrUFrVz8/some/path/to/repo::archive_name_with/slashes/is_invalidrerirBrBrC�test_no_slashes�sz&TestLocationWithoutEnv.test_no_slashescCs$|jddd�gd�}|D]}qdS)NrUFrV)zsome/path::archivezfile://some/path::archivezhost:some/path::archivezhost:~user/some/path::archivezssh://host/some/path::archivez'ssh://user@host:1234/some/path::archiverW)rArRZ	locations�locationrBrBrC�test_canonical_path�sz*TestLocationWithoutEnv.test_canonical_pathcCs2|jddd�t��}td�}td�td�}dS)NrUFrVz/some/path::archive{now:%s}g�������?)rXrO�getpidrr)rArRZtest_pidZlocation_time1Zlocation_time2rBrBrC�test_format_path�sz'TestLocationWithoutEnv.test_format_pathcCs6t�t��td�Wd�n1s(0YdS)Nzssh://user@host:/path)rfrgrhrr@rBrBrC�test_bad_syntax�sz&TestLocationWithoutEnv.test_bad_syntaxcCs ddlm}td�}|��}dS)Nr��hostnamez.ssh://user@host:1234/repos/{hostname}::archive)�
borg.platformrrrZomit_archive)rArr�locZloc_without_archiverBrBrC�test_omit_archive�sz(TestLocationWithoutEnv.test_omit_archiveN)rErFrGrfZfixturerSrZr[r\r]r^r_r`rarbrcrdrjrkrmrorprurBrBrBrCrJ7s&
)
		
rJc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestLocationWithEnvcCs|�dd�dS)NrUzssh://user@host:1234/some/path�rMrirBrBrCrZ�szTestLocationWithEnv.test_sshcCsddlm}|�dd�dS)NrrqrUzssh://user@host:1234/{hostname})rsrrrM)rArRrrrBrBrC�test_ssh_placeholdersz(TestLocationWithEnv.test_ssh_placeholdercCs|�dd�dS)NrUzfile:///some/pathrwrirBrBrCr[szTestLocationWithEnv.test_filecCs|�dd�dS)NrUzuser@host:/some/pathrwrirBrBrCr\szTestLocationWithEnv.test_scpcCs|�dd�dS)NrUrPrwrirBrBrCr^#szTestLocationWithEnv.test_foldercCs|�dd�dS)NrU�/some/absolute/pathrwrirBrBrCr`,sz TestLocationWithEnv.test_abspathcCs|�dd�dS)NrUzsome/relative/pathrwrirBrBrCra5sz TestLocationWithEnv.test_relpathcCs|�dd�dS)NrUz/abs/path:w:colsrwrirBrBrCrb>sz$TestLocationWithEnv.test_with_colonscCsB|�dd�t�t��td�Wd�n1s40YdS)NrUryz&::archive_name_with/slashes/is_invalid)rMrfrgrhrrirBrBrCrkGsz#TestLocationWithEnv.test_no_slashesN)rErFrGrZrxr[r\r^r`rarbrkrBrBrBrCrv�s	
						rvc@seZdZdd�ZdS)�FormatTimedeltaTestCasecCs@tddddddd�}tddddddd	�}|�t||�d
�dS)Ni�r:�
��r��i��z2 hours 1.10 seconds)rr?r)rAZt0�t1rBrBrC�testOs
�zFormatTimedeltaTestCase.testN�rErFrGr�rBrBrBrCrzMsrzcCs�d}t�t��td�Wd�n1s,0Y|rlt�t��td�Wd�n1sb0Yt�t��td�Wd�n1s�0Y|r�t�t��td�Wd�n1s�0Y|�rt�t��td�Wd�n1�s0Yt�t��$tdtdd	f�Wd�n1�sD0Yt�t��$tdd	tdf�Wd�n1�s�0YdS)
NFzcrap,1,2,3,4zbuzhash,5,7,6,4095zbuzhash,19,24,21,4095zbuzhash,23,19,21,4095zfixed,63zfixed,%d,%dr:i)rfrgrr+r)Zborg2rBrBrC�test_chunkerparamsXs$&&&&(4r�c@seZdZdd�ZdS)�MakePathSafeTestCasecCs�|�td�d�|�td�d�|�td�d�|�td�d�|�td�d�|�td�d�|�td�d	�|�td�d	�dS)
Nz/foo/bar�foo/barz/f/barzf/barzfo/barz
../foo/barz
../../foo/bar�/�.)r?rr@rBrBrCr�vszMakePathSafeTestCase.testNr�rBrBrBrCr�tsr�c@seZdZdd�Zdd�ZdS)�MockArchivecCs||_||_dSrH)�ts�id)rAr�r�rBrBrC�__init__�szMockArchive.__init__cCs|j�d|j����S)Nz: )r�r�Z	isoformatr@rBrBrC�__repr__�szMockArchive.__repr__N)rErFrGr�r�rBrBrBrCr��sr�zrule,num_to_keep,expected_ids)�yearlyr})�
r	r:)Zmonthlyr})r��r)Zweeklyr	)r�r�)�dailyr})r�r��)Zhourlyr})r�r{r�)Zminutelyr})r�r{�	)Zsecondlyr)r�r~�r{r�cCs�dd�}ttddddddtjd�d�ttddddddtjd�d	�ttd
dddddtjd�d�ttd
d	ddddtjd�d�ttd
dddddtjd�d
�ttd
dd	dddtjd�d�ttd
dddddtjd�d�ttd
dddddtjd�d�ttd
dddddtjd�d�ttd
dddddtjd�d�ttd
dddddtjd�d�ttd
dddddtjd�d�ttd
ddddd
tjd�d�g
}i}t||||�}|D]}�q�dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrB�r���.0�i��idsrBrC�	<setcomp>��z3test_prune_split.<locals>.subset.<locals>.<setcomp>rB��lstr�rBr�rC�subset�sz test_prune_split.<locals>.subset��r:r{r�Ztzinfoi�r	i�r}r��r�r�r��-�7r�r~r��r�rr�utcr)ZruleZnum_to_keepZexpected_idsr��archives�kept_because�keep�itemrBrBrC�test_prune_split�s&
�r�c
Cs�dd�}ttddddddtjd�d�ttddd	dddtjd�d
�ttddddddtjd�d�ttd
dddddtjd�d�g}i}t|dd|�}i}t|dd
|�}dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrBr�r�r�rBrCr��r�z?test_prune_split_keep_oldest.<locals>.subset.<locals>.<setcomp>rBr�rBr�rCr��sz,test_prune_split_keep_oldest.<locals>.subseti�r:r{rr�r~�r	�r}i�rr�r��r�r�r�r�rBrBrC�test_prune_split_keep_oldest�s�r�cCs"dd�}g}i}t|dd|�}dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrBr�r�r�rBrCr��r�z?test_prune_split_no_archives.<locals>.subset.<locals>.<setcomp>rBr�rBr�rCr��sz,test_prune_split_no_archives.<locals>.subsetr�r})rr�rBrBrC�test_prune_split_no_archives�s
r�c@s$eZdZdd�Zdd�Zdd�ZdS)�IntervalTestCasecCsT|�td�d�|�td�d�|�td�d�|�td�d�|�td	�d
�dS)N�1Hr:Z1d��1w��1mi��1yi8")r?rr@rBrBrC�
test_interval�s
zIntervalTestCase.test_intervalcCs�t�t��}td�Wd�n1s(0Y|�|jjd�t�t��}td�Wd�n1sj0Y|�|jjd�t�t��}td�Wd�n1s�0Y|�|jjd�dS)N�H)zAUnexpected interval number "": expected an integer greater than 0z-1d)zCUnexpected interval number "-1": expected an integer greater than 0Zfood)zDUnexpected interval number "foo": expected an integer greater than 0�rfrgrrr?�value�args�rA�excrBrBrC�test_interval_time_unit�s$&�&�&�z(IntervalTestCase.test_interval_time_unitcCsFt�t��}td�Wd�n1s(0Y|�|jjd�dS)N�5)zLUnexpected interval time unit "5": expected one of ['H', 'd', 'w', 'm', 'y']r�r�rBrBrC�test_interval_number�s&�z%IntervalTestCase.test_interval_numberN)rErFrGr�r�r�rBrBrBrCr��sr�c@seZdZdd�ZdS)�PruneWithinTestCasecsdd����fdd�}gd�}t�tj���fdd�|D�}dd�t|�D�}||d	d
g�||dd
dg�||d
gd��||dgd��||dgd��||dgd��||dgd��||dgd��||dgd��||dgd��||dgd��dS)Ncs�fdd�|D�S)Ncsh|]}�|�qSrBrBr��r�rBrCr�	r�zHPruneWithinTestCase.test_prune_within.<locals>.subset.<locals>.<setcomp>rB)r��indicesrBr�rCr�sz5PruneWithinTestCase.test_prune_within.<locals>.subsetcs@|t|�fD].}i�t|t|���}��t|��||��qdSrH)�reversedrrr?�set)�
test_archivesZwithinr��tar�)rAr�)r�rC�dotests
�z5PruneWithinTestCase.test_prune_within.<locals>.dotest)�<ii(#i81i�_i�csg|]}�t|d��qS))Zseconds)r)r��s��nowrBrC�
<listcomp>r�z9PruneWithinTestCase.test_prune_within.<locals>.<listcomp>cSsg|]\}}t||��qSrB)r�)r�r��daterBrBrCr�sr�rZ2Hr:Z3H)rr:r	Z24H)rr:r	r}Z26H)rr:r	r}rZ2dZ50H)rr:r	r}rr�Z3dr�r�r�)rr�rr��	enumerate)rAr�Ztest_offsetsZ
test_datesr�rB)r�rAr�rC�test_prune_withins&	�z%PruneWithinTestCase.test_prune_withinN)rErFrGr�rBrBrBrCr�sr�c@seZdZdd�ZdS)�StableDictTestCasecCsHtddddd�}|�t|���gd��|�t�t�|����d�dS)Nr:r	r}r)�foo�bar�boo�baz))r�r	)r�r)r�r})r�r:Z fc78df42cd60691b3ac3dd2a2b39903f)	r%r?�list�items�hashlibZmd5r ZpackbZ	hexdigest)rA�drBrBrCr�*szStableDictTestCase.testNr�rBrBrBrCr�(sr�c@seZdZdd�ZdS)�TestParseTimestampcCsL|�td�tdddddddtj��|�td	�tdddddddtj��dS)
Nz2015-04-19T20:25:00.226410r�r�r|�rijtz2015-04-19T20:25:00)r?r)rrr�r@rBrBrCr�2s$zTestParseTimestamp.testNr�rBrBrBrCr�0sr�cCsR|jddd�|jddd�|jddd�|�dd�|�dd�|�dd�d	S)
z+test that get_base_dir respects environmentZ
BORG_BASE_DIRFrV�HOMEZUSER�rootz
/var/tmp/homez
/var/tmp/baseN�rXrM�rRrBrBrC�test_get_base_dir7sr�cCs8|jddd�|jddd�|�dd�|�dd�dS)z-test that get_config_dir respects environmentZBORG_CONFIG_DIRFrV�XDG_CONFIG_HOME�/var/tmp/.config�/var/tmpNr�r�rBrBrC�test_get_config_dirEs
r�cCs8|jddd�|jddd�|�dd�|�dd�dS)z,test that get_cache_dir respects environmentZBORG_CACHE_DIRFrVZXDG_CACHE_HOMEz/var/tmp/.cacher�Nr�r�rBrBrC�test_get_cache_dirPs
r�cCs8|jddd�|jddd�|�dd�|�dd�dS)z+test that get_keys_dir respects environmentrKFrVr�r�r�Nr�r�rBrBrC�test_get_keys_dir[s
r�cCs8|jddd�|jddd�|�dd�|�dd�dS)z/test that get_security_dir respects environmentZBORG_SECURITY_DIRFrVr�r�r�Nr�r�rBrBrC�test_get_security_dirfs
r�cCsFdddddddddd	d	d
dd
dd
dddddd�}|��D]\}}q8dS)�!test the size formatting routines�0 B�1 Bz142 Bz999 Bz1.00 kBz1.23 kBz1.24 kBz1.01 kBz	999.99 MBz1.00 GBz1.00 MBz1.00 TBz1.00 PBz1.00 EBz1.00 ZBz1.00 YB�-1 Bz-1.01 kB)rr:�i���i���i�i�i�;i�;ix��;i@Biʚ;lJ)�l�I�5l�N�Zol@=7M.clB�3v^!<���i���N�r��Zsi_size_map�size�fmtrBrBrC�test_file_sizers0�r�cCsVddddddddd	d
ddd
dddddddddddddddi
}|��D]\}}qHdS)r�rr�r:r�iz1.00 KiBiz1.00 MiBi@z1.00 GiBlz1.00 TiBl z1.00 PiBlz1.00 EiBr	r>z1.00 ZiB�Pz1.00 YiBr�r�i���z	-1.00 KiBi�z	-1.00 MiBNr�)Ziec_size_mapr�r�rBrBrC�test_file_size_iec�s �r�cCsdSrHrBrBrBrBrC�test_file_size_precision�sr�cCs&dddddd�}|��D]\}}qdS)Nr�z+1 Bz+1.23 kBr�z-1.23 kB)rr:r�r�i.���r�r�rBrBrC�test_file_size_sign�s�r�zstring,value))�1r:)Z20r|)Z5Ki�)z1.75Mi�)z1e+9ge��A)z-1Tg��m�cCsdSrHrB)�stringr�rBrBrC�test_parse_file_size�s	r�r�)�u5 ÄpfelZ4Ez2229 bitZ1BcCs6t�t��t|�Wd�n1s(0YdSrH)rfrgrhr�r�rBrBrC�test_parse_file_size_invalid�srcCs8ddl}ddl}|j}z|jj|_W||_n||_0dS)Nr)r Zmsgpack.fallbackZPacker�fallback)r Zsaved_packerrBrBrC�test_is_slow_msgpack�s
rc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestBuffercCstt�}tt�}dSrH)r
�	bytearray�bytes�rA�bufferrBrBrC�	test_type�szTestBuffer.test_typecCs,ttdd�}|��}ttdd�}|��}dS)Nr�r�r�)r
r�get)rAr�brBrBrC�test_len�s
zTestBuffer.test_lencCsRttdd�}|��}|�d�|��}|�d�|��}|jddd�|��}dS)N�dr	��T)�init)r
rr
�resize)rAr�b1�b2�b3Zb4rBrBrC�test_resize�s

zTestBuffer.test_resizecCsRttddd�}|�d�t�tj��|�d�Wd�n1sD0YdS)Nr
r�r��limit��)r
rrrfrg�MemoryLimitExceededrrBrBrC�
test_limit�s

(zTestBuffer.test_limitcCsfttddd�}|�d�}|�d�}|�d�}t�tj��|�d�Wd�n1sX0YdS)Nr
rr�2r)r
rr
rfrgr)rArrrrrBrBrC�test_gets


(zTestBuffer.test_getN)rErFrGrrrrrrBrBrBrCr�s
rcCs8tt�}t|�}|D]}qtt�}t|�}|D]}q.dSrH)r�r"r<r#�Zinputs�inputr�rBrBrC�test_yes_inputsrcCs0tt�}t|�}|D]}qt|�}|D]}q&dSrH)r�r$r<rrBrBrC�test_yes_input_defaultssrcCstgd��}dS)N)ZYESZSUREZNOPE)r<�rrBrBrC�test_yes_input_custom$sr!cCs0tD]}|�d|�qtD]}|�d|�qdS�NZ
OVERRIDE_THIS)r"rMr#�rRr�rBrBrC�test_yes_env+sr$cCstD]}|�d|�qdSr")r$rMr#rBrBrC�test_yes_env_default4sr%cCsXtgd��}tgd��}tg�}t�t��tdd�Wd�n1sJ0YdS)N)�invalidr�� )�default)r<rfrgrhr!r rBrBrC�test_yes_defaults;s
r)cCs(tddtdg�}tddtdg�}dS�Nr�r�r�r<r"r#r rBrBrC�test_yes_retryKsr,cCs(tddtdg�}tddtdg�}dSr*r+r rBrBrC�test_yes_no_retryRsr-cCs(tgd��}|��\}}|��\}}dS)N)r&�y�n)r<�
readouterr)�capfdr�out�errrBrBrC�test_yes_outputYsr4cCs d}|�|d�|��\}}dS)NZOVERRIDE_SOMETHINGr!)rMr0)r1rRZenv_varr2r3rBrBrC�test_yes_env_outputisr5cCs�|�dd�|�dd�tddddd	�}|j�d
�|�d�|��\}}|�d�|�d�|��\}}|�d�|��\}}|��|��\}}dS)
N�COLUMNS�4�LINESr�r�r�r�%3.0f%%��step�start�msg�INFOi�i�)rMr,�logger�setLevel�showr0�finish�r1rR�pir2r3rBrBrC�!test_progress_percentage_sameliness



rEz3no working swidth() implementation on this platform��reasonc	Cs�d}d}d}td�dt|�dt|�t|�}|�dt|��|�dd�td	d
dd|�d
�d�}|j�d�|jd|gd�|��\}}|jd	|gd�|��\}}|�	�|��\}}dS)Nuスター・トレックu/カーク船長です。z    z100%r:r6r8r�r
r�rz%3.0f%% z %sr:r>)�info)
�lenr9rMrLr,r?r@rAr0rB)	r1rR�strP�spaces�widthrDr2r3rBrBrC�"test_progress_percentage_widechars�s(rMcCst|�dd�|�dd�tddddd	�}|j�d
�|��|��\}}|��|��\}}|��|��\}}dS)Nr6r7r8r�r
r	rr9r:r>)rMr,r?r@rAr0rCrBrBrC�test_progress_percentage_step�srNcCs`tddddd�}|j�d�|�d�|��\}}|�d�|��\}}|��|��\}}dS)Nr�r�rr9r:ZWARN)r,r?r@rAr0rB�r1rDr2r3rBrBrC�test_progress_percentage_quiet�s

rPcCsNtdtjd�}|��|��\}}|��|��\}}|��|��\}}dS)Nr:�r;�file)r-�sys�stderrrAr0rBrOrBrBrC�test_progress_endless�srUcCsbtdtjd�}|��|��\}}|��|��\}}|��|��\}}|��|��\}}dS)Nr	rQ)r-rSrTrAr0rOrBrBrC�test_progress_endless_step�srVcCsdSrHrBrBrBrBrC�test_partial_format�srWcCs ttddg��}ttg��}dS)Nsabcsdef)r*�iter)ZcfwrBrBrC�test_chunk_file_wrapper�srYcCs�tdd�}t�t��t|�Wd�n1s20Yt�t��t|�Wd�n1sd0Ytdd�}tdd�}dS)NZabcdefgr}�abr�)r/rfrg�
StopIteration�next)�itrBrBrC�test_chunkit�s
&&

r^cCsdjdd�}dS)Nz$#comment
data1 #data1
data2

 data3
T)�keepends)�
splitlines)ZconfrBrBrC�test_clean_lines�s�racCstdd�}dS)Nzbar baz)r�)�dict��datarBrBrC�test_format_lines
recCs�t�}t�t��Wd�n1s&0Yt�t��Wd�n1sP0Yt�t��Wd�n1sz0Yt�t��Wd�n1s�0YdSrH)rbrfrgrrcrBrBrC�test_format_line_erroneoussrfcCst��}dSrH)rr�r�rBrBrC�test_replace_placeholders!srgcCsdSrHrBrBrBrBrC�test_override_placeholders'srhcCst�d�dkS)Nu선r	)r
r9rBrBrBrC�working_swidth+sriz"swidth() is not supported / activecCsd}dS)Nu-나윤선나윤선나윤선나윤선나윤선rBr�rBrBrC�test_swidth_slice/srjcCsd}dS)Nu.나윤a선나윤선나윤선나윤선나윤선rBr�rBrBrC�"test_swidth_slice_mixed_characters8srkcCst�|tj�jdd�S)zPReturns a naive datetime instance representing the timestamp in the UTC timezoneNr�)rZ
fromtimestamprr��replace)Z	timestamprBrBrC�utcfromtimestamp?srmcCs~tr@dd}t�t��t|�Wd�qz1s40Yn:dd}t�t��t|�Wd�n1sp0YdS)Nr	r
)r2rfrg�
OverflowErrorrm)Zbeyond_y10krBrBrC�test_safe_timestampsDs&	&roc@sheZdZejje�d�dd�dd��Zejje�d�dd�dd	��Z	ej�
d
d�dd
��Zdd�ZdS)�TestPopenWithErrorHandlingr�z"test" binary is neededrFcCstd�}dS)Nztest 1r3�rA�procrBrBrC�test_simplebsz&TestPopenWithErrorHandling.test_simplezborg-foobar-test-notexistz4"borg-foobar-test-notexist" binary exists (somehow?)cCstd�}dS)Nzborg-foobar-test-notexist 1234r3rqrBrBrC�test_not_foundgsz)TestPopenWithErrorHandling.test_not_found�cmd)zmismatched "quotezfoo --bar="bazr�cCst|�}dSrHr3)rArurrrBrBrCrplsz*TestPopenWithErrorHandling.test_bad_syntaxcCs:t�t��tddd�Wd�n1s,0YdS)Nr�T)�shell)rfrg�AssertionErrorr4r@rBrBrC�
test_shellusz%TestPopenWithErrorHandling.test_shellN)
rErFrGrf�mark�skipif�shutil�whichrsrt�parametrizerprxrBrBrBrCrpas


rpcCsdSrHrBrBrBrBrC�test_dash_openzsr~cCsxdgd�}}t|�|��}dgd�}}t|�|�d�}dgd�}}t|�|��}dgd�}}t|�|��}dS)N�
)r�zbar/bazuαáčő�)r�r�ZspamZSEP�
)sfoosblop	sgr�ezi)r�joinr)rQr��fdrBrBrC�test_iter_separated�sr�cCsdSrHrBrBrBrBrC�test_eval_escapes�sr�)�r�rOr{rS�argparserrrr�iorr�timerrfr�r
Z	constantsrZhelpersrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r.r/r0r1r2r4r5r6r7r8r9r;r<r=rIrJrvrzr�r�r�ryr}r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrrrr!r$r%r)r,r-r4r5rErzrMrNrPrUrVrWrYr^rarerfrgrhrirjrkrmrorpr~r�r�rBrBrBrC�<module>s�$GP

��
  
!#

7