
    0hhN&                         S SK r S SKrS SKrS SKrS SKrS rS r " S S\R                  5      r\	S:X  a  \R                  " 5         gg)    Nc                    [         R                  " U 5      nU H  n[         R                  R                  X5      n[         R                  R	                  U5      (       a1  [         R                  R                  U5      (       d  [        U5        Mw  [         R                  " U5        M     [         R                  " U 5        g N)	oslistdirpathjoinisdirislinkcleanoutremovermdir)rootnamesnamefullnames       6/opt/python-3.13.8/usr/lib/python3.13/test/test_pkg.pyr   r      sr    JJtE77<<+77==""277>>(+C+CXIIh  HHTN    c                 b    SU ;   a  U R                  S5        SU ;   a  U R                  S5        U $ )N__builtins____initializing__)r   )lsts    r   fixdirr      s0    

>"S 

%&Jr   c                       \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS r\R                   " \R$                  R&                  S:  S5      S 5       rSrg)TestPkg.   c                 z    S U l         S U l        [        [        R                  5      U l        [        5       U l        g r   )r   pkgnamelistsysr   syspathsetmodules_to_cleanup)selfs    r   setUpTestPkg.setUp0   s)    	CHH~"%%r   c                    U R                   [        R                  S S & U R                   H*  nU[        R                  ;   d  M  [        R                  U	 M,     U R
                  (       a  [        U R
                  5        U R                  (       a\  [        R                   Vs/ s H&  nU R                  UR                  S5      ;   d  M$  UPM(     nnU H  n[        R                  U	 M     g g s  snf )N.)	r    r   r   r"   modulesr   r   r   split)r#   
modulenamer   r(   s       r   tearDownTestPkg.tearDown6   s    ll11JS[[(KK
+ 2 99TYY <<(+ ;,,$**S/9 G ;KK%   ;s   !#C,C,c                 Z    [        [        R                  " U5      [        5       SU 05        g )Nr#   )exectextwrapdedentglobals)r#   codes     r   run_codeTestPkg.run_codeE   s    X__T"GI~>r   c                    [         R                  " 5       n[        R                  R	                  SU5        [
        R                  R                  U5      (       d  [
        R                  " U5        U H  u  p4UR                  5       nU R                  R                  SR                  U5      5        UnU H"  n[
        R                  R                  Xg5      nM$     Uc  [
        R                  " U5        M  [        US5       nUR                  U5        UR                  S5      (       d  UR                  S5        S S S 5        M     X l        US   S   U l        g ! , (       d  f       M  = f)Nr   r'   w
)tempfilemkdtempr   r   insertr   r	   mkdirr)   r"   addr   openwriteendswithr   r   )	r#   descrr   r   contentscompsr   cfs	            r   mkhierTestPkg.mkhierH   s   !4 ww}}T""HHTN#NDJJLE##''8H77<<4 "(C(AGGH%#,,T22 )( $ 	Qx{ )(s   9E
E*	c                 6    SS/nU R                  U5        SS Kng )N)t1N)zt1 __init__.py r   )rE   rH   )r#   hierrH   s      r   test_1TestPkg.test_1^   s    45Dr   c                    / SQnU R                  U5        SS KnSS KnU R                  UR                  S5        U R                  UR
                  R                  S5        U R                  UR
                  R                  R                  S5        SnU R                  U5        SSKJn  SSKJn  SS	KJ	n  U R                  UR                  S5        U R                  UR                  S5        U R                  UR                  R                  S5        S
 H#  nU R                  [        5       S   SU-  5        M%     SS KnSS KnU R                  UR                  S5        U R                  UR
                  R                  S5        U R                  UR
                  R                  R                  S5        SnU R                  U5        g )N))t2N)zt2 __init__.pyz'doc for t2')zt2 subN)zt2 sub __init__.pyrI   )zt2 sub subsubN)zt2 sub subsub __init__.pyspam = 1r   rN   zt2.subzt2.sub.subsubz{
            import t2
            from t2 import *
            self.assertEqual(dir(), ['self', 'sub', 't2'])
            subsubsubspam)rU   rQ   rS   rN   r   zFailed to import %sz_
            from t2 import *
            self.assertEqual(dir(), ['self', 'sub'])
            )rE   t2.subt2.sub.subsubassertEqual__name__rQ   rS   r3   rN   rU   
assertTruelocals)r#   rJ   rN   srQ   rS   rU   r   s           r   test_2TestPkg.test_2c   sS   
 	Dd+(3//A
 	a!&x0/:,,o>3DOOFHV,.Cd.JK 4 	d+(3//A 	ar   c                    / SQnU R                  U5        SS KnU R                  UR                  S5        U R                  UR                  R                  S5        U R                  UR                  R
                  R                  S5        g )N))t3N)zt3 __init__.pyrI   )zt3 subN)zt3 sub __init__.pyrI   )zt3 sub subsubN)zt3 sub subsub __init__.pyrO   r   r`   zt3.subzt3.sub.subsub)rE   t3.sub.subsubrX   rY   rQ   rS   )r#   rJ   r`   s      r   test_3TestPkg.test_3   sd     	Dd+(3//Ar   c                 T    / SQnU R                  U5        SnU R                  U5        g )N)	)zt4.pyz)raise RuntimeError('Shouldnt load t4.py'))t4N)zt4 __init__.pyrI   )z	t4 sub.py*raise RuntimeError('Shouldnt load sub.py'))zt4 subN)zt4 sub __init__.pyrI   )zt4 sub subsub.py-raise RuntimeError('Shouldnt load subsub.py'))zt4 sub subsubN)zt4 sub subsub __init__.pyrO   z[
            from t4.sub.subsub import *
            self.assertEqual(spam, 1)
            )rE   r3   )r#   rJ   r\   s      r   test_4TestPkg.test_4   s,     	D 	ar   c                 h   / SQnU R                  U5        SnU R                  U5        SS KnU R                  [	        [        U5      5      / SQ5        U R                  [	        [        UR                  5      5      / SQ5        U R                  [	        [        UR                  5      5      / SQ5        g )N))t5N)zt5 __init__.pyzimport t5.foo)zt5 string.pyrO   )z	t5 foo.pyz-from . import string; assert string.spam == 1zo
            from t5 import *
            self.assertEqual(dir(), ['foo', 'self', 'string', 't5'])
            r   )
