U
    9%eQ                     @   sJ   d dl mZ d dlmZ d dlZd dlmZ d dlmZ G dd dZ	dS )    )md5)productNmake_path_posix)GLOB_EDGE_CASES_TESTSc                   @   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
ejed ed dd Zdd Zdd Zdd Zdd Zdd ZdS ) AbstractGetTestsc                 C   s   |}|}| | ||s t||d}	||d}
|||d| ||	sTt|||dd| ||
svt||	|
g ||	rt||
rt|||d|d  ||st||	st|||dd|d  ||
std S )Nfile2subfile1subdir/)mkdirisdirAssertionErrorgetisfilermexists)selffsfs_joinfs_bulk_operations_scenario_0local_fs
local_joinlocal_targetsourcetargetZtarget_file2Ztarget_subfile1 r   X/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/fsspec/tests/abstract/get.py#test_get_file_to_existing_directory   s$    



z4AbstractGetTests.test_get_file_to_existing_directoryc           	      C   sh   |}|}| | |||dd||d ||s:t|||dsNt|||ddsdtd S )Nr
   r	   znewdir/newdirr   r   r   r   r   	r   r   r   r   r   r   r   r   r   r   r   r   test_get_file_to_new_directory3   s    


 z/AbstractGetTests.test_get_file_to_new_directoryc           	      C   sD   |}|}| | |||dd||d |||ds@td S )Nr
   r	   newfile)r   r   r   r   r!   r   r   r   +test_get_file_to_file_in_existing_directoryJ   s
    

z<AbstractGetTests.test_get_file_to_file_in_existing_directoryc           	      C   s\   |}|}| | |||dd||dd |||dsBt|||ddsXtd S )Nr
   r	   r   r#   r    r!   r   r   r   &test_get_file_to_file_in_new_directory\   s    



z7AbstractGetTests.test_get_file_to_file_in_new_directoryc                 C   s  |}|}| | ||s ttddgddgD ]\}	}
||d}|	rR|d7 }|
r^|d n|}||| ||g kst|j||dd |	r$|||dst|||dst|||dst|||dd	st|||drt|j||d||d||dgdd n|||ds:t|||ddsRt|||ddsjt|||ddst|||ddd	st|j||ddd ||g kst|j||dd
d |	rT|||dst|||dst|||drt|||dr4t|j||d||dgdd nr|||dsjt|||ddst|||ddst|||ddrt|j||ddd ||g ks2tq2d S )NFTr
   r   	recursiver	   subfile2	nesteddir
nestedfile   r'   maxdepth)	r   r   r   zipr   lsr   r   r   r   r   r   r   r   r   r   r   r   Zsource_slashtarget_slashstr   r   r   (test_get_directory_to_existing_directoryr   sh    


	
z9AbstractGetTests.test_get_directory_to_existing_directoryc                 C   s  |}|}| | tddgddgD ]\}	}
||d}|	rD|d7 }||d}|
rZ|d7 }||| ||g ksxt|j||dd |||dst|||ddst|||ddst|||dd	st|||dd	d
st|||drt|j||ddd ||g ks4t|j||ddd |||ds\t|||ddstt|||ddst|||dd	rt|||drt|j||ddd |||dr$tq$d S )NFTr
   r   r   r&   r	   r(   r)   r*   r+   r,   )	r   r.   r   r/   r   r   r   r   r   r0   r   r   r   #test_get_directory_to_new_directory   s>    



z4AbstractGetTests.test_get_directory_to_new_directoryc                 C   s^  |}|}| | dD ]@}	|	r(|d n|}
|||dd|
 |||dsTt|||dsht|||dr|t|||ddrt|||drt|j||d||dgd	d
 ||g ksttddgd	dgD ]l\}}|j||d||
|d
 |||ds t|||ds6t|||dsLt|||ddsdt|||drzt|j||d||d||dgd	d
 ||g kst|j||d||
|dd |||dst|||dst|||drt|||dr&t|j||d||dgd	d
 ||g kstqqd S )NFTr   r
   *r	   r(   r)   r*   Tr&   **Fr+   r,   )	r   r   r   r   r   r   r   r/   r.   r   r   r   r   r   r   r   r   r   r1   r3   globr'   r   r   r   #test_get_glob_to_existing_directory   sd    



   z4AbstractGetTests.test_get_glob_to_existing_directoryc              	   C   s  |}|}| | dD ]}	||d}
|	r2|
d7 }
|||dd|
 |||dsZt|||ddspt|||ddst|||ddrt|||ddd	rt|||drt|||ddrt|j||dd
