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.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)
Nr�����l��������ls	�l����s	��r	�F)�assert_equalr&r'��self�rE�</usr/lib64/python3.9/site-packages/borg/testsuite/helpers.py�test_bigint(s zBigIntTestCase.test_bigintN)�__name__�
__module__�__qualname__rGrErErErFr?&sr?cCs$td�dksJ�td�dks J�dS)N��s�Z0001ff)r(rErErErF�test_bin_to_hex2srMc@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)rDZtmpdir�monkeypatchrErErF�keys_dir8s
zTestLocationWithoutEnv.keys_dircCs�|jddd�ttd��dks"J�td���|dks:J�ttd��dksNJ�ttd	��d
ksbJ�ttd��dksvJ�ttd
��dks�J�td
���|dks�J�ttd��dks�J�ttd��dks�J�ttd��dks�J�td���|dks�J�ttd��dk�sJ�ttd��dk�s"J�ttd��dk�s8J�ttd��dk�sNJ�ttd��d k�sdJ�ttd!��d"k�szJ�ttd#��d$k�s�J�td#���|d%k�s�J�ttd&��d'k�s�J�ttd(��d)k�s�J�dS)*N�	BORG_REPOF�Zraising�'ssh://user@host:1234/some/path::archive�`Location(proto='ssh', user='user', host='host', port=1234, path='/some/path', archive='archive')�host__some_path�ssh://user@host:1234/some/path�[Location(proto='ssh', user='user', host='host', port=1234, path='/some/path', archive=None)�ssh://user@host/some/path�[Location(proto='ssh', user='user', host='host', port=None, path='/some/path', archive=None)z'ssh://user@[::]:1234/some/path::archivez^Location(proto='ssh', user='user', host='::', port=1234, path='/some/path', archive='archive')zssh://user@[::]:1234/some/pathzYLocation(proto='ssh', user='user', host='::', port=1234, path='/some/path', archive=None)Z
____some_pathzssh://user@[::]/some/path�YLocation(proto='ssh', user='user', host='::', port=None, path='/some/path', archive=None)z/ssh://user@[2001:db8::]:1234/some/path::archivezfLocation(proto='ssh', user='user', host='2001:db8::', port=1234, path='/some/path', archive='archive')z&ssh://user@[2001:db8::]:1234/some/pathzaLocation(proto='ssh', user='user', host='2001:db8::', port=1234, path='/some/path', archive=None)Z2001_db8____some_pathz!ssh://user@[2001:db8::]/some/path�aLocation(proto='ssh', user='user', host='2001:db8::', port=None, path='/some/path', archive=None)z6ssh://user@[2001:db8::c0:ffee]:1234/some/path::archivezmLocation(proto='ssh', user='user', host='2001:db8::c0:ffee', port=1234, path='/some/path', archive='archive')z-ssh://user@[2001:db8::c0:ffee]:1234/some/pathzhLocation(proto='ssh', user='user', host='2001:db8::c0:ffee', port=1234, path='/some/path', archive=None)z(ssh://user@[2001:db8::c0:ffee]/some/path�hLocation(proto='ssh', user='user', host='2001:db8::c0:ffee', port=None, path='/some/path', archive=None)z8ssh://user@[2001:db8::192.0.2.1]:1234/some/path::archivezoLocation(proto='ssh', user='user', host='2001:db8::192.0.2.1', port=1234, path='/some/path', archive='archive')z/ssh://user@[2001:db8::192.0.2.1]:1234/some/pathzjLocation(proto='ssh', user='user', host='2001:db8::192.0.2.1', port=1234, path='/some/path', archive=None)z*ssh://user@[2001:db8::192.0.2.1]/some/path�jLocation(proto='ssh', user='user', host='2001:db8::192.0.2.1', port=None, path='/some/path', archive=None)�2001_db8__192_0_2_1__some_pathz>ssh://user@[2a02:0001:0002:0003:0004:0005:0006:0007]/some/path�~Location(proto='ssh', user='user', host='2a02:0001:0002:0003:0004:0005:0006:0007', port=None, path='/some/path', archive=None)zCssh://user@[2a02:0001:0002:0003:0004:0005:0006:0007]:1234/some/pathz~Location(proto='ssh', user='user', host='2a02:0001:0002:0003:0004:0005:0006:0007', port=1234, path='/some/path', archive=None)��delenv�reprr�to_key_filename�rDrVrWrErErF�test_ssh@sp
�
�
�
�
�
�
�
�
�

�

�

�

�

�

�

�

