
    =eWA                     H   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ej
                  Z G d dej                  Z e            Z G d d	e          Z ej                     G d
 dej
                              Zedk    r ej                     dS dS )    N)support)BufferedWriterc                       e Zd Zd Zd Z G d dej                  Z G d dej                  Z	d Z
d Zd	 Zd
 Zd ZdS )Test_TestProgramc                     t          j                    } gt          j                            t          j                            t           j        j                            d _         fd}||_	        |
                    d          }                      j                                        |j                   d S )NFc                 B    d_                             |            S NT)wasRunassertEqual)	start_dirpatternexpectedPathselftestss     1/usr/lib/python3.11/unittest/test/test_program.py_find_testszETest_TestProgram.test_discovery_from_dotted_path.<locals>._find_tests   s%    DKY555L    unittest.test)unittest
TestLoaderospathabspathdirnametest__file__r
   r   discover
assertTruer   _tests)r   loaderr   suiter   r   s   `   @@r   test_discovery_from_dotted_pathz0Test_TestProgram.test_discovery_from_dotted_path   s    $&&wrwx}7M'N'NOO	 	 	 	 	 	 	 )00$$$u-----r   c                    t                      t                      } G fddt                     } |            }t          j        j        fd}d t          j        _        |                     |           d }|t          j        _        |                     |           t          j        |dd          }|                     |j                   |                     |j        |           |                     |j        d           d S )	Nc                       e Zd Z fdZdS )/Test_TestProgram.testNoExit.<locals>.FakeRunnerc                     || _         S Nr   )r   r   results     r   runz3Test_TestProgram.testNoExit.<locals>.FakeRunner.run$   s     	r   N__name__
__module____qualname__r*   )r)   s   r   
FakeRunnerr%   #   s.              r   r/   c                  *     t           j        _        d S r'   )r   TestProgram	parseArgs)oldParseArgss   r   restoreParseArgsz5Test_TestProgram.testNoExit.<locals>.restoreParseArgs+   s    -9H ***r   c                      d S r'    )argss    r   <lambda>z-Test_TestProgram.testNoExit.<locals>.<lambda>-   s    t r   c                      t           j        `d S r'   )r   r1   r   r6   r   r   
removeTestz/Test_TestProgram.testNoExit.<locals>.removeTest0   s    $)))r   F   )
testRunnerexit	verbosity)	objectr   r1   r2   
addCleanupr   r   r)   r>   )	r   r   r/   runnerr4   r:   programr3   r)   s	          @@r   
testNoExitzTest_TestProgram.testNoExit   s/   xx	 	 	 	 	 	 	 	 	 	
 +5	: 	: 	: 	: 	:););&()))	* 	* 	*$(!
###&&uPQRRR000d+++*A.....r   c                       e Zd Zd Zd Zd Z ej        d          d             Zej	        d             Z
ej	        d             ZdS )	Test_TestProgram.FooBarc                     d S r'   r6   r   s    r   testPassz Test_TestProgram.FooBar.testPass<   s    Dr   c                     t           r'   AssertionErrorrG   s    r   testFailz Test_TestProgram.FooBar.testFail>   s      r   c                     ddz   d S )N   r   r6   rG   s    r   	testErrorz!Test_TestProgram.FooBar.testError@   s    aCCCCr   skippingc                     t           r'   rJ   rG   s    r   testSkippedz#Test_TestProgram.FooBar.testSkippedB         r   c                     t           r'   rJ   rG   s    r   testExpectedFailurez+Test_TestProgram.FooBar.testExpectedFailureE   rS   r   c                     d S r'   r6   rG   s    r   testUnexpectedSuccessz-Test_TestProgram.FooBar.testUnexpectedSuccessH   s    Dr   N)r,   r-   r.   rH   rL   rO   r   skiprR   expectedFailurerU   rW   r6   r   r   FooBarrE   ;   s        	 	 		! 	! 	!	 	 		z	"	"	! 	! 
#	"	!		!	! 	! 
"	!	!		!	 	 
"	!	 	 	r   rZ   c                       e Zd Z	 d Zd ZdS )Test_TestProgram.FooBarLoaderc                 h    |                      |                     t          j                  g          S r'   
suiteClassloadTestsFromTestCaser   rZ   )r   modules     r   loadTestsFromModulez1Test_TestProgram.FooBarLoader.loadTestsFromModuleN   3    ??++,<,CDDEG G Gr   c                 h    |                      |                     t          j                  g          S r'   r^   )r   namesra   s      r   loadTestsFromNamesz0Test_TestProgram.FooBarLoader.loadTestsFromNamesR   rc   r   N)r,   r-   r.   rb   rf   r6   r   r   FooBarLoaderr\   L   s=        A	G 	G 	G	G 	G 	G 	G 	Gr   rg   c                     G d dt                     }t          j        }dgt          _         |            }t          j        |dd|                                           }|t          _        |                     d|j                   d S )Nc                       e Zd Zd ZdS )ATest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunnerc                     || _         dS r	   r(   r   r   s     r   r*   zETest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunner.runX        	tr   Nr+   r6   r   r   r/   rj   W   #            r   r/   faketestFr   r<   r=   defaultTest
testLoader)r   r?   sysargvr   r1   rg   r   	testNamesr   r/   old_argvrA   rB   s        r   test_defaultTest_with_stringz-Test_TestProgram.test_defaultTest_with_stringV   s    	 	 	 	 	 	 	 	
 8<&&u3B262C2C2E2EG G G +W->?????r   c                     G d dt                     }t          j        }dgt          _         |            }t          j        |dddg|                                           }|t          _        |                     ddg|j                   d S )Nc                       e Zd Zd ZdS )CTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunnerc                     || _         dS r	   r(   rl   s     r   r*   zGTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunner.rung   rm   r   Nr+   r6   r   r   r/   r|   f   rn   r   r/   ro   Fr   zunittest.test2rp   rs   rw   s        r   test_defaultTest_with_iterablez/Test_TestProgram.test_defaultTest_with_iterablee   s    	 	 	 	 	 	 	 	
 8<&E(*:;((**, , , /+;<!+	- 	- 	- 	- 	-r   c                    t                      }t          j        ddgt          j        |          |                                           }|                     t          |d                     |                                }|                     d|           |                     d|           |                     d|           d	}|                     |	                    |                     d S )
