U
    xÊ¹jÿM  ã                   @   s>   d dl mZ d dlmZ d dlZd dlmZ G dd„ dƒZdS )é    )Úmd5)ÚproductN)Ú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 ) ÚAbstractCopyTestsc           
      C   s  |}|}|  |¡ |s&| ||dƒ¡ | |¡s4t‚||dƒ}||dƒ}	| ||dƒ|¡ | |¡sht‚| ||ddƒ|¡ | |	¡sŠt‚| ||	g¡ | |¡r¦t‚| |	¡r´t‚| ||dƒ|d ¡ | |¡sØt‚| |¡sæt‚| ||ddƒ|d ¡ | |	¡�st‚d S )NÚdummyÚfile2Úsubfile1Úsubdirú/)ÚmkdirÚtouchÚisdirÚAssertionErrorÚcpÚisfileÚrmÚexists)
ÚselfÚfsÚfs_joinÚfs_bulk_operations_scenario_0Ú	fs_targetÚsupports_empty_directoriesÚsourceÚtargetZtarget_file2Ztarget_subfile1© r   úY/var/www/html/bwave/python/venv/lib/python3.8/site-packages/fsspec/tests/abstract/copy.pyÚ$test_copy_file_to_existing_directory
   s(    	


z6AbstractCopyTests.test_copy_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   Útest_copy_file_to_new_directory4   s    

 ÿz1AbstractCopyTests.test_copy_file_to_new_directoryc                 C   sf   |}|}|  |¡ |s&| ||dƒ¡ | |¡s4t‚| ||ddƒ||dƒ¡ | ||dƒ¡sbt‚d S )Nr   r	   r   Únewfile)r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   Ú,test_copy_file_to_file_in_existing_directoryD   s    	
z>AbstractCopyTests.test_copy_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_copy_file_to_file_in_new_directoryY   s    

 
ÿz9AbstractCopyTests.test_copy_file_to_file_in_new_directoryc                 C   s(  |}|}|  |¡ |s*||dƒ}| |¡ | |¡s8t‚tddgddgƒD �]Ö\}	}
||dƒ}|	rj|d7 }|
rv|d n|}| ||¡ |j|dd�|ršg n|gks¦t‚|j||dd� |	�rN| ||dƒ¡sÐt‚| ||d	ƒ¡sät‚| ||d
ƒ¡søt‚| ||d
dƒ¡�st‚| ||dƒ¡�r&t‚|j	||dƒ||d	ƒ||d
ƒgdd� nŒ| ||dƒ¡�sdt‚| ||ddƒ¡�s|t‚| ||dd	ƒ¡�s”t‚| ||dd
ƒ¡�s¬t‚| ||dd
dƒ¡�sÆt‚|j	||dƒdd� |j|dd�|�rðg n|gk�sþt‚|j||ddd� |	�rŽ| ||dƒ¡�s,t‚| ||d	ƒ¡�sBt‚| ||d
ƒ¡�rXt‚| ||dƒ¡�rnt‚|j	||dƒ||d	ƒgdd� nr| ||dƒ¡�s¤t‚| ||ddƒ¡�s¼t‚| ||dd	ƒ¡�sÔt‚| ||dd
ƒ¡�rìt‚|j	||dƒdd� |j|dd�|�rg n|gksJt‚qJd S )Nr   FTr	   r
   ©Údetail©Ú	recursiver   Úsubfile2Ú	nesteddirÚ
nestedfileé   ©r(   Úmaxdepth)
r   r   r   r   Úzipr   Úlsr   r   r   )r   r   r   r   r   r   r   r   r   Úsource_slashÚtarget_slashÚsÚtr   r   r   Ú)test_copy_directory_to_existing_directoryh   sv    	



ÿýú	ÿ
þûÿz;AbstractCopyTests.test_copy_directory_to_existing_directoryc              
   C   s  |}|}|  |¡ tddgddgƒD �]è\}}	||dƒ}
