o
    8^;   ã                   @   sÈ   d dl mZ d dlZd dlZd dlZej ej e¡¡Z	ej 
e	¡s&e ¡ Z	ej d e	d ¡ d dlZe	d Zdd„ ZG dd„ dejƒZd	d
„ Zedkr`ejddZe eƒ ¡Ze e ¡  ¡ dZdS )é    )Úprint_functionNz/..z	/testrootc                 c   sŽ    |rC|dkr|   |¡}|r||fV  g }|dkr|  |¡ |D ]}t| |ƒD ]}|V  q'q |  |d ¡D ]}t| |ƒD ]}|V  q<q5d S d S )Nú/ú/*)ÚgetÚmatchÚ
recurmatch)ÚaugÚpathÚvalÚmÚiÚx© r   ú=/opt/certbot/lib/python3.10/site-packages/test/test_augeas.pyr      s&   €


ÿÿòr   c                   @   s¬   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ Zd'd(„ Zd)S )*Ú
TestAugeasc                 C   s"   t jtd}|  | d¡¡ ~dS )z#test aug_get with non-existing path©Úrootz/wrong/pathN)ÚaugeasÚAugeasÚMYROOTÚassertIsNoner   ©ÚselfÚar   r   r   Útest01aGetNone&   ó   zTestAugeas.test01aGetNonec                 C   s$   t jtd}|  | d¡d¡ ~dS )ztest aug_get with existing pathr   ú/files/etc/hosts/1/ipaddrz	127.0.0.1N)r   r   r   ÚassertEqualr   r   r   r   r   Útest01bGetValue,   s   zTestAugeas.test01bGetValuec                 C   s"   t jtd}|  t|jd¡ ~dS )z test aug_get with incorrect pathr   z/files//[1]/N)r   r   r   ÚassertRaisesÚ
ValueErrorr   r   r   r   r   Útest01cGetException2   r   zTestAugeas.test01cGetExceptionc                 C   sT   t jtd}| d¡}|  |¡ |D ]}| |d ¡D ]
}|  | |¡¡ qq~dS )ztest aug_matchr   z/files/etc/hosts/*r   N)r   r   r   r   Ú
assertTrueÚassertIsNotNoner   ©r   r   Úmatchesr   Úattrr   r   r   Útest02Match8   s   

ÿzTestAugeas.test02Matchc                 C   s`   t ddƒ}tjtd}d}t||ƒ}|D ]\}}t|||d |  |¡ |  |¡ q| ¡  dS )zprint all tree elementsztest03PrintAll.outÚwr   r   )ÚfileN)Úopenr   r   r   r   Úprintr#   Úclose)r   Úoutputr   r	   r%   Úpr&   r   r   r   Útest03PrintAllB   s   


