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__/patterns.cpython-39.pyc
a

HZ�h�C�@sddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZddlmZm
Z
ddlmZmZdd�Zej�dd	gfd
dgfddgfd
dgfddgfddgfddgfg�dd��Zej�ddgfdgfddgfddgfg�dd��Zej�ddddgfdgfdddgfd d!d"gfd#d!d"gfd$d%d&gfd'd(d)gfg	�d*d+��Zej�ddgfd,gfdd-d.gfd/d0gfg�d1d2��Zej�dd3d4d5d6gd7�fd8gd7�fdgfd9gd:�fd;ddgfd<d!d"gfd=dd%gfd>d!d"gfd?d%d&gfd@d(d)gfdAdBdCgfg�dDdE��Zej�dd5dFdGd4d6gdH�fd8gdH�fdgfd9gd:�fd;ddgfdId!d"gfdJd!d"gfdKd!d"gfd=gfdLdd%gfd>d!d"gfdMd%d&gfdNd%d&gfdOgdP�fd@gdQ�fdRd(d)gfdSdTdUgfdVdUgfdAdBgfdWdCgfg�dXdY��Zej�ddZd[d\d]gfd^gfd_gd`�fg�dadb��Zdcdd�Zdedf�Zdgdh�Zej�diedj��dkdl��Zej�diedm��dndo��Zej�dieedpdq���drds��Z ej�dtgdfdugdfdvggfgdw�gdx�fdyggfdzggd{�fd|ggd}�fgd~�dgfd�ggd��fd�ggd��fd�gdfd�ggfd�gdfgd��ddgfd�d�ggd��fd�d�ggd��fg�d�d���Z!ej�d�ggdfduggdfd�ggd�fd�d�ggdfd�gd	gdfd�d�gd	gdfgd��d
gd�fg�d�d���Z"d�d��Z#ej�d�d�gd�gg�d�d���Z$ej�dtgdfdugdfd�ggfd�ggd��fd�ggd��fd�ggd��fd�d�ggd��fd�d�ggd��fd�d�ggd��fd�d�ggd��fd�d�ggd��fg�d�d���Z%ej�d�de	fdve	fd�e	fd�e	fd�e	fd�e	fd�e	fd�efdyefd�efd�efd�efd�efd�efd�efd�e
fd�e
fd�e
fd�e
fg�d�d���Z&ej�digd���d�d���Z'd�dÄZ(dS)��N�)�PathFullPattern�PathPrefixPattern�FnmatchPattern�ShellPattern�RegexPattern)�load_exclude_file�load_pattern_file)�
parse_pattern�PatternMatchercsHtdd�|D��sJd���fdd�|D�}||dur:|n|ksDJ�dS)z"Utility for testing patterns.
    cSsg|]}|tj�|�k�qS�)�os�path�normpath��.0�frr�=/usr/lib64/python3.9/site-packages/borg/testsuite/patterns.py�
