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.opt-1.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�PatternMatchercs�fdd�|D�}dS)z"Utility for testing patterns.
    csg|]}��|�r|�qS���match)�.0�f��patternr�=/usr/lib64/python3.9/site-packages/borg/testsuite/patterns.py�
<listcomp>�z"check_patterns.<locals>.<listcomp>Nr)�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)rrrr�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)rr'rr*r+r,r-�rrr!rrr�test_patterns_prefix4s
r/�foo�relative/path1�relative/twoZmore�
more/relativecCsgd�}t|t|�|�dS)N)r1r2r3r.r!rrr�test_patterns_prefix_relativeIsr4)z/*N)z/./*N)�*Nz*/*)
r(r)r'rr*r+r,r-�home/foo/.thumbnails�home/foo/bar/.thumbnailsz*///*z/home/*)r'rr*r+r6r7z/home/user/*z/etc/*z
*/.pr????ez
///etc//////*z/./home//..//home/user2/*z/srv*z/home/*/.thumbnailsr6r7cCsgd�}t|t|�|�dS)N)r(r)rr'rr*r+r,r-r6r7)rrr!rrr�test_patterns_fnmatchVsr8)z**/*N)z/**/*N)r(r)r'rr*r+r,r-�
srv2/blafaselr6r7z/etc/*/*z	/etc/**/*z/etc/**/*/*z**/.pr????ez/./home//..//home/user2/z/./home//..//home/user2/**/*z/srv*/)r,r-r9)�srvr,r-�srv2r9z/srv/*z/srv2/**r;r9z	/srv2/**/z/home/*/*/.thumbnailscCsgd�}t|t|�|�dS)N)r(r)rr'rr*r+r:r,r-r;r9r6r7)rrr!rrr�test_patterns_shellys$r<)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|||�dS)N)z	/srv/dataz/foo/barrr=rr>r?z/opt/log/messages.txtz/opt/log/dmesg.txtr@rA)rr)rrr�objrrr�test_patterns_regex�srCcCsdS�Nrrrrr�test_regex_pattern�srEcCs
tjdvS)N)�darwin)�sys�platformrrrr�use_normalized_unicode�srIcCs$t|�t|�td|�d��t|�gS)N�^z/foo$)rrrrrrrr�_make_test_patterns�s
�rKrubácCsdSrDrrrrr�test_composed_unicode_pattern�srLubácCsdSrDrrrrr�test_decomposed_unicode_pattern�srMsba��latin1cCsdSrDrrrrr�test_invalid_unicode_pattern�srOzlines, expectedz# Comment onlyr5)z	# Commentz*/something00.txtz  *whitespace*  z #/ws*r#z# EOF)�	more/datar� #/wsfoobarzre:.*zre:\s)�data/something00.txtrPrz
re:(.)(\1))rPr�	start/whitespace�whitespace/end	)r#r#r#z*# This is a test with mixed pattern styleszre:(?i)BAR|ME$r#z*whitespace*zfm:*/something00*rPz
  re:^\s  )rRrPrrTz
  re:\s$  )rRrPrrQrSzpp:./zpp:/z	pp:aaabbb)zpp:/datazpp: #/z	pp:	startzpp:/whitespacez/nomatchz/more/*)rRrrQrSrTcs\gd���fdd�}|�d�}|�d�� }|�d�|��Wd�n1sN0YdS)N)rRrPrrQrSrTcs8g}tt|�|�tdd����|��fdd��D�S)NT��fallbackcsg|]}��|�r|�qSrr
�r�path�ZmatcherrrrrzEtest_exclude_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)r�openr�add_inclexcl)�filename�patterns�rrYr�evaluates


z1test_exclude_patterns_from_file.<locals>.evaluatezexclude.txt�wt�
��joinrZ�write)�tmpdir�linesrr_Zexclfile�fhrr^r�test_exclude_patterns_from_file�s'
.rhz+lines, expected_roots, expected_numpatternsz- *�z+fm:*/something00.txtz-/datazR /�	# comment)rjz- /datazR /homec	Cs`dd�}|�d�}|�d�� }|�d�|��Wd�n1sB0Y|t|��\}}dS)NcSs$g}g}tt|�||�|t|�fSrD)r	rZ�len�r\�roots�inclexclpatternsrrrr_2sz.test_load_patterns_from_file.<locals>.evaluate�patterns.txtr`ra)rcrZrd�str)	rerfZexpected_rootsZexpected_numpatternsr_�patternfilergrmZnumpatternsrrr�test_load_patterns_from_file#s
.rrcCs(d}t�|�}gg}}t|||�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
    )�io�StringIOr	)r]Zpattern_filermrrr�test_switch_patterns_styleAs


rurfzX /dataz/datacCs�|�d�}|�d�� }|�d�|��Wd�n1s:0Yt|�}t�tj��(g}g}tt|�||�Wd�n1s�0YdS)Nror`ra)	rcrZrdrp�pytest�raises�argparse�ArgumentTypeErrorr	)rerfrqrgr\rmrnrrr�$test_load_invalid_patterns_from_file[s
.rzz-*/something0?.txt)�data�data/subdir/something01.txtr�home/leo�
home/leo/t�
home/otherz-fm:*/something00.txtz-fm:*/something0?.txt)r{rr}r~rz+/*/something0?.txt)rRrr}r~rz
+/home/leoz-/home/*)r{rRr|rr}r~)r{rRr|rz
+fm:/home/leoz-/home/cs\gd���fdd�}|�d�}|�d�� }|�d�|��Wd�n1sN0YdS)N)r{rRr|rr}r~rcs>tdd��g}g}tt|�||���|��fdd��D�S)NTrUcsg|]}��|�r|�qSrr
rWrYrrr�rzFtest_inclexcl_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)rr	rZr[rlr^rYrr_�s

z2test_inclexcl_patterns_from_file.<locals>.evaluateror`rarb)rerfrr_rqrgrr^r� 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/*cCsdSrDr)r�clsrrr�test_parse_pattern�s r�)zaa:zfo:*z00:zx1:abccCs6t�t��t|�Wd�n1s(0YdSrD)rvrw�
ValueErrorr
rrrr�test_parse_pattern_error�sr�cCsjt�}dD]}q
dD]}||j|<q|�td�gd�|�td�td�gd�|�td�gd	�d
|_dS)N)r#r0Zbar)�A�B�Empty�FileNotFoundz^ar�z^bz^zr�z^$r�r�)rZis_include_cmd�addrrV)Zpm�i�targetrrr�test_pattern_matcher�s	r�))rxrsZos.path�osrGrvr]rrrrrrr	r
rrZmarkZparametrizer"r&r/r4r8r<rCrErIrKrLrMrprOrhrrrurzr�r�r�r�rrrr�<module>s�
�

�





�
	
�
���






�

���











�#

��



�	����&


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