�zTestLocationWithoutEnv.test_sshcCsR|jddd�ttd��dks"J�ttd��dks6J�td���|dksNJ�dS)	NrXFrYzfile:///some/path::archive�]Location(proto='file', user=None, host=None, port=None, path='/some/path', archive='archive')�file:///some/path�XLocation(proto='file', user=None, host=None, port=None, path='/some/path', archive=None)Z	some_pathrgrkrErErF�	test_fileis
�
�z TestLocationWithoutEnv.test_filecCs|jddd�ttd��dks"J�ttd��dks6J�ttd��d	ksJJ�ttd
��dks^J�ttd��d
ksrJ�ttd��dks�J�ttd��dks�J�ttd��dks�J�ttd��dks�J�ttd��dks�J�td���|dks�J�ttd��dk�sJ�dS)NrXFrYzuser@host:/some/path::archive�`Location(proto='ssh', user='user', host='host', port=None, path='/some/path', archive='archive')�user@host:/some/pathr`zuser@[::]:/some/path::archivez^Location(proto='ssh', user='user', host='::', port=None, path='/some/path', archive='archive')zuser@[::]:/some/pathraz%user@[2001:db8::]:/some/path::archivezfLocation(proto='ssh', user='user', host='2001:db8::', port=None, path='/some/path', archive='archive')zuser@[2001:db8::]:/some/pathrbz,user@[2001:db8::c0:ffee]:/some/path::archivezmLocation(proto='ssh', user='user', host='2001:db8::c0:ffee', port=None, path='/some/path', archive='archive')z#user@[2001:db8::c0:ffee]:/some/pathrcz.user@[2001:db8::192.0.2.1]:/some/path::archivezoLocation(proto='ssh', user='user', host='2001:db8::192.0.2.1', port=None, path='/some/path', archive='archive')z%user@[2001:db8::192.0.2.1]:/some/pathrdrez9user@[2a02:0001:0002:0003:0004:0005:0006:0007]:/some/pathrfrgrkrErErF�test_scpqsF
�
�
�
�
�
�
�
�
�
�
�zTestLocationWithoutEnv.test_scpcCs>|jddd�ttd��dks"J�td���|dks:J�dS)NrXFrYz#file:////server/share/path::archivezfLocation(proto='file', user=None, host=None, port=None, path='//server/share/path', archive='archive')Zserver_share_pathrgrkrErErF�test_smb�s

�zTestLocationWithoutEnv.test_smbcCsR|jddd�ttd��dks"J�ttd��dks6J�td���|dksNJ�dS)NrXFrYz
path::archive�WLocation(proto='file', user=None, host=None, port=None, path='path', archive='archive')rT�RLocation(proto='file', user=None, host=None, port=None, path='path', archive=None)rgrkrErErF�test_folder�s
�
�z"TestLocationWithoutEnv.test_foldercCsH|jddd�ttjjddg����|d�ddg�dksDJ�dS)NrXFrY�(rT�_�)rhrrSrT�joinrjrkrErErF�test_long_path�sz%TestLocationWithoutEnv.test_long_pathcCs~|jddd�ttd��dks"J�ttd��dks6J�td���|dksNJ�ttd	��d
ksbJ�td	���|dkszJ�dS)NrXFrYz/some/absolute/path::archive�fLocation(proto='file', user=None, host=None, port=None, path='/some/absolute/path', archive='archive')�/some/absolute/path�aLocation(proto='file', user=None, host=None, port=None, path='/some/absolute/path', archive=None)Zsome_absolute_pathr_r`r\rgrkrErErF�test_abspath�s
�
�
�z#TestLocationWithoutEnv.test_abspathcCs�|jddd�ttd��dks"J�ttd��dks6J�td���|dksNJ�ttd	��d
ksbJ�td	���|dkszJ�ttd��d
ks�J�td���|dks�J�ttd��dks�J�td���|dks�J�dS)NrXFrYzsome/relative/path::archive�eLocation(proto='file', user=None, host=None, port=None, path='some/relative/path', archive='archive')�some/relative/path�`Location(proto='file', user=None, host=None, port=None, path='some/relative/path', archive=None)Zsome_relative_pathzssh://user@host/./some/pathz]Location(proto='ssh', user='user', host='host', port=None, path='/./some/path', archive=None)r\zssh://user@host/~/some/pathz]Location(proto='ssh', user='user', host='host', port=None, path='/~/some/path', archive=None)zssh://user@host/~user/some/pathzaLocation(proto='ssh', user='user', host='host', port=None, path='/~user/some/path', archive=None)Zhost__user_some_pathrgrkrErErF�test_relpath�s(
�
�
�
�
�z#TestLocationWithoutEnv.test_relpathcCsf|jddd�ttd��dks"J�ttd��dks6J�ttd��d	ksJJ�td���|d
ksbJ�dS)NrXFrYz/abs/path:w:cols::arch:col�dLocation(proto='file', user=None, host=None, port=None, path='/abs/path:w:cols', archive='arch:col')z/abs/path:with:colons::archivezhLocation(proto='file', user=None, host=None, port=None, path='/abs/path:with:colons', archive='archive')z/abs/path:with:colonszcLocation(proto='file', user=None, host=None, port=None, path='/abs/path:with:colons', archive=None)Zabs_path_with_colonsrgrkrErErF�test_with_colons�s
�
�
�z'TestLocationWithoutEnv.test_with_colonscCs,ttd��dksJ�ttd��dks(J�dS)Nzhost:path::2016-12-31@23:59:59zdLocation(proto='ssh', user=None, host='host', port=None, path='path', archive='2016-12-31@23:59:59')z$ssh://host/path::2016-12-31@23:59:59zeLocation(proto='ssh', user=None, host='host', port=None, path='/path', archive='2016-12-31@23:59:59'))rirrCrErErF�test_user_parsing�s
�
�z(TestLocationWithoutEnv.test_user_parsingc	Cs,ttd��tdddtjd���dks(J�dS)Nzpath::archive-{utcnow}i��	��ZtzinfozkLocation(proto='file', user=None, host=None, port=None, path='path', archive='archive-2002-09-19T00:00:00'))rirZwith_timestamprr�utcrCrErErF�test_with_timestamp�s�z*TestLocationWithoutEnv.test_with_timestampcCs�|jddd�t�t��td�Wd�n1s60Yt�t��td�Wd�n1sh0Yt�t��t�Wd�n1s�0YdS)NrXFrY�	::archive�::�rh�pytest�raises�
ValueErrorr�rDrVrErErF�test_underspecified�s&&z*TestLocationWithoutEnv.test_underspecifiedcCsD|jddd�t�t��td�Wd�n1s60YdS)NrXFrYz8/some/path/to/repo::archive_name_with/slashes/is_invalidr�r�rErErF�test_no_slashes�sz&TestLocationWithoutEnv.test_no_slashescCsP|jddd�gd�}|D]0}t|���tt|������ksJd|��qdS)NrXFrY)zsome/path::archivezfile://some/path::archivezhost:some/path::archivezhost:~user/some/path::archivezssh://host/some/path::archiverZz
failed: %s)rhrZcanonical_path)rDrVZ	locations�locationrErErF�test_canonical_path�s
��z*TestLocationWithoutEnv.test_canonical_pathcCs^|jddd�t��}ttd��d|�d�ks2J�td�}td�td�}|j|jksZJ�dS)	NrXFrYz/some/path::archive{pid}z[Location(proto='file', user=None, host=None, port=None, path='/some/path', archive='archivez')z/some/path::archive{now:%s}g�������?)rhrS�getpidrirr�archive)rDrVZtest_pidZlocation_time1Zlocation_time2rErErF�test_format_path�s