<listcomp>�z"check_patterns.<locals>.<listcomp>z.Pattern matchers expect normalized input pathscsg|]}��|�r|�qSr��matchr��patternrrrrN)�all)�filesr�expectedZmatchedrrr�check_patterns
srzpattern, expected�/�/home�homez/home///z/./homez
/home/user�	home/userz/home/user2�
home/user2�/home/user/.bashrc�home/user/.bashrccCsgd�}t|t|�|�dS)N)r r!r"r$�rr�rrrrrr�test_patterns_fullsr'��relativezrelative/path/�
relative/pathcCsddg}t|t|�|�dS)Nr*zrelative/path2r%r&rrr�test_patterns_full_relative'sr+)rN)z/./Nz/home/u�home/user/.profilez/etc�etc/server/config�etc/server/hostsz///etc//////z/./home//..//home/user2�home/user2/.profile�!home/user2/public_html/index.htmlz/srv�srv/messages�	srv/dmesgcCsgd�}t|t|�|�dS)N)	r-r.r r,r$r/r0r1r2�rrr&rrr�test_patterns_prefix4s
r4�foo�relative/path1�relative/twoZmore�
more/relativecCsgd�}t|t|�|�dS)N)r6r7r8r3r&rrr�test_patterns_prefix_relativeIsr9)z/*N)z/./*N)�*Nz*/*)
r-r.r,r$r/r0r1r2�home/foo/.thumbnails�home/foo/bar/.thumbnailsz*///*z/home/*)r,r$r/r0r;r<z/home/user/*z/etc/*z
*/.pr????ez
///etc//////*z/./home//..//home/user2/*z/srv*z/home/*/.thumbnailsr;r<cCsgd�}t|t|�|�dS)N)r-r.r r,r$r/r0r1r2r;r<)rrr&rrr�test_patterns_fnmatchVsr=)z**/*N)z/**/*N)r-r.r,r$r/r0r1r2�
srv2/blafaselr;r<z/etc/*/*z	/etc/**/*z/etc/**/*/*z**/.pr????ez/./home//..//home/user2/z/./home//..//home/user2/**/*z/srv*/)r1r2r>)�srvr1r2�srv2r>z/srv/*z/srv2/**r@r>z	/srv2/**/z/home/*/*/.thumbnailscCsgd�}t|t|�|�dS)N)r-r.r r,r$r/r0r?r1r2r@r>r;r<)rrr&rrr�test_patterns_shellys$rA)r(N)z.*N)z^/Nz^abc$z^[^/]z^(?!/srv|/foo|/opt))r�/home/user/.profiler#�/home/user2/.profile�"/home/user2/public_html/index.html�/home/foo/.thumbnails�/home/foo/bar/.thumbnailscCs>gd�}t|�}t|�|ks J�|j|ks.J�t|||�dS)N)z	/srv/dataz/foo/barrrBr#rCrDz/opt/log/messages.txtz/opt/log/dmesg.txtrErF)r�strrr)rrr�objrrr�test_patterns_regex�s
rIcCs>td��d�sJ�td��tjj�s(J�td��d�r:J�dS)Nz^/$rz^\\$)rrr
r�seprrrr�test_regex_pattern�srKcCs
tjdvS)N)�darwin)�sys�platformrrrr�use_normalized_unicode�srOcCs$t|�t|�td|�d��t|�gS)N�^z/foo$)rrrrrrrr�_make_test_patterns�s
�rQrubácCs&|�d�sJ�|�d�t�ks"J�dS�Nubá/fooubá/foo�rrOrrrr�test_composed_unicode_pattern�srTubácCs&|�d�t�ksJ�|�d�s"J�dSrRrSrrrr�test_decomposed_unicode_pattern�srUsba��latin1cCs&|�d�rJ�|�tdd��s"J�dS)Nzba/foosba�/foorV)rrGrrrr�test_invalid_unicode_pattern�srWzlines, expectedz# Comment onlyr:)z	# Commentz*/something00.txtz  *whitespace*  z #/ws*r(z# EOF)�	more/datar � #/wsfoobarzre:.*zre:\s)�data/something00.txtrXr z
re:(.)(\1))rXr �	start/whitespace�whitespace/end	)r(r(r(z*# This is a test with mixed pattern styleszre:(?i)BAR|ME$r(z*whitespace*zfm:*/something00*rXz
  re:^\s  )rZrXr r\z
  re:\s$  )rZrXr rYr[zpp:./zpp:/z	pp:aaabbb)zpp:/datazpp: #/z	pp:	startzpp:/whitespacez/nomatchz/more/*)rZr rYr[r\cs|gd���fdd�}|�d�}|�d�� }|�d�|��Wd�n1sN0Y|t|��|durn�n|ksxJ�dS)N)rZrXr rYr[r\cs8g}tt|�|�tdd����|��fdd��D�S)NT��fallbackcsg|]}��|�r|�qSrr�rr�ZmatcherrrrrzEtest_exclude_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)r�openr�add_inclexcl)�filename�patterns�rr`r�evaluates


z1test_exclude_patterns_from_file.<locals>.evaluatezexclude.txt�wt�
��joinra�writerG)�tmpdir�linesrrfZexclfile�fhrrer�test_exclude_patterns_from_file�s'
.roz+lines, expected_roots, expected_numpatternsz- *�z+fm:*/something00.txtz-/datazR /�	# comment)rqz- /datazR /homec	Csxdd�}|�d�}|�d�� }|�d�|��Wd�n1sB0Y|t|��\}}||kshJ�||kstJ�dS)NcSs$g}g}tt|�||�|t|�fS�N)r	ra�len�rc�roots�inclexclpatternsrrrrf2sz.test_load_patterns_from_file.<locals>.evaluate�patterns.txtrgrhri)	rlrmZexpected_rootsZexpected_numpatternsrf�patternfilernruZnumpatternsrrr�test_load_patterns_from_file#s
.rycCs�d}t�|�}gg}}t|||�t|�dks4J�t|djt�sHJ�t|djt�s\J�t|djt�spJ�t|djt�s�J�t|djt	�s�J�t|djt�s�J�dS)	Nz�        +0_initial_default_is_shell
        p fm
        +1_fnmatch
        P re
        +2_regex
        +3_more_regex
        P pp
        +4_pathprefix
        p fm
        p sh
        +5_shell
    �rrpr���)
