o
    +ke                  	   @   s   d dl Z d dlZd dlZd dlZddlmZmZ ddlmZm	Z	m
Z
mZ ddlmZ ddlmZ ee dG d	d
 d
eZejddg fddgfddgfdddgffdd ZdS )    N   )buffersplit_lstring)
is_enabledgetxattrsetxattr	listxattr)is_linux   )BaseTestCasezxattr not enabled on filesystemc                   @   s<   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd ZdS )XattrTestCasec                 C   s.   t  | _| jjd | _t| jj| j d S )Nz.symlink)tempfileNamedTemporaryFiletmpfilenamesymlinkosself r   8usr/lib/python3.10/site-packages/borg/testsuite/xattr.pysetUp   s   
zXattrTestCase.setUpc                 C   s   t | j d S N)r   unlinkr   r   r   r   r   tearDown   s   zXattrTestCase.tearDownc                 C   s&   t |dh }t |}| || d S )Ns   security.selinux)setassert_equal)r   Zis_xZwant_xr   r   r   assert_equal_se   s   zXattrTestCase.assert_equal_sec                 C   sD  t | jj}t | j}| j }| t|g  | t|g  | t|g  t|dd t|dd t|dd t	sDt|dd | t|g d	 | t|g d	 | t|d
dg d	 t	so| t|dg | 
t|dd | 
t|dd | 
t|dd
dd t	s| 
t|dd | 
t|dd d S )N   user.foos   bar   user.bars   foo
   user.empty    s   user.linkxattrs   baz)r   r   r    T)follow_symlinks)r   fsencoder   r   r   filenor   r   r   r	   r   r   )r   tmp_fnZtmp_lfnZtmp_fdr   r   r   test   s,   
zXattrTestCase.testc                 C   sl   t | jj}tjddd dd tdD }|D ]}t||d qt|}| 	|| t
tdks4J d S )N@   Tsizeinitc                 S   s   g | ]}d | qS )s   user.attr%dr   ).0ir   r   r   
<listcomp><   s    z>XattrTestCase.test_listxattr_buffer_growth.<locals>.<listcomp>      x)r   r#   r   r   r   resizeranger   r   r   len)r   r%   keyskeyZgot_keysr   r   r   test_listxattr_buffer_growth7   s   z*XattrTestCase.test_listxattr_buffer_growthc                 C   sV   t | jj}tjddd d}t|d| t|d}| || | t	td d S )Nr'   Tr(   s~   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxs   user.big   )
r   r#   r   r   r   r0   r   r   r   r2   )r   r%   valueZ	got_valuer   r   r   test_getxattr_buffer_growthC   s   
z)XattrTestCase.test_getxattr_buffer_growthN)	__name__
__module____qualname__r   r   r   r&   r5   r8   r   r   r   r   r      s    r   zlstring, splittedr!       s   a   as   acds   cdc                 C   s   t | |ksJ d S r   )r   )ZlstringZsplittedr   r   r   test_split_lstringN   s   r>   )r   r   ZunittestZpytestZplatform.xattrr   r   Zxattrr   r   r   r   Zplatformflagsr	    r   Z
skipUnlessr   ZmarkZparametrizer>   r   r   r   r   <module>   s"    @