NFfoobarstream)r=   ru   r<   rr   r)   
FAIL: testFail 
ERROR: testError +
UNEXPECTED SUCCESS: testUnexpectedSuccess X

FAILED (failures=1, errors=1, skipped=1, expected failures=1, unexpected successes=1)
)
r   r   mainTextTestRunnerrg   r   hasattrgetvalueassertInendswith)r   r   rB   outexpecteds        r   test_NonExitzTest_TestProgram.test_NonExitv   s    !!-U&.Z+3+B&+Q+Q+Q+/+<+<+>+>@ @ @ 	22333oo)3///+S111DcJJJEX../////r   c           	         t                      }|                     t          t          j        dgt          j        |          d|                                            |                                }|                     d|           |                     d|           |                     d|           d}| 	                    |
                    |                     d S )	Nr   r   T)ru   r<   r=   rr   r   r   r   r   r   assertRaises
SystemExitr   r   r   rg   r   r   r   r   r   r   r   r   s       r   	test_ExitzTest_TestProgram.test_Exit   s    !!M.f===((** 	 	, 	, 	, oo)3///+S111DcJJJEX../////r   c                    t                      }|                     t          t          j        dgt          j        |          |                                            |                                }|                     d|           |                     d|           |                     d|           d}| 	                    |
                    |                     d S )Nr   r   )ru   r<   rr   r   r   r   r   r   r   s       r   test_ExitAsDefaultz#Test_TestProgram.test_ExitAsDefault   s    !!M.f===((** 	 	, 	, 	, oo)3///+S111DcJJJEX../////r   N)r,   r-   r.   r"   rC   r   TestCaserZ   r   rg   ry   r~   r   r   r   r6   r   r   r   r      s        . . ."/ / /8    "   "G G G G Gx* G G G@ @ @- - -"0 0 00 0 0"0 0 0 0 0r   r   c                   F    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 ZdS )InitialisableProgramFNrN   __main__r   c                     d S r'   r6   )r   r7   s     r   __init__zInitialisableProgram.__init__   s    r   )r,   r-   r.   r=   r)   r>   rq   	tb_localsr<   r   defaultTestLoaderrr   ra   progNamer   r   r6   r   r   r   r      sX        DFIKIJ+JFHD    r   r   c                   &    e Zd ZdZdZdZd Zd ZdS )r/   Nr   c                 n    |t           _        t           j        rt           xj        dz  c_        t          d S )NrN   )r/   initArgs