�io�StringIOr	rs�
isinstance�valrrrr)rdZpattern_filerurrr�test_switch_patterns_styleAs

r�rmzX /dataz/datacCs�|�d�}|�d�� }|�d�|��Wd�n1s:0Yt|�}t�tj��(g}g}tt|�||�Wd�n1s�0YdS)Nrwrgrh)	rjrarkrG�pytest�raises�argparse�ArgumentTypeErrorr	)rlrmrxrnrcrurvrrr�$test_load_invalid_patterns_from_file[s
.r�z-*/something0?.txt)�data�data/subdir/something01.txtr �home/leo�
home/leo/t�
home/otherz-fm:*/something00.txtz-fm:*/something0?.txt)r�r r�r�r�z+/*/something0?.txt)rZr r�r�r�z
+/home/leoz-/home/*)r�rZr�r r�r�)r�rZr�r z
+fm:/home/leoz-/home/cs|gd���fdd�}|�d�}|�d�� }|�d�|��Wd�n1sN0Y|t|��|durn�n|ksxJ�dS)N)r�rZr�r r�r�r�cs>tdd��g}g}tt|�||���|��fdd��D�S)NTr]csg|]}��|�r|�qSrrr_r`rrr�rzFtest_inclexcl_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)rr	rarbrtrer`rrf�s

z2test_inclexcl_patterns_from_file.<locals>.evaluaterwrgrhri)rlrmrrfrxrnrrer� test_inclexcl_patterns_from_filejs 
.r�zpattern, clsz/data/*zfm:zfm:*z
fm:/data/*z
fm:fm:/data/*zre:zre:^/something/zre:re:^/something/zpp:z	pp:/data/zpp:pp:/data/zsh:zsh:*z
sh:/data/*z
sh:sh:/data/*cCstt|�|�sJ�dSrr)r�r
)r�clsrrr�test_parse_pattern�s r�)zaa:zfo:*z00:zx1:abccCs6t�t��t|�Wd�n1s(0YdSrr)r�r��
ValueErrorr
rrrr�test_parse_pattern_error�sr�cCst�}|jdusJ�dD]}|�|�dusJ�qdD]}||j|<q4|�td�gd�|�td�td�gd�|�td�gd	�d
|_|�d�d	ks�J�|�d�dks�J�|�d
�dks�J�|�d�d
ks�J�|�d�d
ks�J�|�d�dks�J�tdd�jdk�sJ�dS)N)r(r5Zbar)�A�B�Empty�FileNotFoundz^ar�z^bz^zr�z^$r�r�r(ZaaaZbbbZcccZxyz�zzhey!r])rr^rZis_include_cmd�addr)Zpm�i�targetrrr�test_pattern_matcher�s"r�))r�r~Zos.pathr
rMr�rdrrrrrrr	r
rrZmarkZparametrizer'r+r4r9r=rArIrKrOrQrTrUrGrWroryr�r�r�r�r�r�rrrr�<module>s�
�

�





�
	
�
���






�

���











�#

��



�	����&


������
�
��������������
