
    dafF                     <   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&                          yy)    N)support)BufferedWriterc                       e Zd Zd Zd Z G d dej                        Z G d dej                        Z G d dej                        Z	d	 Z
d
 Zd Zd Zd Zd Zd Zy)Test_TestProgramc                     t        j                         } gt        j                  j	                  t        j                  j                  t        j                  j                              d _	         fd}||_
        |j                  d      } j                   j                          j                  |j                         y )NFc                 :    d_         j                  |        S NT)wasRunassertEqual)	start_dirpatternexpectedPathselftestss     :/root/Python-3.12.4/Lib/test/test_unittest/test_program.py_find_testszETest_TestProgram.test_discovery_from_dotted_path.<locals>._find_tests   s    DKY5L    test.test_unittest)unittest
TestLoaderospathabspathdirnametesttest_unittest__file__r
   r   discover
assertTruer   _tests)r   loaderr   suiter   r   s   `   @@r   test_discovery_from_dotted_pathz0Test_TestProgram.test_discovery_from_dotted_path   s    $$&wwrwwt7I7I7R7R'ST	 ) 45$u-r   c                    t               t               } G fddt               } |       }t        j                  j                  fd}d t        j                  _        | j	                  |       d }|t        j                  _        | j	                  |       t        j                  |dd      }| j                  |j                         | j                  |j
                  |       | j                  |j                  d       y )	Nc                       e Zd Z fdZy)/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   r0   c                  0     t         j                  _        y r(   )r   TestProgram	parseArgs)oldParseArgss   r   restoreParseArgsz5Test_TestProgram.testNoExit.<locals>.restoreParseArgs)   s    -9H  *r   c                       y r(    )argss    r   <lambda>z-Test_TestProgram.testNoExit.<locals>.<lambda>+       r   c                  $    t         j                  `y r(   )r   r2   r   r7   r   r   
removeTestz/Test_TestProgram.testNoExit.<locals>.removeTest.   s    $$)r   F   )
testRunnerexit	verbosity)	objectr   r2   r3   
addCleanupr   r   r*   r@   )	r   r   r0   runnerr5   r<   programr4   r*   s	          @@r   
testNoExitzTest_TestProgram.testNoExit   s    x	 	
 ++55	:);&()	*$(!
#&&&uPQR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y)	Test_TestProgram.FooBarc                      y r(   r7   r   s    r   testPassz Test_TestProgram.FooBar.testPass:   s    r   c                     t         r(   AssertionErrorrI   s    r   testFailz Test_TestProgram.FooBar.testFail<   s      r   c                     ddz   y )N   r   r7   rI   s    r   	testErrorz!Test_TestProgram.FooBar.testError>   s	    aCr   skippingc                     t         r(   rL   rI   s    r   testSkippedz#Test_TestProgram.FooBar.testSkipped@         r   c                     t         r(   rL   rI   s    r   testExpectedFailurez+Test_TestProgram.FooBar.testExpectedFailureC   rU   r   c                      y r(   r7   rI   s    r   testUnexpectedSuccessz-Test_TestProgram.FooBar.testUnexpectedSuccessF   s    r   N)r-   r.   r/   rJ   rN   rQ   r   skiprT   expectedFailurerW   rY   r7   r   r   FooBarrG   9   s^    		!		z	"	! 
#	!		!	!	! 
"	!		!	!	 
"	r   r\   c                       e Zd Zy)Test_TestProgram.EmptyN)r-   r.   r/   r7   r   r   Emptyr^   J   s    r   r_   c                   "    e Zd ZdZd Zd Zd Zy)Test_TestProgram.TestLoaderzBTest loader that returns a suite containing the supplied testcase.c                     || _         y r(   )testcase)r   rc   s     r   __init__z$Test_TestProgram.TestLoader.__init__P   s	    $DMr   c                 X    | j                  | j                  | j                        g      S r(   
suiteClassloadTestsFromTestCaserc   )r   modules     r   loadTestsFromModulez/Test_TestProgram.TestLoader.loadTestsFromModuleS   (    ??++DMM:;= =r   c                 X    | j                  | j                  | j                        g      S r(   rf   )r   namesri   s      r   loadTestsFromNamesz.Test_TestProgram.TestLoader.loadTestsFromNamesW   rk   r   N)r-   r.   r/   __doc__rd   rj   rn   r7   r   r   r   ra   M   s    P	%	=	=r   r   c                     G d dt               }t        j                  }dgt        _         |       }t        j                  |dd| j                  | j                              }|t        _        | j                  d|j                         y )Nc                       e Zd Zd Zy)ATest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunnerc                     || _         yr	   r)   r   r   s     r   r+   zETest_TestProgram.test_defaultTest_with_string.<locals>.FakeRunner.run]        	r   Nr,   r7   r   r   r0   rr   \       r   r0   faketestFr   r>   r?   defaultTest
testLoader)r   	rA   sysargvr   r2   r   r\   r   	testNamesr   r0   old_argvrC   rD   s        r   test_defaultTest_with_stringz-Test_TestProgram.test_defaultTest_with_string[   sq    	 	
 88<&&&u3G26//$++2NP 0'2C2CDr   c                 "    G d dt               }t        j                  }dgt        _         |       }t        j                  |dddg| j                  | j                              }|t        _        | j                  ddg|j                         y )Nc                       e Zd Zd Zy)CTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunnerc                     || _         yr	   r)   rt   s     r   r+   zGTest_TestProgram.test_defaultTest_with_iterable.<locals>.FakeRunner.runl   ru   r   Nr,   r7   r   r   r0   r   k   rv   r   r0   rw   Fr   ztest.test_unittest2rx   r{   r   s        r   test_defaultTest_with_iterablez/Test_TestProgram.test_defaultTest_with_iterablej   s    	 	
 88<&&E-/DEt{{35 .0EF!++	-r   c                    t               }t        j                  ddgt        j                  |      | j	                  | j
                              }| j                  t        |d             |j                         }| j                  d|       | j                  d|       | j                  d|       d	}| j                  |j                  |             y )
