Ë ‚Ö¦i×.ãó€—dZddlZddlZddlZddlZddlmZmZddlm Z dZ dZ dZ d Z d „Zd „Zd „ZGd „de«ZeZy)zUnittest main programéNé)ÚloaderÚrunner)ÚinstallHandlerTéaExamples: %(prog)s test_module - run tests from test_module %(prog)s module.TestClass - run tests from module.TestClass %(prog)s module.Class.test_method - run specified test method %(prog)s path/to/test_file.py - run tests from test_file.py aFExamples: %(prog)s - run default set of tests %(prog)s MyTestSuite - run suite 'MyTestSuite' %(prog)s MyTestCase.testSomething - run MyTestCase.testSomething %(prog)s MyTestCase - run all 'test*' test methods in MyTestCase có,—tjj|«rô|j«j d«rÕtjj |«rttjj |tj««}tjj |«s|jtj«r|S|}tjj|«ddjdd«jdd«S|S)Nz.pyéýÿÿÿÚ\Ú.Ú/) ÚosÚpathÚisfileÚlowerÚendswithÚisabsÚrelpathÚgetcwdÚ startswithÚpardirÚnormpathÚreplace)ÚnameÚrel_paths ú&/usr/lib64/python3.12/unittest/main.pyÚ _convert_namers¹€ô  ‡w�w‡~�~�dÔ § ¡ £ × 5Ñ 5°eÔ <Ü �7‰7�=‰=˜Ô Ü—w‘w—‘ t¬R¯Y©Y«[Ó9ˆHÜ�w‰w�}‰}˜XÔ&¨(×*=Ñ*=¼b¿i¹iÔ*HØ� ؈Dô�w‰w×Ñ Ó% c rÐ*×2Ñ2°4¸Ó=×EÑEÀcÈ3ÓOÐOØ €Kócó>—|D�cgc] }t|«‘Œc}Scc}w©N)r)Únamesrs rÚ_convert_namesr!/s€Ù,1Ó 2©E DŒM˜$Õ ¨EÑ 2Ð2ùÒ 2s…có—d|vrd|z}|S)NÚ*z*%s*©)Úpatterns rÚ_convert_select_patternr&3s€Ø �'‰>ؘ7Ñ"ˆØ €Nrc ó°—eZdZdZdZdZdxZxZxZxZ xZ Z dZ dddde jddddddf dddœd„Zdd „Zd „Zd „Zdd „Zd „Zd„Zd„Zd„Zdd„Zd„Zy)Ú TestProgramzA command-line program that runs a set of tests; this is primarily for making test modules conveniently executable. NrÚ__main__TF)Ú tb_localsÚ durationsc ó>—t|t«rEt|«|_|j d«ddD]}t |j|«|_Œn||_|€t j}||_||_ | |_ ||_ | |_ | |_ | |_| €t jsd|_n| |_||_||_||_t(j*j-|d«|_|j1|«|j3«y)Nr rÚdefaultr)Ú isinstanceÚstrÚ __import__ÚmoduleÚsplitÚgetattrÚsysÚargvÚexitÚfailfastÚ catchbreakÚ verbosityÚbufferr*r+Ú warnoptionsÚwarningsÚ defaultTestÚ testRunnerÚ testLoaderr rÚbasenameÚprogNameÚ parseArgsÚrunTests)Úselfr1r=r5r>r?r6r9r7r8r:r<r*r+Úparts rÚ__init__zTestProgram.__init__Csñ€ô �fœcÔ "Ü$ VÓ,ˆDŒKØŸ ™  SÓ)¨!¨"Ó-�Ü% d§k¡k°4Ó8�• ñ.ð!ˆDŒKØ ˆ<Ü—8‘8ˆDàˆŒ Ø ˆŒ Ø$ˆŒØ"ˆŒØˆŒ Ø"ˆŒØ"ˆŒØ Ð ¤C§O¢Oð&ˆD�Mð%ˆDŒMØ&ˆÔØ$ˆŒØ$ˆŒÜŸ™×(Ñ(¨¨a©Ó1ˆŒ Ø �‰�tÔØ � ‰ �rcóÔ—tjdt«|r t|«|j€|j «|j «tjd«y)NzHTestProgram.usageExit() is deprecated and will be removed in Python 3.13é) r<ÚwarnÚDeprecationWarningÚprintÚ_discovery_parserÚ_initArgParsersÚ _print_helpr4r6)rDÚmsgs rÚ usageExitzTestProgram.usageExitksP€Ü� ‰ ð0Ü1Cô Eá Ü �#ŒJØ × !Ñ !Ð )Ø × Ñ Ô "Ø ×ÑÔÜ �‰�� rcóV—|j€\t|jj««ttd|j iz«|j j«yt|jj««ttd|j iz«y)NÚprog) r1rKÚ _main_parserÚ format_helpÚ MAIN_EXAMPLESrArLÚ print_helpÚMODULE_EXAMPLES)rDÚargsÚkwargss rrNzTestProgram._print_helpusx€Ø �;‰;Ð Ü �$×#Ñ#×/Ñ/Ó1Ô 2Ü ”- 6¨4¯=©=Ð"9Ñ9Ô :Ø × "Ñ "× -Ñ -Õ /ä �$×#Ñ#×/Ñ/Ó1Ô 2Ü ”/ V¨T¯]©]Ð$;Ñ;Õ Ø×"Ñ" 4¨¨ 8Ô,ØØ × Ñ × (Ñ (¨¨a¨b¨°4Ô 8Ø—:’:ð×"Ñ" 2Ô&Øà × Ñ × (Ñ (¨¨a¨b¨°4Ô 8à �:Š:Ü+¨D¯J©JÓ7ˆDŒNܘ:Ò%à"�• Ø × Ñ Ð %à!ˆD�NÜ ˜×(Ñ(¬#Ô .Ø"×.Ñ.Ð0ˆD�Nä! $×"2Ñ"2Ó3ˆDŒNØ ×ÑÕrcóÈ—|jr|j|j_|rM|€ |jn|«}|j|j|j|j «|_y|j€+|jj|j«|_y|jj|j|j«|_yr) ÚtestNamePatternsr?r[Ústartr%ÚtopÚtestr`ÚloadTestsFromModuler1ÚloadTestsFromNames)rDÚfrom_discoveryÚLoaderrs rrczTestProgram.createTests›s›€Ø × Ò Ø/3×/DÑ/DˆD�O‰OÔ ,Ù Ø(.¨�T—_’_¹F»HˆFØ'˜Ÿ™¨¯ © °D·L±LÀ$Ç(Á(ÓKˆD�IØ �^‰^Ð #ØŸ™×;Ñ;¸D¿K¹KÓHˆD�IàŸ™×:Ñ:¸4¿>¹>Ø;?¿;¹;óHˆD�Ircó|—|j«}|j|«|_|j|«|_yr)Ú_getParentArgParserÚ_getMainArgParserrSÚ_getDiscoveryArgParserrL)rDÚ parent_parsers rrMzTestProgram._initArgParsers§s6€Ø×0Ñ0Ó2ˆ Ø ×2Ñ2°=ÓAˆÔØ!%×!<Ñ!<¸]Ó!KˆÕrcó>—tjd¬«}|jdddddd¬ «|jd d ddd d ¬ «|jdddd¬«|jddtddd¬«|j€|jddddd¬«d|_|j €|jddddd¬«d|_|j €|jd d!d"dd#¬«d|_|j€!|jd$d%d&td'¬(«g|_|S))NF)Úadd_helpz-vz --verboser9Ú store_constrHzVerbose output)ÚdestÚactionÚconstÚhelpz-qz--quietrz Quiet outputz--localsr*Ú store_truez"Show local variables in tracebacks)rurvrxz --durationsr+ÚNz+Show the N slowest test cases (N=0 for all))ruÚtyper-Úmetavarrxz-fz --failfastr7zStop on first fail or errorz-cz--catchr8z'Catch Ctrl-C and display results so farz-bz--bufferr:z%Buffer stdout and stderr during testsz-kreÚappendz.Only run tests which match the given substring)rurvr{rx) ÚargparseÚArgumentParserÚ add_argumentÚintr7r8r:rer&)rDÚparsers rrnzTestProgram._getParentArgParser¬sr€Ü×(Ñ(°%Ô8ˆà×јD +°KØ#0¸Ø!1ð ô 3ð ×јD )°+Ø#0¸Ø!/ð ô 1ð ×јJ¨[Ø#/Ø!Eð ô Gð ×јM° Ä#Ø$(°#Ø!Nð ô Pð �=‰=Ð Ø × Ñ   l¸Ø'3Ø%Bð ô Dð"ˆDŒMØ �?‰?Ð "Ø × Ñ   i°lØ'3Ø%Nð ô Pð$ˆDŒOØ �;‰;Ð Ø × Ñ   j°xØ'3Ø%Lð ô Nð ˆDŒKØ × Ñ Ð (Ø × Ñ  Ð+=Ø'/Ô6MØ%Uð ô Wð%'ˆDÔ !àˆ rcó —tj|g¬«}|j|_|j|_|j ddd¬«|S)N©Úparentsr_r#z?a list of any number of test modules, classes and test methods.)Únargsrx)r~rrArRrNrVr€)rDÚparentr‚s rrozTestProgram._getMainArgParserÒsP€Ü×(Ñ(°&°Ô:ˆØ—m‘mˆŒ Ø ×,Ñ,ˆÔà×јG¨3ð"8ð ô 9ðˆ rcóX—tj|g¬«}d|jz|_d|_|j dddd¬«|j d d d d ¬«|j d ddd¬«dD]3}|j |dtj tj ¬«Œ5|S)Nr„z %s discoverzcFor test discovery all test modules must be importable from the top level directory of the project.z-sz--start-directoryrfz*Directory to start discovery ('.' default))rurxz-pz --patternr%z+Pattern to match tests ('test*.py' default)z-tz--top-level-directoryrgzrÚTextTestRunnerr.r{r9r7r:r<r*r+Ú TypeErrorÚrunrhÚresultr6ÚtestsRunr\Úskippedr4Ú_NO_TESTS_EXITCODEÚ wasSuccessful)rDr>s rrCzTestProgram.runTestsÿsa€Ø �?Š?Ü Ô Ø �?‰?Ð "Ü$×3Ñ3ˆDŒOÜ �d—o‘o¤tÔ ,ð /ð IØ!%§¡¸4¿>¹>Ø:>¿-¹-Ø8<¿ ¹ Ø:>¿-¹-Ø;?¿>¹>Ø;?¿>¹>ð "1ó"K�Jøð"Ÿ™ˆJØ —n‘n T§Y¡YÓ/ˆŒ Ø �9Š9Ø�{‰{×#Ñ# qÒ(¬S°·±×1DÑ1DÓ-EÈÒ-JÜ—‘Ô+Õ,Ø—‘×*Ñ*Ô,Ü—‘˜• ä—‘˜• ð øô!òIà!%§¡¸4¿>¹>Ø:>¿-¹-Ø8<¿ ¹ Ø:>¿-¹-ð"1ó"I“JðIûô ò /à!Ÿ_™_Ó.“ ð /ús,ÁAE<ÅCØ"ô &óPò=òó: HòLò $òL òó* =ó!rr()r™r4r~r r<ÚrrÚsignalsrÚ __unittestr•rUrWrr!r&Úobjectr(Úmainr$rrÚr sXðÙã ÛÛ ÛçÝ#à € ØÐð€ ð€òò 3òô g�&ôgðT�r