raiseError	TypeError)r   kwargss     r   r   zFakeRunner.__init__   s8    $
  	!!Q&!!O	 	r   c                 (    |t           _        t          S r'   )r/   r   RESULTrl   s     r   r*   zFakeRunner.run   s    
r   )r,   r-   r.   r   r   r   r   r*   r6   r   r   r/   r/      sA        HDJ      r   r/   c                   v    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 ZddZd Zd Zd Zd Zd Zd Zd ZdS )TestCommandLineArgsc                     t                      | _        d | j        _        d t          _        d t          _        dt          _        d S )Nc                      d S r'   r6   r6   r   r   r8   z+TestCommandLineArgs.setUp.<locals>.<lambda>   s    4 r   r   )r   rB   createTestsr/   r   r   r   rG   s    r   setUpzTestCommandLineArgs.setUp   s8    +--#/< "

 !
r   c                    | j         }dD ];}d|_        |                    d |g           |                     |j        d           <dD ];}d|_        |                    d |g           |                     |j        d           <d S )N)z-qz--quietrN   r   )z-vz	--verboser;   )rB   r>   r2   r   )r   rB   opts      r   testVerbosityz!TestCommandLineArgs.testVerbosity   s    ," 	3 	3C !GtSk***W.2222$ 	3 	3C !GtSk***W.2222	3 	3r   c           	      R   | j         }dD ]\  }}t          ||d            |                    d g           |                     t	          ||          d           g }t          |||           |                    d g           |                     t	          ||          |           dg}t          |||           |                    d g           |                     t	          ||          |           d|d         z  }d|z  }||fD ]}t          ||d            |                    d |g           |                     t	          ||          d           t          ||d           t          j                    5 }	|                     t                    5 }
|                    d |g           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    |
j
        j        d           t          ||d           t          j                    5 }	|                     t                    5 }
|                    d |g           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   | 	                    |
j
        j        d           d S )	N))bufferr   )failfastr   )catch
