U
    xÊ¹jÑR  ã                   @   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 ) ÚAbstractPutTestsc                 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ÚputÚisfileÚrmÚexists)ÚselfÚfsÚfs_joinÚ	fs_targetÚ
local_joinÚ local_bulk_operations_scenario_0Úsupports_empty_directoriesÚsourceÚtargetZtarget_file2Ztarget_subfile1© r   úX/var/www/html/bwave/python/venv/lib/python3.8/site-packages/fsspec/tests/abstract/put.pyÚ#test_put_file_to_existing_directory
   s(    



z4AbstractPutTests.test_put_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   Útest_put_file_to_new_directory5   s    

 ÿz/AbstractPutTests.test_put_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   r   Ú+test_put_file_to_file_in_existing_directoryE   s    

z<AbstractPutTests.test_put_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_put_file_to_file_in_new_directory[   s    


þz7AbstractPutTests.test_put_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_put_directory_to_existing_directoryk   sv    	



ÿýú	ÿ
þûÿz9AbstractPutTests.test_put_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   r0   r   r1   r   ÚpytestZraisesÚFileNotFoundErrorr   r   r   r   )r   r   r   r   r   r   r   r   r2   r3   r4   r5   r   r   r   Ú#test_put_directory_to_new_directoryÁ   s@    	


z4AbstractPutTests.test_put_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   r1   r0   )r   r   r   r   r   r   r   r   r   r   r3   r5   Úglobr)   r   r   r   Ú#test_put_glob_to_existing_directoryö   sx    




þûÿ
ýúÿ

üþûÿz4AbstractPutTests.test_put_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 )Nr:   r   r
   r	   r;   r   r*   r+   r,   Tr(   r<   Fr-   r.   )r   r   r   r   r   r   r   r0   )r   r   r   r   r   r   r   r   r3   r5   r=   r)   r   r   r   Útest_put_glob_to_new_directoryL  sT    



üz/AbstractPutTests.test_put_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=AbstractPutTests.test_put_glob_edge_cases.<locals>.<listcomp>c                    s   g | ]}ˆˆ ˆ|ƒƒ‘qS r   r   rA   rD   r   r   rF   ª  s    r(   )r   r   r   ÚfindÚsortedr   r   r8   )r   Úpathr)   r/   Úexpectedr   r   r   Zlocal_glob_edge_cases_filesr   rE   r   Znew_dirr3   r5   ÚoutputZprefixed_expectedr   rD   r   Útest_put_glob_edge_cases†  s(    

ÿÿz)AbstractPutTests.test_put_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   r:   r
   Tr(   Fr&   )r   r   r   r   r   r   r   r1   )r   r   r   r   r   r   r   r   r   r   Úsource_filesr3   r5   r   r   r   Ú,test_put_list_of_files_to_existing_directory´  s6    




ýýúÿz=AbstractPutTests.test_put_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   r   rN   r   r   r   Ú'test_put_list_of_files_to_new_directoryâ  s    

ýz8AbstractPutTests.test_put_list_of_files_to_new_directoryc                 C   sR  ||dƒ}||dƒ}|  |¡ | |¡ |}	| |	¡r:t‚tdƒD ]’}
|j||	dd� | |	¡sdt‚|
dkr–| ||	dƒ¡s€t‚| ||	dƒ¡rÔt‚qB| ||	dƒ¡sªt‚| ||	dƒ¡s¾t‚| ||	ddƒ¡sBt‚qB|j|	dd� | |	¡ròt‚tdƒD ]R}
|j|d |	dd� | |	¡�s"t‚| ||	dƒ¡�s8t‚| ||	dƒ¡rút‚qúd S )NÚsrcÚfileé   Tr(   r   r
   )	r   r   r   r   Úranger   r   r   r   )r   r   r   r   Zlocal_fsr   Z
local_pathrQ   Zsrc_filer   Úloopr   r   r   Útest_put_directory_recursive÷  s,    



z-AbstractPutTests.test_put_directory_recursivec           	      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   r1   r   r   )	r   r   r   r   r   Z(local_dir_and_file_with_same_name_prefixr   r   r   r   r   r   Ú6test_put_directory_without_files_with_same_name_prefix  s    
zGAbstractPutTests.test_put_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lpathZrpath)
rT   r   ÚstrÚencodeÚ	hexdigestÚappendr   ÚcatÚdecoder   )r   r   r   r   r   Z local_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>AbstractPutTests.test_copy_with_source_and_destination_as_listN)Ú__name__Ú
__module__Ú__qualname__r   r"   r$   r%   r6   r9   r>   r?   r7   ÚmarkZparametrizer   rL   rO   rP   rV   rW   r`   r   r   r   r   r   	   s$   +V5V:þ
*.$ r   )Úhashlibr   Ú	itertoolsr   r7   Zfsspec.tests.abstract.commonr   r   r   r   r   r   Ú<module>   s   