NFfoobarstream)r?   r}   r>   rz   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TextTestRunnerr   r\   r   hasattrgetvalueassertInendswith)r   r   rD   outexpecteds        r   test_NonExitzTest_TestProgram.test_NonExit{   s    !--U&.Z+3+B+B&+Q+/??4;;+GI 	23oo)3/+S1DcJEX./r   c           	         t               }| j                  t              5 }t        j                  dgt        j
                  |      d| j                  | j                               d d d        | j                  j                  j                  d       |j                         }| j                  d|       | j                  d|       | j                  d|       d	}| j                  |j                  |             y # 1 sw Y   xY w)
Nr   r   T)r}   r>   r?   rz   rP   r   r   r   r   )r   assertRaises
SystemExitr   r   r   r   r\   r   	exceptioncoder   r   r   r   r   r   cmr   r   s        r   	test_ExitzTest_TestProgram.test_Exit   s    !z* 	9bMMZ#22&A??4;;7	9	9 	**A.oo)3/+S1DcJEX./	9 	9s   AC??Dc                    t               }| j                  t              5  t        j                  dgt        j
                  |      | j                  | j                               d d d        |j                         }| j                  d|       | j                  d|       | j                  d|       d}| j                  |j                  |             y # 1 sw Y   rxY w)Nr   r   r}   r>   rz   r   r   r   r   )r   r   r   r   r   r   r   r\   r   r   r   r   )r   r   r   r   s       r   test_ExitAsDefaultz#Test_TestProgram.test_ExitAsDefault   s    !z* 	9MMZ#22&A??4;;79	9
 oo)3/+S1DcJEX./	9 	9s   ACC!c                    t               }| j                  t              5 }t        j                  g dt        j
                  |      | j                  | j                               d d d        | j                  j                  j                  d       |j                         }d}| j                  |j                  |             y # 1 sw Y   bxY w)N)r   -krT   r   r   r   z

OK (skipped=1)
)r   r   r   r   r   r   r   r\   r   r   r   r   r   r   r   s        r   test_ExitSkippedSuitez&Test_TestProgram.test_ExitSkippedSuite   s    !z* 	9bMM4#22&A??4;;79	9
 	**A.oo)X./	9 	9s   AC		Cc                    t               }| j                  t              5 }t        j                  dgt        j
                  |      | j                  | j                               d d d        | j                  j                  j                  d       |j                         }| j                  d|       y # 1 sw Y   RxY w)Nemptyr   r      z
