Current File : //usr/lib64/python3.6/site-packages/borg/testsuite/__pycache__/patterns.cpython-36.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�PatternMatchercsHtdd�|D��std���fdd�|D�}||dkr:|n|ksDt�dS)z"Utility for testing patterns.
    cSsg|]}|tjj|�k�qS�)�os�path�normpath)�.0�frr� /usr/lib64/python3.6/patterns.py�
<listcomp>sz"check_patterns.<locals>.<listcomp>z.Pattern matchers expect normalized input pathscsg|]}�j|�r|�qSr)�match)rr)�patternrrrsN)�all�AssertionError)�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)cCsPddddddddd	d
dg}t|�}t|�|ks2t�|j|ks@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)r�strrrr)rrr�objrrr�test_patterns_regex�s
r0cCs@td�jd�st�td�jtjj�s(t�td�jd�s<t�dS)Nz^/$rz^\\$)rrrr
r�seprrrr�test_regex_pattern�sr2cCs
tjdkS)N�darwin)r3)�sys�platformrrrr�use_normalized_unicode�sr6cCs"t|�t|�tdj|��t|�gS)Nz^{}/foo$)rrr�formatr)rrrr�_make_test_patterns�sr8rubácCs&|jd�st�|jd�t�ks"t�dS)Nubá/fooubá/foo)rrr6)rrrr�test_composed_unicode_pattern�sr9ubácCs&|jd�t�kst�|jd�s"t�dS)Nubá/fooubá/foo)rr6r)rrrr�test_decomposed_unicode_pattern�sr:sba��latin1cCs(|jd�st�|jtdd��s$t�dS)Nzba/foosba�/foor;)rrr.)rrrr�test_invalid_unicode_pattern�sr<zlines, 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|��WdQRX|t|��|dkrb�n|kslt�dS)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)rr)�matcherrrrszEtest_exclude_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)r�openr�add_inclexcl)�filename�patterns)r)r?r�evaluates


z1test_exclude_patterns_from_file.<locals>.evaluatezexclude.txt�wt�
)�joinr@�writer.r)�tmpdir�linesrrDZexclfile�fhr)rr�test_exclude_patterns_from_file�s'
rLz+lines, expected_roots, expected_numpatternsz- *�z+fm:*/something00.txtz-/datazR /z	# commentz- /datazR /homec	
Csddd�}|jd�}|jd��}|jdj|��WdQRX|t|��\}}||ksTt�||ks`t�dS)NcSs&g}g}tt|d�||�|t|�fS)Nr=)r	r@�len)rB�roots�inclexclpatternsrrrrD%sz.test_load_patterns_from_file.<locals>.evaluatezpatterns.txtrErF)rGr@rHr.r)	rIrJZexpected_rootsZexpected_numpatternsrD�patternfilerKrOZnumpatternsrrr�test_load_patterns_from_files
rRcCs�d}tj|�}gg}}t|||�t|�dks4t�t|djt�sHt�t|djt�s\t�t|djt	�spt�t|djt	�s�t�t|djt
�s�t�t|djt�s�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
    �rrMr���)�io�StringIOr	rNr�
isinstance�valrrrr)rCZpattern_filerOrrr�test_switch_patterns_style4s


r[rJzX /dataz/datacCsn|jd�}|jd��}|jdj|��WdQRXt|�}tjtj�� g}g}tt|d�||�WdQRXdS)Nzpatterns.txtrErFr=)	rGr@rHr.�pytest�raises�argparseZArgumentTypeErrorr	)rIrJrQrKrBrOrPrrr�$test_load_invalid_patterns_from_fileNs
r_z-*/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|��WdQRX|t|��|dkrd�n|ksnt�dS)
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)r>r=csg|]}�j|�r|�qSr)r)rr)r?rrr�szFtest_inclexcl_patterns_from_file.<locals>.evaluate.<locals>.<listcomp>)rr	r@rA)rBrOrP)r)r?rrD�s

z2test_inclexcl_patterns_from_file.<locals>.evaluatezpatterns.txtrErF)rGr@rHr.r)rIrJrrDrQrKr)rr� test_inclexcl_patterns_from_file]s!
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|�|�st�dS)N)rYr
r)r�clsrrr�test_parse_pattern�s rbzaa:zfo:*z00:zx1:abcc	Cs"tjt��t|�WdQRXdS)N)r\r]�
ValueErrorr
)rrrr�test_parse_pattern_error�srdcCst�}|jdkst�xdD]}|j|�dkst�qWxdD]}||j|<q:W|jtd�gd�|jtd	�td
�gd�|jtd�gd�d|_|jd�dks�t�|jd�dks�t�|jd
�dks�t�|jd�dks�t�|jd�dks�t�|jd�dk�s�t�tdd�jdk�st�dS)Nrr!�bar�A�B�Empty�FileNotFoundz^az^bz^zz^$ZaaaZbbbZcccZxyz�zzhey!)r>)rr!re)rfrgrhri)rr>rrZis_include_cmd�addr)Zpm�i�targetrrr�test_pattern_matcher�s"

rn)rN)rN)r#N)r$N)r%N)r&N)r'N)r%N)r)N)r*N)r$N)r&N)r'N)rN)r,N)r-N))r^rWZos.pathr
r4r\rCrrrrrrr	r
rrZmarkZparametrizerrr r"r(r+r0r2r6r8r9r:r.r<rLrRr[r_r`rbrdrnrrrr�<module>s|