d ||g ksttddgd
dgD ]\}}|j||d||
|d |||dsPt|||ddsht|||ddst|||ddst|||ddd	st|||drt|||ddrt|j||dd
d |||dr
t|j||d||
|dd |||ds:t|||ddsRt|||ddsjt|||ddrt|||drt|||ddrt|j|j|ddd
d |||drtqqd S )Nr6   r   r   r
   r7   r	   r(   r)   r*   Tr&   r8   Fr+   r,   )detail)	r   r   r   r   r   r   r   r/   r.   r9   r   r   r   test_get_glob_to_new_directory=  s\    





   z/AbstractGetTests.test_get_glob_to_new_directoryargnamesZ	argvaluesc              	      s   |}|
t ddgddgD ]\}}| |r: dn}|rJ|d n|}|j||||||d |}|r fdd|D }n fdd|D }t|t|kstz|jdd	 W q tk
r   Y qX qd S )
NTFr   r   r,   c                    s   g | ]}t  d |qS )r   r   .0pr   r   r   r   
<listcomp>  s    z=AbstractGetTests.test_get_glob_edge_cases.<locals>.<listcomp>c                    s   g | ]}t  |qS r   r   r?   rB   r   r   rC     s    r&   )r   r   r   findsortedr   r   FileNotFoundError)r   pathr'   r-   expectedr   r   Zfs_glob_edge_cases_filesr   r   r   r   Znew_dirr1   r3   outputZprefixed_expectedr   rB   r   test_get_glob_edge_cases~  s(    

z)AbstractGetTests.test_get_glob_edge_casesc                 C   s   |}|}| | ||d||d||ddg}	dD ]}
|
rD|d n|}||	| |||dsht|||ds|t|||dst|j||d||d||dgdd ||g ks4tq4d S )	Nfile1r   r
   r	   r6   r   Tr&   )r   r   r   r   r   r/   )r   r   r   r   r   r   r   r   r   source_filesr1   r3   r   r   r   ,test_get_list_of_files_to_existing_directory  s*    


z=AbstractGetTests.test_get_list_of_files_to_existing_directoryc           
      C   s   |}|}| | ||d||d||ddg}	||	||dd  |||dsZt|||ddspt|||ddst|||ddstd S )NrK   r   r
   r	   r   r   r    )
r   r   r   r   r   r   r   r   r   rL   r   r   r   'test_get_list_of_files_to_new_directory  s    


z8AbstractGetTests.test_get_list_of_files_to_new_directoryc                 C   sR  ||d}||d}| | || |}	||	r:ttdD ]}
|j||	dd ||	sdt|
dkr|||	dst|||	drtqB|||	dst|||	dst|||	ddsBtqB|j|	dd ||	rttdD ]R}
|j|d |	dd ||	s"t|||	ds8t|||	drtqd S )Nsrcfile   Tr&   r   r   )	r   touchr   r   ranger   r   r   r   )r   r   r   Zfs_pathr   r   r   rO   Zsrc_filer   loopr   r   r   test_get_directory_recursive  s,    



z-AbstractGetTests.test_get_directory_recursivec           	      C   s   |}|}|j ||d|dd |||ds2t|||drFt|||dg ||g ksjt|j ||d|dd |||dst|||ddst|||dstd S )Nr
   Tr&   zsubfile.txtz
subdir.txtzsubdir*)r   r   r   r   r/   r   )	r   r   r   r   r   r   Z%fs_dir_and_file_with_same_name_prefixr   r   r   r   r   6test_get_directory_without_files_with_same_name_prefix  s    
zGAbstractGetTests.test_get_directory_without_files_with_same_name_prefixc                 C   s   |}|}g }	g }
t dD ]J}tt|d }|	||| d |
t||| d q|j|	|
d t dD ](}||
| 	d}|t|kszt
qzd S )N
   zutf-8z.txt)ZrpathZlpath)rS   r   strencode	hexdigestappendr   r   catdecoder   )r   r   r   r   r   r   Zfs_10_files_with_hashed_namesr   r   rL   Zdestination_filesiZhashed_iZfile_contentr   r   r   ,test_get_with_source_and_destination_as_list/  s    
z=AbstractGetTests.test_get_with_source_and_destination_as_listN)__name__
__module____qualname__r   r"   r$   r%   r4   r5   r;   r=   pytestmarkZparametrizer   rJ   rM   rN   rU   rV   r_   r   r   r   r   r   
   s$   (O4HA
*'$r   )
hashlibr   	itertoolsr   rc   Zfsspec.implementations.localr   Zfsspec.tests.abstract.commonr   r   r   r   r   r   <module>   s
   