catchbreakF*   z-%sr   z--%sT)r;   )rB   setattrr2   assertIsgetattrr   captured_stderrr   r   r   	exceptionr7   )r   rB   argattrfalsetrue	short_optlong_optr   stderrcms              r   testBufferCatchFailfastz+TestCommandLineArgs.testBufferCatchFailfast   s   ,/ "	: "	:IC GT4(((tf%%%MM''400%888EGT5)))tf%%%MM''400%8884DGT4(((tf%%%MM''400$777AI|H (* : :t,,,!!4+...ggt44d;;;u---,.. 3&%%j11357%%tSk2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3   !2D999t,,,,.. 3&%%j11357%%tSk2223 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3   !2D9999:'"	: "	:sl   =GF<	0G<G  GG GGG"I8=I!	I8!I%%I8(I%)I88I<?I<c                    	  G d dt           j                  }t          j        d d          }	 g t          j        d d <   |                      |            j        d           |                      |d          j        d           dgt          j        d d <   |                      |            j        d            |                      |d          j        d           |t          j        d d <   d S # |t          j        d d <   w xY w)Nc                       e Zd Zd Zd ZdS )/TestCommandLineArgs.testWarning.<locals>.FakeTPc                     d S r'   r6   r   r7   kws      r   r2   z9TestCommandLineArgs.testWarning.<locals>.FakeTP.parseArgs        r   c                     d S r'   r6   r   s      r   runTestsz8TestCommandLineArgs.testWarning.<locals>.FakeTP.runTests	  r   r   N)r,   r-   r.   r2   r   r6   r   r   FakeTPr     s"        22211111r   r   defaultignore)warnings	somevalue)r   r1   rt   warnoptionsr   r   )r   r   r   s      r   testWarningzTestCommandLineArgs.testWarning  s)   (	2 	2 	2 	2 	2X) 	2 	2 	2 oaaa(	-!#COAAAVVXX.	:::VVX666?JJJ"-COAAA VVXX.555VVX666?JJJ!,COAAACOAAA,,,,s   B3C5 5Dc           	      X   | j         }t          |_        d|_        d|_        d|_        d|_        |                                 |                     t          j	        dddddd           |                     t          j
        d           |                     |j        t                     d S )Nr>   r   r   r   F)r>   r   r   r   r   r   )rB   r/   r<   r>   r   r   r   r   r   r   r   r   r)   r   r   rB   s     r   testRunTestsRunnerClassz+TestCommandLineArgs.testRunTestsRunnerClass  s    ,''%!%,K<F:B=B<F	/H /H 	I 	I 	I
 	&111gnf-----r   c                 8   | j         }t                      |_        d t          _        |                                 |                     t          j                   |                     t          j        d           |                     |j	        t                     d S )Nr   )rB   r/   r<   r   r   assertIsNoner   r   r   r)   r   r   s     r   testRunTestsRunnerInstancez.TestCommandLineArgs.testRunTestsRunnerInstance,  s|    ,'\\"
 	*-...&111gnf-----r   c           	         | j         }t          |_        |                    d dg           |                     d|j                   |                                 |                     t          j        ddddd d           d S )Nz--localsTFrN   )r   r   r   r>   r   )rB   r/   r<   r2   r   r   r   r   r   s     r   test_localszTestCommandLineArgs.test_locals:  s    ,'4,---w0111,;@<@<=;?	/A /A 	B 	B 	B 	B 	Br   c                 d   | j         }dt          _        t          |_        d|_        d|_        d|_        d|_        |                                 | 	                    t          j
        i            | 	                    t          j        d           |                     |j        t                     d S )Nr;   r>   r   r   r   )rB   r/   r   r<   r>   r   r   r   r   r   r   r   r)   r   r   s     r   testRunTestsOldRunnerClassz.TestCommandLineArgs.testRunTestsOldRunnerClassG  s    , !"