__cached____doc____file__
__loader__rY   __package____path____spec__foostringrk   )rl   rm   rn   ro   rY   rp   rr   rt   )rl   rm   rn   ro   rY   rp   rr   rU   )rE   r3   rk   rX   r   dirrs   rt   )r#   rJ   r\   rk   s       r   test_5TestPkg.test_5   s     	D 	aB1	2 	BFF,K	L 	BII/I	Jr   c                     / SQnU R                  U5        SS KnU R                  [        [	        U5      5      / SQ5        SnU R                  U5        g )N))t6N)zt6 __init__.pyz!__all__ = ['spam', 'ham', 'eggs'])z
t6 spam.pyrI   )z	t6 ham.pyrI   )z
t6 eggs.pyrI   r   )	__all__rl   rm   rn   ro   rY   rp   rq   rr   a  
            import t6
            from t6 import *
            self.assertEqual(fixdir(dir(t6)),
                             ['__all__', '__cached__', '__doc__', '__file__',
                              '__loader__', '__name__', '__package__',
                              '__path__', '__spec__', 'eggs', 'ham', 'spam'])
            self.assertEqual(dir(), ['eggs', 'ham', 'self', 'spam', 't6'])
            )rE   ry   rX   r   ru   r3   )r#   rJ   ry   r\   s       r   test_6TestPkg.test_6   sL     	DB&	' 	ar   c                    / SQnU R                  U5        Su  p#nSS KnU R                  [        [	        U5      5      / SQ5        U R                  U5        SSKJn  U R                  [        [	        U5      5      / SQ5        U R                  U5        U R                  U5        SSKJn  U R                  [        [	        U5      5      / SQ5        U R                  U5        U R                  U5        U R                  U5        SSK	J
n  U R                  US	5        U R                  U5        U R                  U5        U R                  U5        g )
N)	)zt7.pyrI   )t7N)zt7 __init__.pyrI   )z	t7 sub.pyrf   )zt7 subN)zt7 sub __init__.pyrI   )z
t7 sub .pyrg   )zt7 sub subsubN)zt7 sub subsub __init__.pyrO   )NNNr   )rl   rm   rn   ro   rY   rp   rq   rr   rP   rR   )	rl   rm   rn   ro   rY   rp   rq   rr   rU   rT      )rE   r~   rX   r   ru   assertFalserQ   t7.subrS   t7.sub.subsubrU   )	r#   rJ   r~   rQ   rS   tassubpar	subsubsubhams	            r   test_7TestPkg.test_7   s     	D +C)M	N 	$F,M	N 	.I/"	# 	 -a  r      z)Docstrings are omitted with -O2 and abovec                     SS[         R                  -   S-   S4/nU R                  U5        SS KnU R	                  UR
                  S5        g )N)t8Nzt8 __init__pyz'doc for t8'r   z
doc for t8)r   extseprE   r   rX   rm   )r#   rJ   r   s      r   test_8TestPkg.test_8  sI     ryy(-~> 	D\2r   )r"   r   r   r    N)rY   
__module____qualname____firstlineno__r$   r+   r3   rE   rK   r]   rb   rh   rv   r{   r   unittestskipIfr   flagsoptimizer   __static_attributes__ r   r   r   r   .   sp    (&?#,
-^B *J86*!X __SYY''1,@B3B3r   r   __main__)r   r   r8   r/   r   r   r   TestCaser   rY   mainr   r   r   <module>r      sM     	   
0v3h v3p zMMO r   