NO TESTS RAN
)r   r   r   r   r   r   r   r_   r   r   r   r   r   )r   r   r   r   s       r   test_ExitEmptySuitez$Test_TestProgram.test_ExitEmptySuite   s    !z* 	8bMMY#22&A??4::68	8
 	**A.oo(#.	8 	8s   AB88CN)r-   r.   r/   r#   rE   r   TestCaser\   r_   r   r   r   r   r   r   r   r   r7   r   r   r   r   
   sf    ."/8"" "!! =X(( =E-"00"0
0	/r   r   c                   N    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y)InitialisableProgramFNrP   __main__r   c                      y r(   r7   )r   r8   s     r   rd   zInitialisableProgram.__init__   s    r   )r-   r.   r/   r?   r*   r@   ry   	tb_localsr>   r   defaultTestLoaderrz   ri   progNamer   rd   r7   r   r   r   r      s?    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y)r0   Nr   c                 x    |t         _        t         j                  rt         xj                  dz  c_        t        y )NrP   )r0   initArgs
raiseError	TypeError)r   kwargss     r   rd   zFakeRunner.__init__   s.    $
  !!Q&!O !r   c                 $    |t         _        t        S r(   )r0   r   RESULTrt   s     r   r+   zFakeRunner.run   s    
r   )r-   r.   r/   r   r   r   rd   r+   r7   r   r   r0   r0      s    HDJr   r0   c                   t    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y)TestCommandLineArgsc                     t               | _        d | j                  _        d t        _        d t        _        dt        _        y )Nc                       y r(   r7   r7   r   r   r9   z+TestCommandLineArgs.setUp.<locals>.<lambda>   r:   r   r   )r   rD   createTestsr0   r   r   r   rI   s    r   setUpzTestCommandLineArgs.setUp   s/    +-#/ "

 !
r   c                    | j                   }dD ]8  }d|_        |j                  d |g       | j                  |j                  d       : dD ]8  }d|_        |j                  d |g       | j                  |j                  d       : y )N)z-qz--quietrP   r   )z-vz	--verboser=   )rD   r@   r3   r   )r   rD   opts      r   testVerbosityz!TestCommandLineArgs.testVerbosity   s    ,," 	3C !GtSk*W..2	3
 % 	3C !GtSk*W..2	3r   c           	         | j                   }dD ]  \  }}t        ||d        |j                  d g       | j                  t	        ||      d       g }t        |||       |j                  d g       | j                  t	        ||      |       dg}t        |||       |j                  d g       | j                  t	        ||      |       d|d   z  }d|z  }||fD ]A  }t        ||d        |j                  d |g       | j                  t	        ||      d       t        ||d       t        j                         5 }	| j                  t              5 }
|j                  d |g       d d d        d d d        | j                  
j                  j                  d       t        ||d       t        j                         5 }	| j                  t              5 }
|j                  d |g       d d d        d d d        | j                  |
j                  j                  d       D  y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   VxY w# 1 sw Y   ZxY w)	N))bufferr   )failfastr   )catch
catchbreakF*   z-%sr   z--%sT)r=   )rD   setattrr3   assertIsgetattrr   captured_stderrr   r   r   r   r8   )r   rD   argattrfalsetrue	short_optlong_optr   stderrr   s              r   testBufferCatchFailfastz+TestCommandLineArgs.testBufferCatchFailfast   s$   ,,/ "	:IC GT4(tf%MM''40%8EGT5)tf%MM''40%84DGT4(tf%MM''40$7AI|H (* :t,!!4+.ggt4d;u-,,. 3&%%j1357%%tSk23 3   !2!2D9t,,,. 3&%%j1357%%tSk23 3   !2!2D9:'"	:23 3 3 33 3 3 3sH   >H2H&	(H2?I
H>	)I
&H/+H22H;>II