''%! 	,b111&111gnf-----r   c                 *    t           j        d         j        fd}                     |           d _         fd}|_         j        }d|_        t          |_        |	                                  
                     j                   d S )Nzunittest.mainc                       _         d S r'   )installHandler)ra   originals   r   restorezBTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.restore^  s    $,F!!!r   Fc                      d _         d S r	   )	installedrG   s   r   fakeInstallHandlerzMTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.fakeInstallHandlerc  s    !DNNNr   T)rt   modulesr   r@   r   rB   r   r/   r<   r   r   )r   r   r   rB   ra   r   s   `   @@r   testCatchBreakInstallsHandlerz1TestCommandLineArgs.testCatchBreakInstallsHandler[  s    _-(	- 	- 	- 	- 	- 	-   	" 	" 	" 	" 	" 2,!''''''r   Tc                     fd}t           j        j        |t           j        _        fd}|                     |           d S )Nc                     | v S r'   r6   )r   re   s    r   isfilez1TestCommandLineArgs._patch_isfile.<locals>.isfilep  s    5= r   c                  *     t           j        _        d S r'   )r   r   r   )r   s   r   r   z2TestCommandLineArgs._patch_isfile.<locals>.restoret  s    %BGNNNr   )r   r   r   r@   )r   re   existsr   r   r   s    `   @r   _patch_isfilez!TestCommandLineArgs._patch_isfileo  s`    	! 	! 	! 	! 	!7>	& 	& 	& 	& 	&     r   c                     | j         }g d}|                     |           d |_        |                    |           g d}|                     |j        |           d S )N)prognamezfoo.pyzbar.Pyzbaz.PYwing.txtc                      d S r'   r6   r6   r   r   r8   z<TestCommandLineArgs.testParseArgsFileNames.<locals>.<lambda>      d r   )foobarbazr   rB   r   r   r2   r   rv   r   rB   ru   r   s       r   testParseArgsFileNamesz*TestCommandLineArgs.testParseArgsFileNamesy  sr    ,EEE4   *l$ 544*H55555r   c                     | j         }g d}|                     |           d |_        |                    |           ddg}|                     |j        |           d S )Nr   foo/bar/baz.pygreen\red.pyc                      d S r'   r6   r6   r   r   r8   z<TestCommandLineArgs.testParseArgsFilePaths.<locals>.<lambda>  r   r   foo.bar.baz	green.redr   r   s       r   testParseArgsFilePathsz*TestCommandLineArgs.testParseArgsFilePaths  so    ,>>>4   *l$!;/*H55555r   c                     | j         }g d}|                     g            d |_        |                    |           |                     |j        |dd                     d S )Nr   c                      d S r'   r6   r6   r   r   r8   zCTestCommandLineArgs.testParseArgsNonExistentFiles.<locals>.<lambda>  r   r   rN   r   r   rB   ru   s      r   testParseArgsNonExistentFilesz1TestCommandLineArgs.testParseArgsNonExistentFiles  sm    ,>>>2*l$*DH55555r   c                    t          j                    | j        }fd}d |d           |d          g}|                     |           d |_        |                    |           ddg}|                     |j        |           d S )Nc                 D    t           j                            |           S r'   )r   r   join)namecur_dirs    r   _joinzOTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>._join  s    7<<...r   r   r   r   c                      d S r'   r6   r6   r   r   r8   zRTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>.<lambda>  r   r   r   r  )r   getcwdrB   r   r   r2   r   rv   )r   rB   r  ru   r   r  s        @r   ,testParseArgsAbsolutePathsThatCanBeConvertedz@TestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted  s    )++,	/ 	/ 	/ 	/ 	/EE"233UU?5K5KL4   *l$!;/*H55555r   c                     | j         }g d}|                     |           d |_        |                    |           |                     |j        |dd                     d S )N)r   z/foo/bar/baz.pyz/green/red.pyc                      d S r'   r6   r6   r   r   r8   zUTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted.<locals>.<lambda>  r   r   rN   r   r  s      r   /testParseArgsAbsolutePathsThatCannotBeConvertedzCTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted  sm    ,???4   *l$*DH55555r   c                     | j         }g d}d |_        |                    |           |                     |j        g d           d S )N)r   -kr   r  r   r  *pat*c                      d S r'   r6   r6   r   r   r8   zDTestCommandLineArgs.testParseArgsSelectedTestNames.<locals>.<lambda>  r   r   )z*foo*z*bar*r  )rB   r   r2   r   testNamePatternsr  s      r   testParseArgsSelectedTestNamesz2TestCommandLineArgs.testParseArgsSelectedTestNames  sX    ,DDD*l$13N3N3NOOOOOr   c                 *   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                 N   t           j        dddg| z   }t          j        |t          j        t          j        t          j                            t                              }|5  |
                                \  }}d d d            n# 1 swxY w Y   |                                S )Nz-Ez-mr   )stdoutr   cwd)rt   
executable
subprocessPopenDEVNULLPIPEr   r   r   r   communicatedecode)r7   cmdp_r   s        r   run_unittestzMTestCommandLineArgs.testSelectedTestNamesFunctionalTest.<locals>.run_unittest  s    >4z:TAC !)*/rwW_G`G`b b bA , ,MMOO	6, , , , , , , , , , , , , , ,==??"s   $BBB_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*)r   )r   r'  r+  s      r   #testSelectedTestNamesFunctionalTestz7TestCommandLineArgs.testSelectedTestNamesFunctionalTest  sB   	# 	# 	# m\\1#%6%6777m\\42K%L%LMMMm\\2e2e2e%f%fgggm\\4a.%A%ABBBm\\4a.%A%ABBBm\\4q/%B%BCCCm\\49SUV2W%X%XYYYlLL$8RTU1V$W$WXXXXXr   N)T)r,   r-   r.   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r,  r6   r   r   r   r      s$       " " "3 3 3$: $: $:L- - -*. . .&. . .B B B. . .(( ( ((! ! ! !6 6 6	6 	6 	66 6 66 6 6	6 	6 	6$P P PY Y Y Y Yr   r   r   )ior   rt   r  r   r   r   unittest.testunittest.test.test_resultr   r   r   r1   r   r?   r   r/   requires_subprocessr   r,   r   r6   r   r   <module>r1     s{   				 				 



                4 4 4 4 4 4X0 X0 X0 X0 X0x( X0 X0 X0v    8/    
         QY QY QY QY QY(+ QY QY QYh zHMOOOOO r   