a
    ze                     @   s   d dl Z d dlmZ d dlZd dlZejdddr<e dG dd deZG dd	 d	eZ	G d
d de j
Zedkr~e   dS )    N)supportT)addressZmemoryz>workaround ASAN build issues on loading tests like tk or cryptc                   @   s   e Zd ZdS )NoAllN__name__
__module____qualname__ r	   r	   '/usr/lib/python3.9/test/test___all__.pyr      s   r   c                   @   s   e Zd ZdS )FailedImportNr   r	   r	   r	   r
   r      s   r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )AllTestc                 C   s  i }t jdtfdtfdtfdd8 ztd| | W n   t|Y n0 W d    n1 s`0    Y  ttj	| dst
|i }| j|d t jdtfdtfdd ztd| | W n< ty } z$| d	||jj| W Y d }~n
d }~0 0 d
|v r|d
= d|v r |d= d|v r0|d= t|}tj	| j}t|}| ||d| | ||d| W d    n1 s0    Y  W d    n1 s0    Y  d S )Nz.* (module|package) T)quietz	import %s__all__)modulezfrom %s import *z__all__ failure in {}: {}: {}__builtins____annotations__Z__warningregistry__zin module {})r   Zcheck_warningsDeprecationWarningPendingDeprecationWarningResourceWarningexecr   hasattrsysmodulesr   ZsubTest	ExceptionZfailformat	__class__r   setr   ZassertCountEqualZassertEqual)selfmodnamenamesekeysZall_listZall_setr	   r	   r
   	check_all   sJ    ,



zAllTest.check_allc                 c   s   t t|D ]}tj||}tj|r~tj|d}tj|r||| fV  | ||| d D ]\}}||fV  qhq|dr|dkrq|||d d  fV  qd S )Nz__init__.py.z.py)	sortedoslistdirpathjoinisdirexistswalk_modulesendswith)r   Zbasedirmodpathfnr)   Zpkg_initpmr	   r	   r
   r-   ?   s    zAllTest.walk_modulesc              	   C   s4  t dg}tjdsdd l}g }g }tjtjt}| 	|dD ]\}}|}d}	|rx||v rhd}	qx|
dd }qV|	r~qFtjrt| zLt|d.}
d	|
 vrt|| | W d    n1 s0    Y  W qF ty   || Y qF ty   || Y qF0 qFtjr0td
| td| d S )NZ
__future__javar   r   FTr$   rbs   __all__z8Following modules have no __all__ and have been ignored:z(Following modules failed to be imported:)r   r   platform
startswith_socketr'   r)   dirname__file__r-   
rpartitionr   verboseprintopenreadr   r#   appendr   )r   Z	blacklistr7   ZignoredZfailed_importsZlib_dirr)   r   r2   Zblacklistedfr	   r	   r
   test_allM   sD    ,zAllTest.test_allN)r   r   r   r#   r-   rA   r	   r	   r	   r
   r      s   (r   __main__)Zunittesttestr   r'   r   Zcheck_sanitizerZSkipTestRuntimeErrorr   r   ZTestCaser   r   mainr	   r	   r	   r
   <module>   s   
e