o
    reL                     @   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 ||sJ ||d}||d}	|||d| ||s4J |||dd| ||	sEJ |||	g ||rSJ ||	rZJ |||d|d  ||slJ ||ssJ |||dd|d  ||	sJ d S )Ndummyfile2subfile1subdir/)mkdirtouchisdir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   JD:\Projects\ConvertPro\env\Lib\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J |||ds'J |||dds2J d S )Nr	   r   znewdir/newdir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 ||sJ |||dd||d |||ds1J d S )Nr   r	   r   newfile)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s!J |||dds,J 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}|| ||sJ tddgddgD ]\\}	}
||d}|	r5|d7 }|
r;|d n|}||| |||rKg n|gksQJ |j||dd |	r|||dseJ |||dsoJ |||d	syJ |||d	d
sJ |||drJ |j||d||d||d	gdd nA|||dsJ |||ddsJ |||ddsJ |||dd	sJ |||dd	d
sJ |j||ddd |||rg n|gksJ |j||ddd |	r9|||dsJ |||dsJ |||d	rJ |||dr)J |j||d||dgdd n9|||dsDJ |||ddsPJ |||dds\J |||dd	rhJ |j||ddd |||r{g n|gksJ q%d S )Nr   FTr	   r
   	recursiver   subfile2	nesteddir
nestedfile   r%   maxdepth)	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   sl   	



	"z;AbstractCopyTests.test_copy_directory_to_existing_directoryc              	   C   s  |}|}| | tddgddgD ]\}}	||d}
|r!|
d7 }
||d}|	r,|d7 }||
| |r>||g ks=J ntt || W d    n1 sSw   Y  |j|
|dd |||dsjJ |||ddsuJ |||ddsJ |||dd	sJ |||dd	d
sJ |	||drJ |j
||ddd |	||drJ |j|
|ddd |||dsJ |||ddsJ |||ddsJ |	||dd	rJ |	||drJ |j
||ddd |	||drJ qd S )NFTr	   r
   r   r$   r   r&   r'   r(   r)   r*   )r   r,   r   r-   pytestZraisesFileNotFoundErrorr   r   r   r   )r   r   r   r   r   r   r   r   r.   r/   r0   r1   r   r   r   $test_copy_directory_to_new_directory   sD   	


z6AbstractCopyTests.test_copy_directory_to_new_directoryc                 C   s  |}|}| | |s||d}|| ||sJ dD ]*}	|	r'|d n|}
|||dd|
 |||ds=J |||dsGJ |||drQJ |||dd	r\J |||drfJ |j||d||dgd
d |||r}g n|gksJ tddgd
dgD ]\}}|j||d||
|d |||dsJ |||dsJ |||dsJ |||dd	sJ |||drJ |j||d||d||dgd
d |||rg n|gksJ |j||d||
|dd |||dsJ |||dsJ |||drJ |||dr)J |j||d||dgd
d |||rAg n|gksHJ qqd S )Nr   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   r/   r1   globr%   r   r   r   $test_copy_glob_to_existing_directory   sj   	



"z6AbstractCopyTests.test_copy_glob_to_existing_directoryc              	   C   s  |}|}| | dD ]Y}||d}|r|d7 }|||dd| |||ds-J |||dds8J |||ddsCJ |||ddrNJ |||ddd	rZJ |||drdJ |||ddroJ |j||dd
d |||drJ tddgd
dgD ]\}	}
|j||d|	||
d |||dsJ |||ddsJ |||ddsJ |||ddsJ |||ddd	sJ |||drJ |||ddrJ |j||dd
d |||drJ |j||d|	||
dd |||dsJ |||dds J |||dds,J |||ddr8J |||drCJ |||ddrOJ |j||dd
d |||drdJ qqd S )Nr6   r   r
   r	   r7   r   r&   r'   r(   Tr$   r8   Fr)   r*   )r   r   r   r   r   r   r,   )r   r   r   r   r   r   r   r/   r1   r9   r%   r   r   r   test_copy_glob_to_new_directory9  sR   


z1AbstractCopyTests.test_copy_glob_to_new_directoryargnamesZ	argvaluesc
              	      s   |}
|t ddgddgD ]`\}}| |r dn}|r%|d n|}|j |
||||d |}|rF fdd|D }n fdd|D }t|t|ks[J z	|jdd	 W q tym   Y qw 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=   r@   r   r   rB     s    r$   )r   r   copyfindsortedr   r4   )r   pathr%   r+   expectedr   r   Zfs_glob_edge_cases_filesr   rA   r   Znew_dirr/   r1   outputZprefixed_expectedr   r@   r   test_copy_glob_edge_casesp  s,   

z+AbstractCopyTests.test_copy_glob_edge_casesc                 C   s   |}|}| | |s||d}|| ||sJ ||d||d||ddg}	dD ]O}
|
r5|d n|}||	| |||dsGJ |||dsQJ |||ds[J |j||d||d||dgdd	 |||rvg n|gks|J q-d S )
Nr   file1r   r	   r   r6   r
   Tr$   )r   r   r   r   r   r   r-   )r   r   r   r   r   r   r   r   r   source_filesr/   r1   r   r   r   -test_copy_list_of_files_to_existing_directory  s4   	



z?AbstractCopyTests.test_copy_list_of_files_to_existing_directoryc                 C   s   |}|}| | ||d||d||ddg}||||dd  |||ds-J |||dds8J |||ddsCJ |||ddsNJ d S )NrJ   r   r	   r   r   r
   r   )r   r   r   r   r   r   r   rK   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J |||d||dg| ||s J |||ds*J |||ds4J d S )NrJ   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sJ |||dr#J |||dg |r8||g ks7J n||r?J |j ||d|dd |||dsTJ |||dds_J |||dsiJ d S )Nr	   Tr$   zsubfile.txtz
subdir.txtzsubdir*)r   r   r   r-   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 ]#}	tt|	d }
||||
 d ||||
 d q|j||d t dD ]}	|||	 d}|t|	ksOJ q;d S )N
   zutf-8z.txt)Zpath1Zpath2)	ranger   strencode	hexdigestappendrC   catdecode)r   r   r   r   Zfs_10_files_with_hashed_namesr   r   rK   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#   r2   r5   r:   r;   r3   markZparametrizer   rI   rL   rM   rN   rO   rY   r   r   r   r   r   	   s&    *P5L7
)+r   )hashlibr   	itertoolsr   r3   Zfsspec.tests.abstract.commonr   r   r   r   r   r   <module>   s
    