�z'TestLocationWithoutEnv.test_format_pathcCs6t�t��td�Wd�n1s(0YdS)Nzssh://user@host:/path)r�r�r�rrCrErErF�test_bad_syntax�sz&TestLocationWithoutEnv.test_bad_syntaxcCsNddlm}td�}|��}|jdus*J�|jdks8J�|jd|ksJJ�dS)Nr��hostnamez.ssh://user@host:1234/repos/{hostname}::archivez%ssh://user@host:1234/repos/{hostname}zssh://user@host:1234/repos/%s)�
borg.platformr�rZomit_archiver��rawZ	processed)rDr��locZloc_without_archiverErErF�test_omit_archive�sz(TestLocationWithoutEnv.test_omit_archiveN)rHrIrJr�ZfixturerWrlrprsrtrwr|r�r�r�r�r�r�r�r�r�r�r�rErErErFrN7s&
)
		
rNc@sTeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�ZdS)�TestLocationWithEnvcCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXr]r�r[r�r^�rQrirr�rErErFrl�s
�
��zTestLocationWithEnv.test_sshcCsnddlm}|�dd�ttd��d|�d�ks4J�ttd��d|�d	�ksPJ�tt��d|�d	�ksjJ�dS)
Nrr�rXzssh://user@host:1234/{hostname}r�zBLocation(proto='ssh', user='user', host='host', port=1234, path='/z', archive='archive')r�z', archive=None))r�r�rQrir)rDrVr�rErErF�test_ssh_placeholders

�

�
�z(TestLocationWithEnv.test_ssh_placeholdercCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXrnr�rmr�ror�r�rErErFrps
�
��zTestLocationWithEnv.test_filecCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXrrr�rqr�r`r�r�rErErFrss
�
��zTestLocationWithEnv.test_scpcCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXrTr�rur�rvr�r�rErErFrw#s
�
��zTestLocationWithEnv.test_foldercCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXr~r�r}r�rr�r�rErErFr�,s
�
��z TestLocationWithEnv.test_abspathcCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXr�r�r�r�r�r�r�rErErFr�5s
�
��z TestLocationWithEnv.test_relpathcCsJ|�dd�ttd��dks J�ttd��dks4J�tt��dksFJ�dS)NrXz/abs/path:w:colsz
::arch:colr�r�z^Location(proto='file', user=None, host=None, port=None, path='/abs/path:w:cols', archive=None)r�r�rErErFr�>s
�
��z$TestLocationWithEnv.test_with_colonscCsB|�dd�t�t��td�Wd�n1s40YdS)NrXr~z&::archive_name_with/slashes/is_invalid)rQr�r�r�rr�rErErFr�Gsz#TestLocationWithEnv.test_no_slashesN)rHrIrJrlr�rprsrwr�r�r�r�rErErErFr��s	
						r�c@seZdZdd�ZdS)�FormatTimedeltaTestCasecCs@tddddddd�}tddddddd	�}|�t||�d
�dS)Ni�r<�
rz�r��i��z2 hours 1.10 seconds)rrBr)rDZt0�t1rErErF�testOs
�zFormatTimedeltaTestCase.testN�rHrIrJr�rErErErFr�Msr�cCs�td�dksJ�td�dks J�td�dks0J�td�dks@J�td�dksPJ�td	�d
ks`J�d}t�t��td�Wd�n1s�0Y|r�t�t��td
�Wd�n1s�0Yt�t��td�Wd�n1s�0Y|�r8t�t��td�Wd�n1�s.0Y|�rrt�t��td�Wd�n1�sh0Yt�t��$tdtddf�Wd�n1�s�0Yt�t��$tddtdf�Wd�n1�s�0YdS)N�default)�buzhashr����z
19,23,21,4095zbuzhash,19,23,21,4095z
10,23,16,4095)r�r�r��r�z
fixed,4096)�fixed�rzfixed,4096,200)r�r���Fzcrap,1,2,3,4zbuzhash,5,7,6,4095zbuzhash,19,24,21,4095zbuzhash,23,19,21,4095zfixed,63zfixed,%d,%dr<r�)r+r�r�rr)Zborg2rErErF�test_chunkerparamsXs0&&&((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�/�.)rBrrCrErErFr�vszMakePathSafeTestCase.testNr�rErErErFr�tsr�c@seZdZdd�Zdd�ZdS)�MockArchivecCs||_||_dS�N)�ts�id)rDr�r�rErErF�__init__�szMockArchive.__init__cCs|j�d|j����S)Nz: )r�r�Z	isoformatrCrErErF�__repr__�szMockArchive.__repr__N)rHrIrJr�r�rErErErFr��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�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||||�}t|�|||�k�s�J�|D]}||jd|k�s�J��q�dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrE�r���.0�i��idsrErF�	<setcomp>�rKz3test_prune_split.<locals>.subset.<locals>.<setcomp>rE��lstr�rEr�rF�subset�sz test_prune_split.<locals>.subset��r<r�rr�i�r	i�r�r���r�r�r��-�7r�r�r�)r�rrr�r�setr�)ZruleZnum_to_keepZexpected_idsr��archives�kept_because�keep�itemrErErF�test_prune_split�s(
�r�c
CsBdd�}ttddddddtjd�d�ttddd	dddtjd�d
�ttddddddtjd�d�ttd
dddddtjd�d�g}i}t|dd|�}t|�||gd��ks�J�|dddks�J�|dddks�J�|dddks�J�i}t|dd
|�}t|�||ddg�k�sJ�|dddk�s(J�|dddk�s>J�dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrEr�r�r�rErFr��rKz?test_prune_split_keep_oldest.<locals>.subset.<locals>.<setcomp>rEr�rEr�rFr��sz,test_prune_split_keep_oldest.<locals>.subseti�r<r�rr�r��r	�r�i�r�r�)r<r�r�zyearly[oldest])r�rrr�rr��r�r�r�r�rErErF�test_prune_split_keep_oldest�s"�r�cCs:dd�}g}i}t|dd|�}|gks*J�|iks6J�dS)Ncs�fdd�|D�S)Ncsh|]}|j�vr|�qSrEr�r�r�rErFr��rKz?test_prune_split_no_archives.<locals>.subset.<locals>.<setcomp>rEr�rEr�rFr��sz,test_prune_split_no_archives.<locals>.subsetr�r�)rr�rErErF�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")rBrrCrErErF�
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�r�r�rrrB�value�args�rD�excrErErF�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�rErErF�test_interval_number�s&�z%IntervalTestCase.test_interval_numberN)rHrIrJr�r�r�rErErErFr��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|]}�|�qSrErEr��r�rErFr�	rKzHPruneWithinTestCase.test_prune_within.<locals>.subset.<locals>.<setcomp>rE)r��indicesrEr�rFr�sz5PruneWithinTestCase.test_prune_within.<locals>.subsetcsZ|t|�fD]H}i�t|t|���}��t|��||��t�fdd�|D��sJ�qdS)Nc3s |]}d�|jdkVqdS)�withinrNr�)r��a�r�rErF�	<genexpr>rKzHPruneWithinTestCase.test_prune_within.<locals>.dotest.<locals>.<genexpr>)�reversedrrrBr��all)�
test_archivesr�r��tar�)rDr�r�rF�dotests
�z5PruneWithinTestCase.test_prune_within.<locals>.dotest)�<ii(#i81i�_i�csg|]}�t|d��qS))Zseconds)r)r��s��nowrErF�
<listcomp>rKz9PruneWithinTestCase.test_prune_within.<locals>.<listcomp>cSsg|]\}}t||��qSrE)r�)r�r��daterErErFrsr�rZ2Hr<Z3H)rr<r	Z24H)rr<r	r�Z26H)rr<r	r�r�Z2dZ50H)rr<r	r�r�r�Z3dr�r�r�)rrrr��	enumerate)rDr�Ztest_offsetsZ
test_datesr�rE)rrDr�rF�test_prune_withins&	�z%PruneWithinTestCase.test_prune_withinN)rHrIrJrrErErErFr�sr�c@seZdZdd�ZdS)�StableDictTestCasecCsHtddddd�}|�t|���gd��|�t�t�|����d�dS)Nr<r	r�r�)�foo�bar�boo�baz))rr	)r
r�)r	r�)rr<Z fc78df42cd60691b3ac3dd2a2b39903f)	r%rB�list�items�hashlibZmd5r ZpackbZ	hexdigest)rD�drErErFr�*szStableDictTestCase.testNr�rErErErFr(src@seZdZdd�ZdS)�TestParseTimestampcCsL|�td�tdddddddtj��|�td	�tdddddddtj��dS)
Nz2015-04-19T20:25:00.226410r�r�r�rz�rijtz2015-04-19T20:25:00)rBr)rrr�rCrErErFr�2s$zTestParseTimestamp.testNr�rErErErFr0srcCs�|jddd�|jddd�|jddd�t�tj�d�ks@J�|�dd�t�tj�d�ksbJ�|�dd	�t�d	ks|J�|�dd
�t�d
ks�J�dS)z+test that get_base_dir respects environmentZ
BORG_BASE_DIRFrY�HOMEZUSER�~�rootz~rootz
/var/tmp/homez
/var/tmp/baseN)rhrrSrT�
expanduserrQ�rVrErErF�test_get_base_dir7srcCs�|jddd�|jddd�t�tj�tj�d�dd�ks>J�|�dd�t�tj�dd�ksbJ�|�dd	�t�d	ks|J�d
S)z-test that get_config_dir respects environmentZBORG_CONFIG_DIRFrY�XDG_CONFIG_HOMEr�.config�borg�/var/tmp/.config�/var/tmpN)rhrrSrTr{rrQrrErErF�test_get_config_dirEs"rcCs�|jddd�|jddd�t�tj�tj�d�dd�ks>J�|�dd�t�tj�dd�ksbJ�|�dd	�t�d	ks|J�d
S)z,test that get_cache_dir respects environmentZBORG_CACHE_DIRFrYZXDG_CACHE_HOMErz.cacherz/var/tmp/.cacherN)rhrrSrTr{rrQrrErErF�test_get_cache_dirPs"rcCs�|jddd�|jddd�t�tj�tj�d�ddd�ks@J�|�dd	�t�tj�d	dd�ksfJ�|�dd
�t�d
ks�J�dS)z+test that get_keys_dir respects environmentrOFrYrrrr�keysrrN)rhrrSrTr{rrQrrErErF�test_get_keys_dir[s$rcCs�|jddd�|jddd�t�tj�tj�d�ddd�ks@J�td	d
�tj�tj�d�dddd	�ksjJ�|�dd�t�tj�ddd�ks�J�|�dd�t�dks�J�d
S)z/test that get_security_dir respects environmentZBORG_SECURITY_DIRFrYrrrrZsecurityZ1234)Z
repository_idrrN)rhrrSrTr{rrQrrErErF�test_get_security_dirfs$*r cCsVdddddddddd	d	d
dd
dd
dddddd�}|��D]\}}t|�|ks8J�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�;ix��;i@B�ʚ;lJ)�l�I�5l�N�Zol@=7M.clB�3v^!<���i���N�rr�Zsi_size_map�size�fmtrErErF�test_file_sizers0�r/cCsjddddddddd	d
ddd
dddddddddddddddi
}|��D]\}}t|dd�|ksHJ�qHdS)r!rr"r<r#iz1.00 KiBiz1.00 MiBi@z1.00 GiBlz1.00 TiBl z1.00 PiBlz1.00 EiBr	rAz1.00 ZiB�Pz1.00 YiBr*r$i���z	-1.00 KiBi�z	-1.00 MiBT)ZiecNr+)Ziec_size_mapr-r.rErErF�test_file_size_iec�s �r1cCs@tddd�dksJ�tddd�dks(J�tddd�dks<J�dS)	Nr'r<)Z	precisionz1.2 kBi�z1.3 kBr(z1.0 GB)rrErErErF�test_file_size_precision�sr2cCs:dddddd�}|��D]\}}t|dd�|ksJ�qdS)	Nr"z+1 Bz+1.23 kBr$z-1.23 kB)rr<r'r*i.���T)�signr+r,rErErF�test_file_size_sign�s�r4zstring,value))�1r<)Z20rz)Z5Ki�)z1.75Mi�)z1e+9ge��A)z-1Tg��m�cCst|�t|�ksJ�dSr�)r�int)�stringr�rErErF�test_parse_file_size�s	r8r7)rLu5 ÄpfelZ4Ez2229 bitZ1BcCs6t�t��t|�Wd�n1s(0YdSr�)r�r�r�r�r7rErErF�test_parse_file_size_invalid�sr:cCsLddl}ddl}|j}z|jj|_t�s,J�W||_n||_0t�rHJ�dS)Nr)r Zmsgpack.fallbackZPacker�fallbackr)r Zsaved_packerrErErF�test_is_slow_msgpack�s
r<c@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
TestBuffercCs8tt�}t|��t�sJ�tt�}t|��t�s4J�dSr�)r
�	bytearray�
isinstance�get�bytes�rD�bufferrErErF�	test_type�szTestBuffer.test_typecCspttdd�}|��}t|�t|�kr0dks6nJ�ttdd�}|��}t|�t|�krfdkslnJ�dS)Nr�r-r')r
r>r@�len)rDrC�brErErF�test_len�s"zTestBuffer.test_lencCs�ttdd�}t|�dksJ�|��}|�d�t|�dks>J�|��}||usRJ�|�d�t|�dkslJ�|��}||us�J�|jddd�t|�dks�J�|��}||us�J�dS)N�drEr�T)�init)r
r>rFr@�resize)rDrC�b1�b2�b3Zb4rErErF�test_resize�s

