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r¤e ¡  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Zdd„ Zdd„ ZdS )zTest_TestProgram.FooBarLoaderz3Test loader that returns a suite containing FooBar.c                 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%   Ú__doc__r?   rA   r   r   r   r   ÚFooBarLoaderA   s   rC   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'   rC   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&   rD   Fr   zunittest.test2rE   rH   rL   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   rJ   r0   rG   r    ú
FAIL: testFail ú

FAILED (failures=1)
)
r   r   ÚmainÚTextTestRunnerrC   r   ÚhasattrÚassertInÚgetvalueÚendswith)r   rQ   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 )NrO   rP   T)rJ   r0   r1   rG   rR   rS   ©r   ÚassertRaisesÚ
SystemExitr   rT   rU   rC   rW   rX   r   rY   ©r   rQ   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 )NrO   rP   )rJ   r0   rG   rR   rS   r[   r^   r   r   r   Útest_ExitAsDefaultƒ   s    
ûz#Test_TestProgram.test_ExitAsDefaultN)r#   r$   r%   r   r7   r   ÚTestCaser<   r   rC   rM   rN   rZ   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   rF   Ú	tb_localsr0   r   ZdefaultTestLoaderrG   r>   ZprogNamer   rd   r   r   r   r   rb      s   rb   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   rd   ¤   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%   rf   r   rg   rd   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   )rb   r6   ÚcreateTestsr&   rf   r   rg   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 s°0    Y  W d   ƒ n1 sÐ0    Y  |  	|
j
jd¡ q¸q
d S )	N))Úbufferrp   )Úfailfastrq   )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_optrn   Ú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 )zTest the warnings argumentc                   @   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   NÚdefaultÚignore)ÚwarningsZ	somevalue)r   r'   rI   Ú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   rq   rp   r„   F)r2   rq   rp   re   r„   r   )r6   r&   r0   r2   rq   rp   r„   r€   r   rf   r   ru   r    rj   ©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   rf   r€   ZassertIsNoner   r   ru   r    rj   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   )rp   rq   re   r2   r„   )r6   r&   r0   r(   r   re   r€   rf   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   rq   rp   r   )r6   r&   rg   r0   r2   rq   rp   r   r€   r   rf   ru   r    rj   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)rI   ÚmodulesrŒ   r4   r   r6   rr   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•   rl   r(   r   rK   ©r   r6   rJ   Ú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   rJ   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•   rl   r(   r   rK   )r   r6   r©   rJ   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   rl   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   )Ústdoutr{   Úcwd)Ú
subprocessÚPopenrI   Ú
executableÚDEVNULLÚPIPEr   r   r   r   ÚcommunicateÚdecode)r+   ÚpÚ_r{   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*)rW   )r   r»   r¾   r   r   r   Ú#testSelectedTestNamesFunctionalTest®  s    z7TestCommandLineArgs.testSelectedTestNamesFunctionalTestN)T)r#   r$   r%   rm   ro   r}   r†   rˆ   r‰   rŠ   r‹   r’   r•   r   r£   r¥   r«   r¬   r¯   r¿   r   r   r   r   rk   ¯   s"   &


	rk   rc   )Úior   rI   r²   r   r   r   Zunittest.testZtest_resultr   ra   r   r'   rb   r3   rj   r&   rk   r#   rT   r   r   r   r   Ú<module>   s"      