a
    
3j<                     @   s   d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZddlm	Z	 G dd dej
ZG dd dejZe ZG d	d
 d
eZG dd dej
Zedkre  dS )    N)support   )BufferedWriterc                   @   sh   e Zd Zdd Zdd ZG dd dejZG dd dejZ	d	d
 Z
dd Zdd Zdd Zdd ZdS )Test_TestProgramc                    sj   t  }gtjtjt jj d_ fdd}||_	|
d}j |j d S )NFc                    s   d_ |   S NT)wasRunassertEqual)Z	start_dirpatternZexpectedPathselfZtests V/www/server/python_manager/versions/3.9.10/lib/python3.9/unittest/test/test_program.py_find_tests   s    zETest_TestProgram.test_discovery_from_dotted_path.<locals>._find_testsunittest.test)unittest
TestLoaderospathabspathdirnametest__file__r   r   discover
assertTruer   Z_tests)r   loaderr   Zsuiter   r
   r   test_discovery_from_dotted_path   s    
z0Test_TestProgram.test_discovery_from_dotted_pathc                    s   t  t  }G fdddt }| }tjj  fdd}dd tj_| | dd }|tj_| | tj|d	d
d}| |j | |j| | |jd
 d S )Nc                       s   e Zd Z fddZdS )z/Test_TestProgram.testNoExit.<locals>.FakeRunnerc                    s
   || _  S Nr   r   r   resultr   r   run$   s    z3Test_TestProgram.testNoExit.<locals>.FakeRunner.runN__name__
