HEX
Server: LiteSpeed
System: Linux s3.sitechai.com 4.18.0-553.51.1.lve.1.el8.x86_64 #1 SMP Wed May 14 14:34:57 UTC 2025 x86_64
User: workzeni (2217)
PHP: 8.1.32
Disabled: mail, show_source, system, shell_exec, passthru, exec, eval, shell
Upload Files
File: //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/patterns.cpython-36.opt-1.pyc
3

y��b�@�@s|ddlZddlZddlZddlZddlZddlmZmZm	Z	m
Z
mZddlmZm
Z
ddlmZmZdd�Zejjdd	gfd
d
gfdd
gfdd
gfd
d
gfddgfddgfg�dd��Zejjddgfdgfddgfddgfg�dd��Zejjdd�d�dgfdgfd
ddgfdddgfdddgfdd d!gfd"d#d$gfg	�d%d&��Zejjddgfd'gfdd(d)gfd*d+gfg�d,d-��Zejjdd�d�d�d�d�dgfd3ddd d!d4d5gfd6ddgfd7ddgfd8dd gfd9ddgfd:d d!gfd;d#d$gfd<d4d5gfg�d=d>��Zejjdd�d�d�d�d�d�dgfd3ddd d!d4d5gfd6ddgfdAddgfdBddgfdCddgfd8gfdDdd gfd9ddgfdEd d!gfdFd d!gfdGd#d$dHgfd;d"d#d$dIdHgfdJd#d$gfdKdIdHgfdLdHgfd<d4gfdMd5gfg�dNdO��Zejjdd�d�d�dRgfdSgfdTd
ddd d!d4d5gfg�dUdV��ZdWdX�ZdYdZ�Zd[d\�Zejjd]ed^��d_d`��Zejjd]eda��dbdc��Zejjd]eeddde���dfdg��Z ejjdhgdfdigdfd0ggfdjdkdldmddngdod
dpgfdqggfdrgdsdod
gfdtgdod
dudvgfddddwdxddydzgdogfd{gdsdod
dvgfd|gdsdod
dpdugfd}gdfd~gdpdugfdgdfd�d�d�d�gdod
gfd�d�gdsd
dpdudvgfd�d�gdsd
dpdudvgfg�d�d���Z!ejjd�ggdfdiggdfd�ggd�fd�d�ggdfd�gd	gdfd�d�gd	gdfd�d�d�gd
gd�fg�d�d���Z"d�d��Z#ejjd�d�gd�gg�d�d���Z$ejjdhgdfdigdfd�ggfd�gd�dsd�d
d�d�d�gfd�gd�d�d
d�d�d�gfd�gd�d
d�d�d�gfd�d�gdsd
d�d�d�gfd�d�gdsd
d�d�d�gfd�d�gd�dsd�d
d�d�gfd�d�gd�dsd�d
gfd�d�gd�dsd�d
d�d�gfg�d�d���Z%ejjd�de	fd0e	fd�e	fd�e	fd�e	fd�e	fd�e	fd�efdqefd�efd�efd�efd~efd�efd�efd�e
fd�e
fd�e
fd�e
fg�d�d���Z&ejjd]d�d�d�d�g�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|]}�j|�r|�qS�)�match)�.0�f)�patternr� /usr/lib64/python3.6/patterns.py�
<listcomp>sz"check_patterns.<locals>.<listcomp>Nr)�filesr�expectedZmatchedr)rr�check_patterns
srzpattern, expected�/z/homez/home///z/./homez
/home/userz/home/user2z/home/user/.bashrccCs ddddg}t|t|�|�dS)Nz/homez
/home/userz/home/user2z/home/user/.bashrc)rr)rrrrrr�test_patterns_fullsr�Zrelativezrelative/path/z
relative/pathcCsddg}t|t|�|�dS)Nz
relative/pathzrelative/path2)rr)rrrrrr�test_patterns_full_relative'sr�/./z/home/uz/home/user/.profilez/etcz/etc/server/configz/etc/server/hostsz///etc//////z/./home//..//home/user2z/home/user2/.profilez"/home/user2/public_html/index.htmlz/srvz
/srv/messagesz
/srv/dmesgc	Cs*ddddddddd	g	}t|t|�|�dS)
Nz/etc/server/configz/etc/server/hostsz/homez/home/user/.profilez/home/user/.bashrcz/home/user2/.profilez"/home/user2/public_html/index.htmlz
/srv/messagesz
/srv/dmesg)rr)rrrrrr�test_patterns_prefix4s
r�foozrelative/path1zrelative/twoZmorez
more/relativecCsdddg}t|t|�|�dS)Nzrelative/path1zrelative/twoz
more/relative)rr)rrrrrr�test_patterns_prefix_relativeIs
r�/*�/./*�*�*/*�*///*z/home/*z/home/foo/.thumbnailsz/home/foo/bar/.thumbnailsz/home/user/*z/etc/*z
*/.pr????ez
///etc//////*z/./home//..//home/user2/*z/srv*z/home/*/.thumbnailscCs.ddddddddd	d
dg}t|t|�|�dS)Nz/etc/server/configz/etc/server/hostsz/homez/home/user/.profilez/home/user/.bashrcz/home/user2/.profilez"/home/user2/public_html/index.htmlz
/srv/messagesz
/srv/dmesgz/home/foo/.thumbnailsz/home/foo/bar/.thumbnails)rr)rrrrrr�test_patterns_fnmatchVs
r#�**/*�/**/*z/etc/*/*z	/etc/**/*z/etc/**/*/*z**/.pr????ez/./home//..//home/user2/z/./home//..//home/user2/**/*z/srv*/z/srv2/blafaselz/srv2z/srv/*z/srv2/**z	/srv2/**/z/home/*/*/.thumbnailscCs4ddddddddd	d
ddd
dg}t|t|�|�dS)Nz/etc/server/configz/etc/server/hostsz/homez/home/user/.profilez/home/user/.bashrcz/home/user2/.profilez"/home/user2/public_html/index.htmlz/srvz
/srv/messagesz
/srv/dmesgz/srv2z/srv2/blafaselz/home/foo/.thumbnailsz/home/foo/bar/.thumbnails)rr)rrrrrr�test_patterns_shellss

r&�.*�^/z^abc$z^[^/]z^(?!/srv|/foo|/opt)cCs2ddddddddd	d
dg}t|�}t|||�dS)Nz	/srv/dataz/foo/barz/homez/home/user/.profilez/home/user/.bashrcz/home/user2/.profilez"/home/user2/public_html/index.htmlz/opt/log/messages.txtz/opt/log/dmesg.txtz/home/foo/.thumbnailsz/home/foo/bar/.thumbnails)rr)rrr�objrrr�test_patterns_regex�s
r*cCsdS)Nrrrrr�test_regex_pattern�sr+cCs
tjdkS)N�darwin)r,)�sys�platformrrrr�use_normalized_unicode�sr/cCs"t|�t|�tdj|��t|�gS)Nz^{}/foo$)rrr�formatr)rrrr�_make_test_patterns�sr1rubácCsdS)Nr)rrrr�test_composed_unicode_pattern�sr2ubácCsdS)Nr)rrrr�test_decomposed_unicode_pattern�sr3sba��latin1cCsdS)Nr)rrrr�test_invalid_unicode_pattern�sr5zlines, expectedz# Comment onlyz	# Commentz*/something00.txtz  *whitespace*  z #/ws*z# EOFz
/more/dataz #/wsfoobarzre:.*zre:\sz/data/something00.txtz
re:(.)(\1)z	start/whitespacez/whitespace/end	z*# This is a test with mixed pattern styleszre:(?i)BAR|ME$z*whitespace*zfm:*/something00*z
  re:^\s  z
  re:\s$  zpp:./zpp:/z	pp:aaabbbzpp:/datazpp: #/z	pp:	startzpp:/whitespacez/nomatchz/more/*c
sPddddddg��fdd�}|jd	�}|jd
��}|jdj|��WdQRXdS)Nz/data/something00.txtz
/more/dataz/homez #/wsfoobarz	start/whitespacez/whitespace/end	cs:g}tt|d�|�tdd���j|��fdd��D�S)N�rtT)�fallbackcsg|]}�j|�r|�qSr)r
)r�path)�matcherrrrszEtest_exclude_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)r�openr�add_inclexcl)�filename�patterns)r)r9r�evaluates


z1test_exclude_patterns_from_file.<locals>.evaluatezexclude.txt�wt�
)�joinr:�write)�tmpdir�linesrr>Zexclfile�fhr)rr�test_exclude_patterns_from_file�s'
rFz+lines, expected_roots, expected_numpatternsz- *�z+fm:*/something00.txtz-/datazR /z	# commentz- /datazR /homec	
CsLdd�}|jd�}|jd��}|jdj|��WdQRX|t|��\}}dS)NcSs&g}g}tt|d�||�|t|�fS)Nr6)r	r:�len)r<�roots�inclexclpatternsrrrr>%sz.test_load_patterns_from_file.<locals>.evaluatezpatterns.txtr?r@)rAr:rB�str)	rCrDZexpected_rootsZexpected_numpatternsr>�patternfilerErIZnumpatternsrrr�test_load_patterns_from_files
rMcCs(d}tj|�}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_filerIrrr�test_switch_patterns_style4s



rPrDzX /dataz/datacCsn|jd�}|jd��}|jdj|��WdQRXt|�}tjtj�� g}g}tt|d�||�WdQRXdS)Nzpatterns.txtr?r@r6)	rAr:rBrK�pytest�raises�argparseZArgumentTypeErrorr	)rCrDrLrEr<rIrJrrr�$test_load_invalid_patterns_from_fileNs
rTz-*/something0?.txtz/data/subdir/something01.txtz	/home/leoz/home/leo/tz/home/otherz-fm:*/something00.txtz-fm:*/something0?.txtz+/*/something0?.txtz
+/home/leoz-/home/*z
+fm:/home/leoz-/home/c
sRdddddddg��fdd	�}|jd
�}|jd��}|jdj|��WdQRXdS)
Nz/dataz/data/something00.txtz/data/subdir/something01.txtz/homez	/home/leoz/home/leo/tz/home/othercs@tdd��g}g}tt|d�||��j|��fdd��D�S)NT)r7r6csg|]}�j|�r|�qSr)r
)rr8)r9rrr�szFtest_inclexcl_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)rr	r:r;)r<rIrJ)r)r9rr>�s

z2test_inclexcl_patterns_from_file.<locals>.evaluatezpatterns.txtr?r@)rAr:rB)rCrDrr>rLrEr)rr� test_inclexcl_patterns_from_file]s!
rUz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/*cCsdS)Nr)r�clsrrr�test_parse_pattern�s rWzaa:zfo:*z00:zx1:abcc	Cs"tjt��t|�WdQRXdS)N)rQrR�
ValueErrorr
)rrrr�test_parse_pattern_error�srYcCsrt�}xdD]}qWxd
D]}||j|<qW|jtd�gd�|jtd	�td
�gd�|jtd�gd�d|_dS)Nrr�bar�A�B�Empty�FileNotFoundz^az^bz^zz^$)rrrZ)r[r\r]r^)rZis_include_cmd�addrr7)Zpm�i�targetrrr�test_pattern_matcher�s

	rb)rN)rN)rN)rN)r N)r!N)r"N)r N)r$N)r%N)rN)r!N)r"N)rN)r'N)r(N))rSrNZos.path�osr-rQr=rrrrrrr	r
rrZmarkZparametrizerrrrr#r&r*r+r/r1r2r3rKr5rFrMrPrTrUrWrYrbrrrr�<module>s|