zTestBuffer.test_resizecCsrttddd�}|�d�t|�dks(J�t�tj��|�d�Wd�n1sT0Yt|�dksnJ�dS)NrIr��r-�limit��)r
r>rKrFr�r��MemoryLimitExceededrBrErErF�
test_limit�s
(zTestBuffer.test_limitcCs�ttddd�}|�d�}t|�dks(J�|�d�}t|�dksBJ�||usNJ�|�d�}t|�dkshJ�||ustJ�t�tj��|�d�Wd�n1s�0Yt|�dks�J�dS)NrIr�rP�2rR)r
r>r@rFr�r�rS)rDrCrLrMrNrErErF�test_gets


(zTestBuffer.test_getN)rHrIrJrDrHrOrTrVrErErErFr=�s
r=cCsTtt�}t|�}|D]}t|d�sJ�qtt�}t|�}|D]}t|d�r<J�q<dS)N��input)rr"r>r!r#�ZinputsrXr�rErErF�test_yes_inputsrZcCsPtt�}t|�}|D]}td|d�sJ�qt|�}|D]}td|d�r6J�q6dS)NT�r�rXF)rr$r>r!rYrErErF�test_yes_input_defaultssr\cCs@tgd��}td|d�sJ�td|d�s,J�td|d�r<J�dS)N)�YES�SURE�NOPE)r])ZtruishrX)r^)r_)ZfalsishrX)r>r!rWrErErF�test_yes_input_custom$sr`cCsLtD]}|�d|�tdd�sJ�qtD]}|�d|�tdd�r(J�q(dS)N�
OVERRIDE_THIS��env_var_override)r"rQr!r#�rVr�rErErF�test_yes_env+srecCs:tD]0}|�d|�tddd�s$J�tddd�rJ�qdS)NraT)rcr�F)r$rQr!rdrErErF�test_yes_env_default4srfcCs�tgd��}t|d�rJ�t|d�r(J�t|d�r6J�tgd��}td|d�sRJ�td|d�sbJ�td|d�srJ�tg�}td|d�s�J�td|d�r�J�t�t��tdd�Wd�n1s�0YdS)N)�invalidrL� rWTr[F)r�)r>r!r�r�r�rWrErErF�test_yes_defaults;sricCsHtddtdg�}td|d�s"J�tddtdg�}td|d�rDJ�dS)NrrrzRetry: )�	retry_msgrX�r>r"r!r#rWrErErF�test_yes_retryKsrlcCsLtddtdg�}tdd|d�r$J�tddtdg�}tdd|d�sHJ�dS)NrrrF)Zretryr�rXTrkrWrErErF�test_yes_no_retryRsrmcCs�tgd��}tdddd|d�s"J�|��\}}|dks:J�d|vsFJ�d|vsRJ�d|vs^J�tdddd|d�rtJ�|��\}}|dks�J�d|vs�J�d|vs�J�d|vs�J�dS)N)rg�y�nz	intro-msgz	false-msgztrue-msgz	retry-msg)�msgZ	false_msgZtrue_msgrjrXrL)r>r!�
readouterr)�capfdrX�out�errrErErF�test_yes_outputYsrucCsRd}|�|d�t|d�sJ�|��\}}|dks6J�||vsBJ�d|vsNJ�dS)NZOVERRIDE_SOMETHINGr!rbrL)rQr!rq)rrrVZenv_varrsrtrErErF�test_yes_env_outputisrvcCs�|�dd�|�dd�tddddd	�}|j�d
�|�d�|��\}}|dksVJ�|�d�|�d
�|��\}}|dks�J�|�d�|��\}}|dks�J�|��|��\}}|dks�J�dS)N�COLUMNS�4�LINESr5r&r�r�%3.0f%%��step�startrp�INFO�  0%
i�i�z
 42%
 68%