__module____qualname__r!   r   r   r   r   
FakeRunner#   s   r&   c                      s    t j_d S r   )r   TestProgram	parseArgsr   )oldParseArgsr   r   restoreParseArgs+   s    z5Test_TestProgram.testNoExit.<locals>.restoreParseArgsc                  W   s   d S r   r   )argsr   r   r   <lambda>-       z-Test_TestProgram.testNoExit.<locals>.<lambda>c                   S   s
   t j`d S r   )r   r'   r   r   r   r   r   
removeTest0   s    z/Test_TestProgram.testNoExit.<locals>.removeTestF   )
testRunnerexit	verbosity)	objectr   r'   r(   
addCleanupr   r   r    r2   )r   r   r&   runnerr*   r.   programr   )r)   r    r   
testNoExit   s    

zTest_TestProgram.testNoExitc                   @   s   e Zd Zdd Zdd ZdS )zTest_TestProgram.FooBarc                 C   s   d S r   r   r   r   r   r   testPass<   s    z Test_TestProgram.FooBar.testPassc                 C   s   t d S r   )AssertionErrorr8   r   r   r   testFail>   s    z Test_TestProgram.FooBar.testFailN)r#   r$   r%   r9   r;   r   r   r   r   FooBar;   s   r<   c                   @   s   e Zd Zdd Zdd ZdS )zTest_TestProgram.FooBarLoaderc                 C   s   |  | tjgS r   Z
suiteClassZloadTestsFromTestCaser   r<   )r   moduler   r   r   loadTestsFromModuleC   s    z1Test_TestProgram.FooBarLoader.loadTestsFromModulec                 C   s   |  | tjgS r   r=   )r   namesr>   r   r   r   loadTestsFromNamesG   s    z0Test_TestProgram.FooBarLoader.loadTestsFromNamesN)r#   r$   r%   r?   rA   r   r   r   r   FooBarLoaderA   s   rB   c                 C   sR   G dd dt }tj}dgt_| }tj|dd|  d}|t_| d|j d S )Nc                   @   s   e Zd Zdd ZdS )zATest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunnerc                 S   s
   || _ dS r   r   r   r   r   r   r!   M   s    zETest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunner.runNr"   r   r   r   r   r&   L   s   r&   faketestFr   r0   r1   defaultTest
testLoader)r   r3   sysargvr   r'   rB   r   	testNamesr   r&   Zold_argvr5   r6   r   r   r   test_defaultTest_with_stringK   s    z-Test_TestProgram.test_defaultTest_with_stringc                 C   sZ   G dd dt }tj}dgt_| }tj|dddg|  d}|t_| ddg|j d S )Nc                   @   s   e Zd Zdd ZdS )zCTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunnerc                 S   s
   || _ dS r   r   r   r   r   r   r!   \   s    zGTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunner.runNr"   r   r   r   r   r&   [   s   r&   rC   Fr   zunittest.test2rD   rG   rK   r   r   r   test_defaultTest_with_iterableZ   s    
z/Test_TestProgram.test_defaultTest_with_iterablec                 C   s^   t  }tjddgtj|d|  d}| t|d | d|  | | 	d d S )NFfoobarstream)r1   rI   r0   rF   r    
FAIL: testFail 

FAILED (failures=1)
)
r   r   mainTextTestRunnerrB   r   hasattrassertIngetvalueendswith)r   rP   r6   r   r   r   test_NonExitk   s    
zTest_TestProgram.test_NonExitc                 C   sT   t  }| jttjdgtj|dd|  d | d|  | 	| 
d d S )NrN   rO   T)rI   r0   r1   rF   rQ   rR   r   assertRaises
SystemExitr   rS   rT   rB   rV   rW   r   rX   r   rP   r   r   r   	test_Exitv   s    
zTest_TestProgram.test_Exitc                 C   sR   t  }| jttjdgtj|d|  d | d|  | 	| 
d d S )NrN   rO   )rI   r0   rF   rQ   rR   rZ   r]   r   r   r   test_ExitAsDefault   s    
z#Test_TestProgram.test_ExitAsDefaultN)r#   r$   r%   r   r7   r   TestCaser<   r   rB   rL   rM   rY   r^   r_   r   r   r   r   r      s   
r   c                   @   s>   e Zd ZdZdZdZdZdZdZe	j
ZdZdZdZdd ZdS )InitialisableProgramFNr   __main__r   c                 G   s   d S r   r   )r   r+   r   r   r   __init__   s    zInitialisableProgram.__init__)r#   r$   r%   r1   r    r2   rE   	tb_localsr0   r   ZdefaultTestLoaderrF   r>   ZprogNamer   rc   r   r   r   r   ra      s   ra   c                   @   s(   e Zd ZdZdZdZdd Zdd ZdS )r&   Nr   c                 K   s"   |t _t jrt  jd8  _td S )Nr   )r&   initArgs
raiseError	TypeError)r   kwargsr   r   r   rc      s    zFakeRunner.__init__c                 C   s
   |t _tS r   )r&   r   RESULTr   r   r   r   r!      s    zFakeRunner.run)r#   r$   r%   re   r   rf   rc   r!   r   r   r   r   r&      s
   r&   c                   @   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
dd Zd%ddZdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$S )&TestCommandLineArgsc                 C   s*   t  | _dd | j_d t_d t_dt_d S )Nc                   S   s   d S r   r   r   r   r   r   r,      r-   z+TestCommandLineArgs.setUp.<locals>.<lambda>r   )ra   r6   createTestsr&   re   r   rf   r8   r   r   r   setUp   s
    zTestCommandLineArgs.setUpc                 C   sb   | j }dD ]&}d|_|d |g | |jd q
dD ]&}d|_|d |g | |jd q6d S )N)z-qz--quietr   r   )z-vz	--verboser/   )r6   r2   r(   r   )r   r6   optr   r   r   testVerbosity   s    z!TestCommandLineArgs.testVerbosityc                 C   s  | j }dD ]\}}t||d  |d g | t||d g }t||| |d g | t||| dg}t||| |d g | t||| d|d  }d| }||fD ]0}t||d  |d |g | t||d t||d t J}	| t}
|d |g W d    n1 s00    Y  W d    n1 sP0    Y  | 	|
j
jd t||d t J}	| t}
|d |g W d    n1 s0    Y  W d    n1 s0    Y  | 	|
j
jd qq
d S )	N))bufferro   )failfastrp   )Zcatch
catchbreakF*   z-%sr   z--%sT)r/   )r6   setattrr(   assertIsgetattrr   Zcaptured_stderrr[   r\   r   	exceptionr+   )r   r6   argattrZfalsetrueZ	short_optZlong_optrm   stderrcmr   r   r   testBufferCatchFailfast   sB    
N
Nz+TestCommandLineArgs.testBufferCatchFailfastc              
   C   s   G dd dt j}tjd d  }zxg tjd d < | | jd | |ddjd dgtjd d < | | jd  | |ddjd W |tjd d < n|tjd d < 0 d S )Nc                   @   s   e Zd Zdd Zdd ZdS )z/TestCommandLineArgs.testWarning.<locals>.FakeTPc                 _   s   d S r   r   r   r+   kwr   r   r   r(      r-   z9TestCommandLineArgs.testWarning.<locals>.FakeTP.parseArgsc                 _   s   d S r   r   r}   r   r   r   runTests   r-   z8TestCommandLineArgs.testWarning.<locals>.FakeTP.runTestsN)r#   r$   r%   r(   r   r   r   r   r   FakeTP   s   r   defaultignore)warningsZ	somevalue)r   r'   rH   warnoptionsr   r   )r   r   r   r   r   r   testWarning   s    zTestCommandLineArgs.testWarningc              	   C   sf   | j }t|_d|_d|_d|_d|_|  | tj	dddddd | tj
d | |jt d S )Nr2   rp   ro   r   F)r2   rp   ro   rd   r   r   )r6   r&   r0   r2   rp   ro   r   r   r   re   r   rt   r    ri   r   r6   r   r   r   testRunTestsRunnerClass   s    
z+TestCommandLineArgs.testRunTestsRunnerClassc                 C   sH   | j }t |_d t_|  | tj | tjd | |j	t
 d S )Nr   )r6   r&   r0   re   r   ZassertIsNoner   r   rt   r    ri   r   r   r   r   testRunTestsRunnerInstance  s    z.TestCommandLineArgs.testRunTestsRunnerInstancec              	   C   sN   | j }t|_|d dg | d|j |  | tjddddd d d S )Nz--localsTFr   )ro   rp   rd   r2   r   )r6   r&   r0   r(   r   rd   r   re   r   r   r   r   test_locals!  s    
zTestCommandLineArgs.test_localsc                 C   s`   | j }dt_t|_d|_d|_d|_d|_|  | 	tj
i  | 	tjd | |jt d S )Nr/   r2   rp   ro   r   )r6   r&   rf   r0   r2   rp   ro   r   r   r   re   rt   r    ri   r   r   r   r   testRunTestsOldRunnerClass.  s    z.TestCommandLineArgs.testRunTestsOldRunnerClassc                    sj   t jd   j fdd}| d_fdd}| _j}d|_t|_|	  
j d S )Nzunittest.mainc                      s
    _ d S r   )installHandlerr   )r>   originalr   r   restoreE  s    zBTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.restoreFc                      s
   d _ d S r   )	installedr   r8   r   r   fakeInstallHandlerJ  s    zMTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.fakeInstallHandlerT)rH   modulesr   r4   r   r6   rq   r&   r0   r   r   )r   r   r   r6   r   )r>   r   r   r   testCatchBreakInstallsHandlerB  s    

