o
    '[h                     @   sp   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlmZ	 ddl
mZ e jdd ZG dd	 d	ejZdS )
    N)open)join   )extended_iglobc                 c   sB    t t| |ddd}|V  W d    d S 1 sw   Y  d S )Nwutf8)encoding)r   pjoin)dir_pathfilenamef r   X/var/www/vscode/pina/lib/python3.10/site-packages/Cython/Build/Tests/TestDependencies.pywritable_file   s   "r   c                   @   sD   e Zd Zedd Zedd Zdd Zdd Zd	d
 Zdd Z	dS )TestGlobbingc                 C   sR  t  | _tjd dk rt  }| _n	t | _| jj	}t 
| dD ]}||d fD ]y}dD ]@}t||}t | t|d}|d W d    n1 sQw   Y  t|d}|d	 W d    n1 skw   Y  q0t|d
}|d W d    n1 sw   Y  t|d}|d	 W d    n1 sw   Y  q,q$d S )Nr      abcdxxyzfile2_pyx.pyxz""" PYX """file2_py.pyz
""" PY """file1_pyx.pyxfile1_py.py)osgetcwd	_orig_dirsysversion_infotempfilemkdtemp_tmpdirTemporaryDirectorynamechdirr	   makedirsr   write)cls	temp_pathdir1dir1xdir2r
   r   r   r   r   
setUpClass   s6   




zTestGlobbing.setUpClassc                 C   s@   t | j tjd dk rdd l}|| j d S | j  d S )Nr   r   )	r   r#   r   r   r   shutilrmtreer    cleanup)r&   r,   r   r   r   tearDownClass,   s
   zTestGlobbing.tearDownClassc                 C   sh   t |}t dd t|D }| || tjdkr0d|v r2t t|dd}| || d S d S d S )Nc                 s   s    | ]
}| d tjV  qdS )/N)replacer   sep).0pathr   r   r   	<genexpr>8   s    z+TestGlobbing.files_equal.<locals>.<genexpr>\r0   )sortedr   assertListEqualr   r2   r1   )selfpatternexpected_filesmatched_filesr   r   r   files_equal5   s   zTestGlobbing.files_equalc                 C   s   t dddt dddg}| d| | dg  | d| | d| | d	|d d
  | d|d d
  | d|d
d   | d|d
d   d S )Nar   r   r   za/x/*z	a/x/*.c12za/x/*.{py,pyx,c12}za/x/*.{py,pyx}za/x/*.{pyx}   z	a/x/*.pyxz
a/x/*.{py}za/x/*.py)r	   r=   )r9   ax_filesr   r   r   test_extended_iglob_simple@   s   z'TestGlobbing.test_extended_iglob_simplec              	      s~  dD ]  fdddD }|   d | |   d g  |   d | |   d | |   d	 |d d d
  |   d |d d d
  |   d |dd d
  |   d |dd d
  dD ]X fdddD } d  d }|  |d | |  |d | |  |d |d d d
  |  |d |d d d
  |  |d |dd d
  |  |d |dd d
  qcqd S )Nadc                    s"   g | ]}d D ]}t  ||qqS )r   r   r	   r3   dirnamer   )basedirr   r   
<listcomp>M   s    
z@TestGlobbing.test_extended_iglob_simple_star.<locals>.<listcomp>r   z/*/*z/*/*.c12z/*/*.{py,pyx,c12}z/*/*.{py,pyx}z
/*/*.{pyx}r   z/*/*.pyxz	/*/*.{py}r?   z/*/*.pyzxy*c                    s.   g | ]}d |fv rdD ]}t  ||qqS )*rC   rD   rE   rG   subdirr   r   rH   \   s    
r0   rI   z
*.{py,pyx}z*.{pyx}z*.pyxz*.{py}z*.py)r=   )r9   filesr4   r   rJ   r   test_extended_iglob_simple_starK   s2   
z,TestGlobbing.test_extended_iglob_simple_starc                 C   s  t d}dd |D }dd |D | }| d| | d| | d| | d| | d	g  | d
g  | d| | d| | d| | d| | d| | d| | d| | d| | d| | d|d d d  | d|d d d  | d|d d d  | d|d d d  | d|d d d  | d|dd d  | d|dd d  | d|dd d  | d|dd d  d S )N.c                 S   s,   g | ]}d D ]}dD ]}t |||q
qqS )r   rC   rD   )r3   rG   rF   r   r   r   r   rH   l   s    

z@TestGlobbing.test_extended_iglob_double_star.<locals>.<listcomp>c                 S   s    g | ]}d D ]}t ||qqS ))r   r   rD   )r3   rG   r   r   r   r   rH   r   s    z*/*/*z*/*/**/*z*/**/*.*z**/*.*z
*/**/*.c12z**/*.c12z*/*/*.{py,pyx,c12}z*/*/**/*.{py,pyx,c12}z*/**/*/*.{py,pyx,c12}z**/*/*/*.{py,pyx,c12}z**/*.{py,pyx,c12}z*/*/*.{py,pyx}z**/*/*/*.{py,pyx}z*/**/*/*.{py,pyx}z**/*.{py,pyx}z*/*/*.{pyx}r   z
**/*.{pyx}z*/**/*/*.pyxz	*/*/*.pyxz**/*.pyxz
*/*/*.{py}r?   z	**/*.{py}z*/*/*.pyz**/*.py)r   listdirr=   )r9   basedirsrL   	all_filesr   r   r   test_extended_iglob_double_starj   sB   
z,TestGlobbing.test_extended_iglob_double_starN)
__name__
__module____qualname__classmethodr+   r/   r=   rA   rM   rR   r   r   r   r   r      s    

r   )
contextlibos.pathr   r   r   unittestior   r   r	   Dependenciesr   contextmanagerr   TestCaser   r   r   r   r   <module>   s    