z100%
z    
)rQr,�logger�setLevel�showrq�finish�rrrV�pirsrtrErErF�!test_progress_percentage_sameliness"



r�z3no working swidth() implementation on this platform��reasonc	Cs8d}t|�dksJ�d}t|�dks(J�d}td�dt|�dt|�t|�}|�dt|��|�d	d
�tddd
d|�d�d�}|j�d�|jd
|gd�|��\}}|d|�d|�|�d�ks�J�|jd|gd�|��\}}|d|�d|�|�d�k�s
J�|�	�|��\}}|d|dk�s4J�dS)Nuスター・トレックr�u/カーク船長です。�z    z100%r<rwryr5rIr�rz%3.0f%% z %sr{r~)�infoz  0% rh�
z100% )
r;rFrQrPr,r�r�r�rqr�)	rrrV�strT�spaces�widthr�rsrtrErErF�"test_progress_percentage_widechars�s&( r�cCs�|�dd�|�dd�tddddd	�}|j�d
�|��|��\}}|dksTJ�|��|��\}}|dkstJ�|��|��\}}|d
ks�J�dS)Nrwrxryr5rIr	rrzr{r~rrLz  2%
)rQr,r�r�r�rqr�rErErF�test_progress_percentage_step�sr�cCs�tddddd�}|j�d�|�d�|��\}}|dks>J�|�d�|��\}}|dks`J�|��|��\}}|dks�J�dS)Nr&r�rrzr{ZWARNrL)r,r�r�r�rqr��rrr�rsrtrErErF�test_progress_percentage_quiet�s

r�cCsrtdtjd�}|��|��\}}|dks.J�|��|��\}}|dksNJ�|��|��\}}|dksnJ�dS)Nr<�r|�filer��
)r-�sys�stderrr�rqr�r�rErErF�test_progress_endless�sr�cCs�tdtjd�}|��|��\}}|dks.J�|��|��\}}|dksNJ�|��|��\}}|dksnJ�|��|��\}}|dks�J�dS)Nr	r�rLr�)r-r�r�r�rqr�rErErF�test_progress_endless_step�sr�cCsltdddi�dksJ�tdddd��dks.J�td	i�d	ks@J�td
i�d
ksRJ�tddd
i�dkshJ�dS)Nz
{space:10}�spacerhz
          z{foobar}ZwrongZcorrect)rZfoobarz
{unknown_key}z{key}{{escaped_key}}z{{escaped_key}}Zescaped_keyr')rrErErErF�test_partial_format�s
r�cCsjttddg��}|�d�dks"J�|�d�dks4J�|js>J�ttg��}|�d�dks\J�|jsfJ�dS)Nsabcsdefr	sabrUscdefrK)r*�iter�readZ	exhausted)ZcfwrErErF�test_chunk_file_wrapper�s
r�cCs�tdd�}t|�gd�ksJ�t|�gd�ks2J�t|�dgksDJ�t�t��t|�Wd�n1sl0Yt�t��t|�Wd�n1s�0Ytdd�}t|�ddggks�J�td	d�}t|�gks�J�dS)
NZabcdefgr�)r�rG�c)r�e�f�g�abr�rGrL)r0�nextr�r��
StopIterationr)�itrErErF�test_chunkit�s
&&

r�cCs�djdd�}tt|��gd�ks$J�tt|dd��gd�ks@J�tt|dd��gd	�ks\J�tt|dd
��gd�ksxJ�tt|dd��gd
�ks�J�dS)Nz$#comment
data1 #data1
data2

 data3
T)�keepends)�data1 #data1�data2�data3F)�lstrip)r�r�z data3)�rstrip)z
data1 #data1
zdata2
zdata3
)Zremove_empty)r�r�rLr�)Zremove_comments)z#commentr�r�r�)�
splitlinesrr)ZconfrErErF�test_clean_lines�s�r�cCsDtdd�}td|�dksJ�td|�dks.J�td|�dks@J�dS)Nzbar baz)rrLz{foo}zfoo{foo}fooz
foobar bazfoo)�dictr��datarErErF�test_format_lines
r�cCs�t�}t�t��td|�s J�Wd�n1s40Yt�t��td|�sXJ�Wd�n1sl0Yt�t��td|�s�J�Wd�n1s�0Yt�t��td|�s�J�Wd�n1s�0YdS)Nz	{invalid}z{}z{now!r}z'{now.__class__.__module__.__builtins__})r�r�r�rrr�rErErF�test_format_line_erroneouss,,,r�cCs2t��}dtd�vsJ�ttd��|jks.J�dS)Nrhz{now}z{now:%Y})rrrr6ZyearrrErErF�test_replace_placeholders!sr�cCstdddid�dksJ�dS)Nz{uuid4}Zuuid4Z
overridden)Z	overrides)rrErErErF�test_override_placeholders'sr�cCst�d�dkS)Nu선r	)r
r;rErErErF�working_swidth+sr�z"swidth() is not supported / activecCsPd}t|d�dksJ�t|d�dks(J�t|d�dks:J�t|d�dksLJ�dS)	Nu-나윤선나윤선나윤선나윤선나윤선r<rLr*r�u나윤���u윤선r.r9rErErF�test_swidth_slice/s
r�cCs,d}t|d�dksJ�t|d�dks(J�dS)Nu.나윤a선나윤선나윤선나윤선나윤선r�u나윤ar�r.r9rErErF�"test_swidth_slice_mixed_characters8sr�cCst�|tj�jdd�S)zPReturns a naive datetime instance representing the timestamp in the UTC timezoneNr�)rZ
fromtimestamprr��replace)Z	timestamprErErF�utcfromtimestamp?sr�cCs�tr�td�dksJ�td�dks$J�td�dks4J�td�dksDJ�dd}t�t��t|�Wd�n1st0Ytt|��tdd	d	�ks�J�tt|�d
�tdd	d	�ks�J�n�td�dks�J�td�dks�J�td�d
dks�J�td�dk�sJ�dd}t�t��t|�Wd�n1�s40Ytt|��tdd	d	�k�s\J�tt|�d
�tdd	d	�k�s~J�dS)Nlr@r*ri���r	rIi�r<r)i�)r3r1r2r�r��
OverflowErrorr�r)Zbeyond_y10krErErF�test_safe_timestampsDs&&"(r�c@sheZdZejje�d�dd�dd��Zejje�d�dd�dd	��Z	ej�
d
d�dd
��Zdd�ZdS)�TestPopenWithErrorHandlingr�z"test" binary is neededr�cCstd�}|��dksJ�dS)Nztest 1r)r5�wait�rD�procrErErF�test_simplebsz&TestPopenWithErrorHandling.test_simplezborg-foobar-test-notexistz4"borg-foobar-test-notexist" binary exists (somehow?)cCstd�}|dusJ�dS)Nzborg-foobar-test-notexist 1234r4r�rErErF�test_not_foundgsz)TestPopenWithErrorHandling.test_not_found�cmd)zmismatched "quotezfoo --bar="bazrLcCst|�}|dusJ�dSr�r4)rDr�r�rErErFr�lsz*TestPopenWithErrorHandling.test_bad_syntaxcCs:t�t��tddd�Wd�n1s,0YdS)NrLT)�shell)r�r��AssertionErrorr5rCrErErF�
test_shellusz%TestPopenWithErrorHandling.test_shellN)
rHrIrJr��mark�skipif�shutil�whichr�r��parametrizer�r�rErErErFr�as


r�cCsXtdd�tjusJ�tdd�tjus(J�tdd�tjjus>J�tdd�tjjusTJ�dS)N�-�r�w�rb�wb)r6r��stdin�stdoutrCrErErErF�test_dash_openzsr�cCs�dgd�}}t|�|��}tt|��|ks0J�dgd�}}t|�|�d�}tt||d��gd�kslJ�dgd�}}t|�|��}tt||d��|ks�J�dgd�}}t|�|��}tt|��|ks�J�dS)	Nr�)rzbar/bazuαáčő�)r�r
Zspam)rUZSEP�
)sfoosblop	sgr�ezi)rr{rr7r)rUr�fdrErErF�test_iter_separated�sr�cCs$td�dksJ�td�dks J�dS)Nz\n\0\x23z
#uäç\nuäç
r8rErErErF�test_eval_escapes�sr�)�r
rSr�r��argparserrrr�iorr�timerr�rLr
Z	constantsrZhelpersrr
rrrrrrrrrrrrrrrrrrr r!r"r#r$r%r&r'r(r)r*r+r,r-r/r0r1r2r3r5r6r7r9r:r;r=r>r?rMrNr�r�r�r�r�r�r�r�r�r�r�r�rrrrrrr r/r1r2r4r8r:r<r=rZr\r`rerfrirlrmrurvr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rErErErF�<module>s�$GP

��
  
!#

7