z1TestCommandLineArgs.testCatchBreakInstallsHandlerTc                    s6    fdd}t jj|t j_fdd}| | d S )Nc                    s   |  v S r   r   )r   )r@   r   r   isfileW  s    z1TestCommandLineArgs._patch_isfile.<locals>.isfilec                      s    t j_d S r   )r   r   r   r   )r   r   r   r   [  s    z2TestCommandLineArgs._patch_isfile.<locals>.restore)r   r   r   r4   )r   r@   existsr   r   r   )r@   r   r   _patch_isfileV  s
    z!TestCommandLineArgs._patch_isfilec                 C   sF   | j }g d}| | dd |_|| g d}| |j| d S )N)prognamezfoo.pyzbar.Pyzbaz.PYwing.txtc                   S   s   d S r   r   r   r   r   r   r,   f  r-   z<TestCommandLineArgs.testParseArgsFileNames.<locals>.<lambda>)foobarZbazr   r6   r   rk   r(   r   rJ   r   r6   rI   expectedr   r   r   testParseArgsFileNames`  s    


z*TestCommandLineArgs.testParseArgsFileNamesc                 C   sF   | j }g d}| | dd |_|| ddg}| |j| d S )Nr   foo/bar/baz.pygreen\red.pyc                   S   s   d S r   r   r   r   r   r   r,   t  r-   z<TestCommandLineArgs.testParseArgsFilePaths.<locals>.<lambda>foo.bar.baz	green.redr   r   r   r   r   testParseArgsFilePathso  s    


z*TestCommandLineArgs.testParseArgsFilePathsc                 C   sF   | j }g d}| g  dd |_|| | |j|dd   d S )Nr   c                   S   s   d S r   r   r   r   r   r   r,     r-   zCTestCommandLineArgs.testParseArgsNonExistentFiles.<locals>.<lambda>r   r   r   r6   rI   r   r   r   testParseArgsNonExistentFiles{  s    


z1TestCommandLineArgs.testParseArgsNonExistentFilesc                    sd   t   | j} fdd}d|d|dg}| | dd |_|| dd	g}| |j| d S )
Nc                    s   t j | S r   )r   r   join)nameZcur_dirr   r   _join  s    zOTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>._joinr   r   r   c                   S   s   d S r   r   r   r   r   r   r,     r-   zRTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>.<lambda>r   r   )r   getcwdr6   r   rk   r(   r   rJ   )r   r6   r   rI   r   r   r   r   ,testParseArgsAbsolutePathsThatCanBeConverted  s    


z@TestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConvertedc                 C   sF   | j }g d}| | dd |_|| | |j|dd   d S )N)r   z/foo/bar/baz.pyz/green/red.pyc                   S   s   d S r   r   r   r   r   r   r,     r-   zUTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted.<locals>.<lambda>r   r   r   r   r   r   /testParseArgsAbsolutePathsThatCannotBeConverted  s    


zCTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConvertedc                 C   s8   | j }g d}dd |_|| | |jg d d S )N)r   -kr   r   r   r   *pat*c                   S   s   d S r   r   r   r   r   r   r,     r-   zDTestCommandLineArgs.testParseArgsSelectedTestNames.<locals>.<lambda>)z*foo*z*bar*r   )r6   rk   r(   r   ZtestNamePatternsr   r   r   r   testParseArgsSelectedTestNames  s
    

z2TestCommandLineArgs.testParseArgsSelectedTestNamesc                 C   s   dd }d}|  d||g |  d|dd|g |  d|g d |  d|dd	|g |  d|dd
|g |  d|dd|g |  d|dd|g |  d|dd|g d S )Nc                 S   sb   t jtjddg|  t jt jtjt	d}| |
 \}}W d    n1 sP0    Y  | S )Nz-mr   )stdoutrz   cwd)
subprocessPopenrH   
executableDEVNULLPIPEr   r   r   r   communicatedecode)r+   p_rz   r   r   r   run_unittest  s    *zMTestCommandLineArgs.testSelectedTestNamesFunctionalTest.<locals>.run_unittestZ_test_warningszRan 7 testsr   TestWarnings)r   z-pz*_test*r   r   zRan 2 testsftzRan 3 testsz*tz*test_warnings.*Warning*z
Ran 1 testz*test_warnings.*warning*)rV   )r   r   r   r   r   r   #testSelectedTestNamesFunctionalTest  s    z7TestCommandLineArgs.testSelectedTestNamesFunctionalTestN)T)r#   r$   r%   rl   rn   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rj      s"   &


	rj   rb   )ior   rH   r   r   r   r   Zunittest.testZtest_resultr   r`   r   r'   ra   r3   ri   r&   rj   r#   rS   r   r   r   r   <module>   s"      