|rD|
d7 }
||dƒ}|	rZ|d7 }| |
|¡ |r~| |¡g ksžt‚n t t¡� | |¡ W 5 Q R X |j|
|dd� | ||dƒ¡sÂt‚| 	||ddƒ¡sØt‚| 	||ddƒ¡sît‚| ||dd	ƒ¡�st‚| 	||dd	d
ƒ¡�s t‚| 
||dƒ¡�r6t‚|j||dƒdd� | 
||dƒ¡�r`t‚|j|
|ddd� | ||dƒ¡�sˆt‚| 	||ddƒ¡�s t‚| 	||ddƒ¡�s¸t‚| 
||dd	ƒ¡�rÐt‚| 
||dƒ¡�ræt‚|j||dƒdd� | 
||dƒ¡r$t‚q$d S )NFTr	   r
   r   r'   r   r)   r*   r+   r,   r-   )r   r/   r   r0   r   ÚpytestZraisesÚFileNotFoundErrorr   r   r   r   )r   r   r   r   r   r   r   r   r1   r2   r3   r4   r   r   r   Ú$test_copy_directory_to_new_directory¾   s@    	


z6AbstractCopyTests.test_copy_directory_to_new_directoryc                 C   s¸  |}|}|  |¡ |s*||dƒ}| |¡ | |¡s8t‚dD �]t}	|	rN|d n|}
| ||ddƒ|
¡ | ||dƒ¡szt‚| ||dƒ¡sŽt‚| ||dƒ¡r¢t‚| ||dd	ƒ¡r¸t‚| ||dƒ¡rÌt‚|j||dƒ||dƒgd
d� |j|dd�|rþg n|gk�st‚t	ddgd
dgƒD �]�\}}|j||d|ƒ|
|d� | ||dƒ¡�sVt‚| ||dƒ¡�slt‚| ||dƒ¡�s‚t‚| ||dd	ƒ¡�sšt‚| ||dƒ¡�r°t‚|j||dƒ||dƒ||dƒgd
d� |j|dd�|�rìg n|gk�sút‚|j||d|ƒ|
|dd� | ||dƒ¡�s*t‚| ||dƒ¡�s@t‚| ||dƒ¡�rVt‚| ||dƒ¡�rlt‚|j||dƒ||dƒgd
d� |j|dd�|�r g n|gk�st‚�qq<d S )Nr   ©FTr
   r	   Ú*r   r)   r*   r+   Tr'   Fr%   ú**r,   r-   )
r   r   r   r   r   r   r   r   r0   r/   )r   r   r   r   r   r   r   r   r   r2   r4   Úglobr(   r   r   r   Ú$test_copy_glob_to_existing_directoryó   sx    	



þûÿ
ýúÿ

   ÿþûÿz6AbstractCopyTests.test_copy_glob_to_existing_directoryc              	   C   sæ  |}|}|  |¡ dD �]È}||dƒ}|r2|d7 }| ||ddƒ|¡ | ||dƒ¡sZt‚| ||ddƒ¡spt‚| ||ddƒ¡s†t‚| ||ddƒ¡rœt‚| ||ddd	ƒ¡r´t‚| ||dƒ¡rÈt‚| ||ddƒ¡rÞt‚|j||dƒd
d� | ||dƒ¡�rt‚tddgd
dgƒD �]Â\}	}
|j||d|	ƒ||
d� | ||dƒ¡�sRt‚| ||ddƒ¡�sjt‚| ||ddƒ¡�s‚t‚| ||ddƒ¡�sšt‚| ||ddd	ƒ¡�s´t‚| ||dƒ¡�rÊt‚| ||ddƒ¡�rât‚|j||dƒd
d� | ||dƒ¡�rt‚|j||d|	ƒ||
dd� | ||dƒ¡�s<t‚| ||ddƒ¡�sTt‚| ||ddƒ¡�slt‚| ||ddƒ¡�r„t‚| ||dƒ¡�ršt‚| ||ddƒ¡�r²t‚|j||dƒd
d� | ||dƒ¡�rt‚�qqd S )Nr9   r   r
   r	   r:   r   r)   r*   r+   Tr'   r;   Fr,   r-   )r   r   r   r   r   r   r   r/   )r   r   r   r   r   r   r   r2   r4   r<   r(   r   r   r   Útest_copy_glob_to_new_directoryE  sT    



   ÿz1AbstractCopyTests.test_copy_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s¶t‚z|jˆdd	� W q tk
rÜ   Y qX qd S )
NTFr   r
   r-   c                    s   g | ]}ˆˆ ˆd |ƒƒ‘qS )r   r   ©Ú.0Úp©r   Úfs_sanitize_pathr   r   r   Ú
<listcomp>›  s    z?AbstractCopyTests.test_copy_glob_edge_cases.<locals>.<listcomp>c                    s   g | ]}ˆˆ ˆ|ƒƒ‘qS r   r   r@   rC   r   r   rE   Ÿ  s    r'   )r   r   ÚcopyÚfindÚsortedr   r   r7   )r   Úpathr(   r.   Úexpectedr   r   Zfs_glob_edge_cases_filesr   rD   r   Znew_dirr2   r4   ÚoutputZprefixed_expectedr   rC   r   Útest_copy_glob_edge_cases|  s(    

ÿÿz+AbstractCopyTests.test_copy_glob_edge_casesc                 C   s  |}|}|  |¡ |s*||dƒ}| |¡ | |¡s8t‚||dƒ||dƒ||ddƒg}	dD ]¢}
|
rj|d n|}| |	|¡ | ||dƒ¡sŽt‚| ||dƒ¡s¢t‚| ||dƒ¡s¶t‚|j||dƒ||dƒ||dƒgdd	� |j|d
d�|rðg n|gksZt‚qZd S )Nr   Úfile1r   r	   r   r9   r
   Tr'   Fr%   )r   r   r   r   r   r   r   r0   )r   r   r   r   r   r   r   r   r   Úsource_filesr2   r4   r   r   r   Ú-test_copy_list_of_files_to_existing_directory©  s6    	



ýýúÿz?AbstractCopyTests.test_copy_list_of_files_to_existing_directoryc                 C   s    |}|}|  |¡ ||dƒ||dƒ||ddƒg}| |||dƒd ¡ | ||dƒ¡sZt‚| ||ddƒ¡spt‚| ||ddƒ¡s†t‚| ||ddƒ¡sœt‚d S )NrM   r   r	   r   r   r
   r   )r   r   r   r   r   r   r   rN   r   r   r   Ú(test_copy_list_of_files_to_new_directoryÖ  s    

ýz:AbstractCopyTests.test_copy_list_of_files_to_new_directoryc                 C   sl   |}|}|  |¡rt‚| ||dƒ||dƒg|¡ | |¡s@t‚| ||dƒ¡sTt‚| ||dƒ¡sht‚d S )NrM   r   )r   r   r   r   r   r    r   r   r   Ú!test_copy_two_files_new_directoryë  s    z3AbstractCopyTests.test_copy_two_files_new_directoryc                 C   sÖ   |}|}|j ||dƒ|dd� | ||dƒ¡s2t‚| ||dƒ¡rFt‚| ||dƒg¡ |rp| |¡g ks~t‚n| |¡r~t‚|j ||dƒ|dd� | ||dƒ¡s¨t‚| ||ddƒ¡s¾t‚| ||dƒ¡sÒt‚d S )Nr	   Tr'   zsubfile.txtz
subdir.txtzsubdir*)r   r   r   r   r0   r   r   )r   r   r   r   Z%fs_dir_and_file_with_same_name_prefixr   r   r   r   r   r   Ú7test_copy_directory_without_files_with_same_name_prefixú  s    	zIAbstractCopyTests.test_copy_directory_without_files_with_same_name_prefixc                 C   s¤   |}|}g }g }t dƒD ]F}	tt|	ƒ d¡ƒ ¡ }
| |||
› d�ƒ¡ | |||
› d�ƒ¡ q|j||d� t dƒD ](}	| ||	 ¡ d¡}|t|	ƒksvt	‚qvd S )Né
   zutf-8z.txt)Zpath1Zpath2)
Úranger   ÚstrÚencodeÚ	hexdigestÚappendrF   ÚcatÚdecoder   )r   r   r   r   Zfs_10_files_with_hashed_namesr   r   rN   Zdestination_filesÚiZhashed_iZfile_contentr   r   r   Ú-test_copy_with_source_and_destination_as_list  s    z?AbstractCopyTests.test_copy_with_source_and_destination_as_listN)Ú__name__Ú
__module__Ú__qualname__r   r!   r#   r$   r5   r8   r=   r>   r6   ÚmarkZparametrizer   rL   rO   rP   rQ   rR   r\   r   r   r   r   r   	   s$   *V5R7þ
)-r   )Úhashlibr   Ú	itertoolsr   r6   Zfsspec.tests.abstract.commonr   r   r   r   r   r   Ú<module>   s   