Ic                     G d dt         j                        }t        j                  dd }	 g t        j                  dd | j	                   |       j
                  d       | j	                   |d      j
                  d       dgt        j                  dd | j	                   |       j
                  d       | j	                   |d      j
                  d       |t        j                  dd y# |t        j                  dd w xY w)zTest the warnings argumentc                       e Zd Zd Zd Zy)/TestCommandLineArgs.testWarning.<locals>.FakeTPc                      y r(   r7   r   r8   kws      r   r3   z9TestCommandLineArgs.testWarning.<locals>.FakeTP.parseArgs#  s    dr   c                      y r(   r7   r   s      r   runTestsz8TestCommandLineArgs.testWarning.<locals>.FakeTP.runTests$  s    Tr   N)r-   r.   r/   r3   r   r7   r   r   FakeTPr   "  s    21r   r   Ndefaultignore)warnings	somevalue)r   r2   r|   warnoptionsr   r   )r   r   r   s      r   testWarningzTestCommandLineArgs.testWarning  s    	2X)) 	2 ooa(	-!#COOAVX..	:VX6??J"-COOA VX..5VX6??J!,COOACOOAs   B/C1 1Dc           
      f   | j                   }t        |_        d|_        d|_        d|_        d|_        d|_        |j                          | j                  t        j                  ddddddd       | j                  t        j                  d       | j                  |j                  t               y )	Nr@   r   r   r   5F)r@   r   r   r   r   	durationsr   )rD   r0   r>   r@   r   r   r   r   r   r   r   r   r   r*   r   r   rD   s     r   testRunTestsRunnerClassz+TestCommandLineArgs.testRunTestsRunnerClass4  s    ,,''%!%,,K<F:B=B<F=@/B 	C 	&1gnnf-r   c                 .   | j                   }t               |_        d t        _        |j	                          | j                  t        j                         | j                  t        j                  d       | j                  |j                  t               y )Nr   )rD   r0   r>   r   r   assertIsNoner   r   r   r*   r   r   s     r   testRunTestsRunnerInstancez.TestCommandLineArgs.testRunTestsRunnerInstanceI  se    ,,'\"
 	*--.&1gnnf-r   c           
          | j                   }t        |_        |j                  d dg       | j	                  d|j
                         |j                          | j	                  t        j                  ddddd d d       y )Nz--localsTFrP   )r   r   r   r@   r   r   )rD   r0   r>   r3   r   r   r   r   r   s     r   test_localszTestCommandLineArgs.test_localsW  sv    ,,'4,-w001,,;@<@<=;?<@/B 	Cr   c                 n   | j                   }dt        _        t        |_        d|_        d|_        d|_        d|_        d|_        |j                          | j                  t        j                  i        | j                  t        j                  d       | j                  |j                  t               y )Nr=   r@   r   r   r   0)rD   r0   r   r>   r@   r   r   r   r   r   r   r   r   r*   r   r   s     r   testRunTestsOldRunnerClassz.TestCommandLineArgs.testRunTestsOldRunnerClasse  s    ,, !"