zTestAugeas.test03PrintAllc                 C   sœ   t jtd}d}| d¡D ]}|d7 }q|  |d¡ t| d¡ƒ}|  |d¡ | dtdƒ¡ | 	¡  t| d¡ƒ}|  |d¡ | dtdƒ¡ | 	¡  dS )z"test default setting of grub entryr   r   z/files/etc/grub.conf/titleé   é   z/files/etc/grub.conf/defaultN)
r   r   r   r   r   Úintr   ÚsetÚstrÚsave)r   r   ÚnumÚentryÚdefaultr   r   r   Ú
test04GrubN   s   
zTestAugeas.test04Grubc                 C   s`   t jtd}| dd¡ | d¡}|  |¡ |D ]}| |d ¡D ]
}|  | |¡¡ q!q~dS )ztest defvarr   Úhostsú/files/etc/hostsz$hosts/*r   N)r   r   r   Údefvarr   r"   r#   r   r$   r   r   r   Útest05Defvar^   s   

ÿzTestAugeas.test05Defvarc                 C   s6   t jtd}| ddd¡ | d¡}|  |d¡ ~dS )ztest defnoder   Úbighostz/files/etc/hosts/50/ipaddrú192.168.1.1z$bighostN)r   r   r   Údefnoder   r   )r   r   Úvaluer   r   r   Útest06Defnodei   s
   
zTestAugeas.test06Defnodec                 C   sP   t jtd}| d¡}|  |¡ | ddd¡ |D ]}|  | |¡d¡ q~dS )z	test setmr   z/files/etc/hosts/*/ipaddrr;   z*/ipaddrr?   N)r   r   r   r   r"   Úsetmr   r   )r   r   r%   r   r   r   r   Ú
test07Setmq   s   

zTestAugeas.test07Setmc                 C   sL  dddddddddœdddddddddœd	ddddddd
dœdddddddddœdddddddd
dœg}t jtt jjd}|D ]S}| |d ¡}|  tj |d ¡|d ¡ |  |d |d ¡ |  |d |d ¡ |  |d |d ¡ |  |d |d ¡ |  |d |d ¡ |  |d |d ¡ q?|  	t
|jd¡ |  	t
|jd ¡ ~d!S )"z	test spanr   r:   r   éh   éq   )ÚexprÚfÚlsÚleÚvsÚveÚssÚsez/files/etc/hosts/1é›   z/files/etc/hosts/*[last()]éÊ   z/files/etc/hosts/#comment[2]é:   ég   é8   r;   )r   ÚflagsrG   rH   r0   rI   r1   rJ   é   rK   é   rL   é   rM   é   rN   z/filesz/randomN)r   r   r   ÚENABLE_SPANÚspanr   Úosr	   Úbasenamer   r    )r   Údatar   ÚdÚrr   r   r   Ú
test08Span{   s:   ÿÿÿÿÿøzTestAugeas.test08Spanc                 C   sB   d}t jtd}| d|¡ | ddd¡ |  t|jddd¡ d S )Nú#192.168.0.1 rtr.example.com router
r   ú
/raw/hostsú	Hosts.lnsú/t1úNotthere.lnsú/t2)r   r   r   r3   Ú
text_storer   r    )r   r:   r   r   r   r   Útest09TextStore™   s   
ÿzTestAugeas.test09TextStorec                 C   s   t jtd}| dd ¡ d S )Nr   rb   )r   r   r   r3   r   r   r   r   ÚtestSetNone£   s   zTestAugeas.testSetNonec                 C   sh   d}t jtd}| d|¡ | ddd¡ | dddd¡ | d¡}|  ||¡ |  t	|jddd¡ d S )	Nra   r   rb   rc   rd   z
/out/hostsre   rf   )
r   r   r   r3   rg   Útext_retriever   r   r   r    )r   r:   r   Ú	hosts_outr   r   r   Útest10TextRetrieve§   s   

ÿzTestAugeas.test10TextRetrievec                 C   sj   t jtd}| dd¡ | dd¡}|  |d¡ | dd¡ | dd	¡}|  |d
¡ |  t|jdd¡ d S )Nr   z/a/b/crA   r^   r0   z/a/e/dÚvalue2z/a//dr   r1   z/a/e/xza/b)r   r   r   r3   Úrenamer   r   r    )r   r   r_   r   r   r   Útest11Rename´   s   zTestAugeas.test11Renamec                 C   sl   t jtd}| dd¡ | d¡}|  |d¡ | d¡}|  |d¡ | ddd¡ | d	¡}|  |d¡ d S )
Nr   ÚFooú/tmp/barz/augeas/load/Foo/lenszFoo.lnsú/augeas/load/Foo/inclú/tmp/bazTú/augeas/load/Foo/excl)r   r   r   Ú	transformr   r   )r   r   ÚlensÚinclÚexclr   r   r   Útest12Transform¾   s   


zTestAugeas.test12Transformc                 C   sX   t jtd}| dd¡ | d¡}|  |d¡ |jdddd | d¡}|  |d¡ d S )Nr   rp   rq   rr   rs   )rx   rt   )r   r   r   Úadd_transformr   r   )r   r   rw   rx   r   r   r   Útest13AddTransformË   s   

zTestAugeas.test13AddTransformc                 C   s&   t jtd}| d¡}|  |d¡ dS )ztest aug_label with valid inputr   z/augeas/versionÚversionN)r   r   r   Úlabelr   )r   r   Úlblr   r   r   Útest14aLabelOkÖ   s   
zTestAugeas.test14aLabelOkc                 C   s    t jtd}|  t|jd¡ dS )z!test aug_label with invalid inputr   z/augeas/version/[1]/N)r   r   r   r   r    r}   r   r   r   r   Útest14bLabelExceptionÝ   s   z TestAugeas.test14bLabelExceptionc                 C   st   t jtd}d}d}d}| ||¡ | |¡}|  |¡ | ||¡ | |¡}|  |¡ |  | |¡| |¡¡ d S )Nr   z/tmp/src/copy_test/az/tmp/dst/copy_test/az
test value)	r   r   r   r3   r   r"   Úcopyr   r   )r   r   Ú	orig_pathÚ	copy_pathÚ
orig_valuer%   r   r   r   Ú
test15Copyã   s   



zTestAugeas.test15Copyc                 C   s   t jtd}| ¡  d S )Nr   )r   r   r   r,   r   r   r   r   Ú	testCloseõ   s   zTestAugeas.testCloseN)Ú__name__Ú
__module__Ú__qualname__r   r   r!   r'   r/   r9   r=   rB   rD   r`   rh   ri   rl   ro   ry   r{   r   r€   r…   r†   r   r   r   r   r   %   s*    



r   c                  C   s   t  ¡ } t  td¡} | S )NÚtest)ÚunittestÚ	TestSuiteÚ	makeSuiter   )Úsuiter   r   r   Úgetsuiteú   s   r   Ú__main__r1   )Ú	verbosityz Harald Hoyer <harald@redhat.com>)Ú
__future__r   r[   Úsysr‹   r	   ÚdirnameÚabspathÚ__file__Ú__mydirÚisdirÚgetcwdÚinsertr   r   r   ÚTestCaser   r   r‡   ÚTextTestRunnerÚ__testRunnerÚrunÚ__resultÚexitÚwasSuccessfulÚ
__author__r   r   r   r   Ú<module>   s&     V