''%! 	,,b1&1gnnf-r   c                 <    t         j                  d   j                  fd} j                  |       d _         fd}|_         j
                  }d|_        d |_        t        |_	        |j                           j                   j                         y )Nzunittest.mainc                       _         y r(   )installHandler)ri   originals   r   restorezBTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.restore}  s    $,F!r   Fc                      d _         y r	   )	installedrI   s   r   fakeInstallHandlerzMTestCommandLineArgs.testCatchBreakInstallsHandler.<locals>.fakeInstallHandler  s
    !DNr   T)r|   modulesr   rB   r   rD   r   r   r0   r>   r   r   )r   r   r   rD   ri   r   s   `   @@r   testCatchBreakInstallsHandlerz1TestCommandLineArgs.testCatchBreakInstallsHandlerz  s~    _-((	- 	" 2,,! ''r   c                     fd}t         j                  j                  |t         j                  _        fd}| j                  |       y )Nc                     | v S r(   r7   )r   rm   s    r   isfilez1TestCommandLineArgs._patch_isfile.<locals>.isfile  s    5= r   c                  0     t         j                  _        y r(   )r   r   r   )r   s   r   r   z2TestCommandLineArgs._patch_isfile.<locals>.restore  s    %BGGNr   )r   r   r   rB   )r   rm   existsr   r   r   s    `   @r   _patch_isfilez!TestCommandLineArgs._patch_isfile  s1    	!77>>	& r   c                     | j                   }g d}| j                  |       d |_        |j                  |       g d}| j	                  |j
                  |       y )N)prognamezfoo.pyzbar.Pyzbaz.PYwing.txtc                       y r(   r7   r7   r   r   r9   z<TestCommandLineArgs.testParseArgsFileNames.<locals>.<lambda>  r:   r   )foobarbazr  rD   r   r   r3   r   r~   r   rD   r}   r   s       r   testParseArgsFileNamesz*TestCommandLineArgs.testParseArgsFileNames  sQ    ,,E4 *$ 5**H5r   c                     | j                   }g d}| j                  |       d |_        |j                  |       ddg}| j	                  |j
                  |       y )Nr  foo/bar/baz.pygreen\red.pyc                       y r(   r7   r7   r   r   r9   z<TestCommandLineArgs.testParseArgsFilePaths.<locals>.<lambda>  r:   r   foo.bar.baz	green.redr  r	  s       r   testParseArgsFilePathsz*TestCommandLineArgs.testParseArgsFilePaths  sT    ,,>4 *$!;/**H5r   c                     | j                   }g d}| j                  g        d |_        |j                  |       | j	                  |j
                  |dd         y )Nr  c                       y r(   r7   r7   r   r   r9   zCTestCommandLineArgs.testParseArgsNonExistentFiles.<locals>.<lambda>  r:   r   rP   r  r   rD   r}   s      r   testParseArgsNonExistentFilesz1TestCommandLineArgs.testParseArgsNonExistentFiles  sP    ,,>2*$**DH5r   c                    t        j                         | j                  }fd}d |d       |d      g}| j                  |       d |_        |j                  |       ddg}| j                  |j                  |       y )Nc                 D    t         j                  j                  |       S r(   )r   r   join)namecur_dirs    r   _joinzOTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>._join  s    77<<..r   r  r  r  c                       y r(   r7   r7   r   r   r9   zRTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.<locals>.<lambda>  r:   r   r  r  )r   getcwdrD   r   r   r3   r   r~   )r   rD   r  r}   r   r  s        @r   ,testParseArgsAbsolutePathsThatCanBeConvertedz@TestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted  sw    ))+,,	/E"23U?5KL4 *$!;/**H5r   c                     | j                   }g d}| j                  |       d |_        |j                  |       | j	                  |j
                  |dd         y )N)r  z/foo/bar/baz.pyz/green/red.pyc                       y r(   r7   r7   r   r   r9   zUTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted.<locals>.<lambda>  r:   r   rP   r  r  s      r   /testParseArgsAbsolutePathsThatCannotBeConvertedzCTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted  sP    ,,?4 *$**DH5r   c                     | j                   }g d}d |_        |j                  |       | j                  |j                  g d       y )N)r  r   r  r   r  r   *pat*c                       y r(   r7   r7   r   r   r9   zDTestCommandLineArgs.testParseArgsSelectedTestNames.<locals>.<lambda>  r:   r   )z*foo*z*bar*r$  )rD   r   r3   r   testNamePatternsr  s      r   testParseArgsSelectedTestNamesz2TestCommandLineArgs.testParseArgsSelectedTestNames  s=    ,,D*$113NOr   c                    d }d}| j                  d ||g             | j                  d |dd|g             | j                  d |g d             | j                  d |dd|g             | j                  d |dd	|g             | j                  d
 |dd|g             | j                  d |dd|g             | j                  d |dd|g             y )Nc                 n   t         j                  dddg| z   }t        j                  |t        j                  t        j
                  t        j                  j                  t                    }|5  |j                         \  }}d d d        |j                         S # 1 sw Y   j                         S xY w)Nz-Ez-mr   )stdoutr   cwd)r|   
executable
subprocessPopenDEVNULLPIPEr   r   r   r   communicatedecode)r8   cmdp_r   s        r   run_unittestzMTestCommandLineArgs.testSelectedTestNamesFunctionalTest.<locals>.run_unittest  s    >>4z:TAC  !))*//rwwW_G`bA ,MMO	6,==?",==?"s   0BB4_test_warningszRan 5 testsr   TestWarnings)r   z-pz*_test*r   r8  zRan 1 test ftzRan 2 testsz*tz*test_warnings.*Warning*z*test_warnings.*warning*)r   )r   r6  r:  s      r   #testSelectedTestNamesFunctionalTestz7TestCommandLineArgs.testSelectedTestNamesFunctionalTest  s    	# m\1#%67m\42K%LMm\2e%fgm\4a.%ABm\4a.%ABm\4q/%BCm\49SUV2W%XYm\49SUV2W%XYr   N)T)r-   r.   r/   r   r   r   r   r   r   r   r   r   r   r
  r  r  r  r"  r'  r;  r7   r   r   r   r      s[    "3$:L-*.*.C.*(*!6	666	6$PZr   r   r   )r   r|   r-  r   r   r   test.test_unittesttest.test_unittest.test_resultr   r   r   r2   r   rA   r   r0   requires_subprocessr   r-   r   r7   r   r   <module>r?     s    	 
     9u/x(( u/p8//  
   VZ(++ VZ VZr zHMMO r   