U :e:@sddlZddlZddlZddlZddlmZddlZddlZGdddejZ Gdddej Z e Z Gddde ZGd d d ejZed kredS) N)supportc@sheZdZddZddZGdddejZGdddejZ d d Z d d Z d dZ ddZ ddZdS)Test_TestProgramcsjt}gtjtjtjjd_fdd}||_ | d} j |j dS)NFcsd_|SNT)wasRun assertEqual)Z start_dirpatternZ expectedPathselfZtests?/usr/local/python38/lib/python3.8/unittest/test/test_program.py _find_testss zETest_TestProgram.test_discovery_from_dotted_path.._find_tests unittest.test)unittest TestLoaderospathabspathdirnametest__file__rr discover assertTruerZ_tests)r loaderr Zsuiter rr test_discovery_from_dotted_path s  z0Test_TestProgram.test_discovery_from_dotted_pathcstt}Gfdddt}|}tjjfdd}ddtj_||dd}|tj_||tj|d d d }||j||j|||jd dS) NcseZdZfddZdS)z/Test_TestProgram.testNoExit..FakeRunnercs ||_SNrr rresultr r run#sz3Test_TestProgram.testNoExit..FakeRunner.runN__name__ __module__ __qualname__rr rr r FakeRunner"sr$cs tj_dSr)r TestProgram parseArgsr ) oldParseArgsr r restoreParseArgs*sz5Test_TestProgram.testNoExit..restoreParseArgscWsdSrr )argsr r r ,z-Test_TestProgram.testNoExit..cSs tj`dSr)rr%rr r r r removeTest/sz/Test_TestProgram.testNoExit..removeTestF) testRunnerexit verbosity) objectrr%r& addCleanuprrrr0)r rr$runnerr(r,programr )r'rr testNoExits    zTest_TestProgram.testNoExitc@seZdZddZddZdS)zTest_TestProgram.FooBarcCsdSrr r r r r testPass;sz Test_TestProgram.FooBar.testPasscCsdSrr r6r r r testFail=sz Test_TestProgram.FooBar.testFailN)r!r"r#r7r8r r r r FooBar:sr9c@s eZdZdZddZddZdS)zTest_TestProgram.FooBarLoaderz3Test loader that returns a suite containing FooBar.cCs||tjgSrZ suiteClassZloadTestsFromTestCaserr9)r moduler r r loadTestsFromModuleBs z1Test_TestProgram.FooBarLoader.loadTestsFromModulecCs||tjgSrr:)r namesr;r r r loadTestsFromNamesFs z0Test_TestProgram.FooBarLoader.loadTestsFromNamesN)r!r"r#__doc__r<r>r r r r FooBarLoader@sr@cCsRGdddt}tj}dgt_|}tj|dd|d}|t_|d|jdS)Nc@seZdZddZdS)zATest_TestProgram.test_defaultTest_with_string..FakeRunnercSs ||_dSrrrr r r rLszETest_TestProgram.test_defaultTest_with_string..FakeRunner.runNr r r r r r$Ksr$faketestFr r.r/ defaultTest testLoader)r r1sysargvrr%r@r testNamesr r$Zold_argvr3r4r r r test_defaultTest_with_stringJsz-Test_TestProgram.test_defaultTest_with_stringcCsZGdddt}tj}dgt_|}tj|dddg|d}|t_|ddg|jdS)Nc@seZdZddZdS)zCTest_TestProgram.test_defaultTest_with_iterable..FakeRunnercSs ||_dSrrrr r r r[szGTest_TestProgram.test_defaultTest_with_iterable..FakeRunner.runNr r r r r r$Zsr$rAFr zunittest.test2rBrErIr r r test_defaultTest_with_iterableYs z/Test_TestProgram.test_defaultTest_with_iterablecCs8tjddgtjtd|d}|t|ddS)NFfoobarstream)r/rGr.rDr)rmainTextTestRunnerioStringIOr@rhasattrr r4r r r test_NonExitjs zTest_TestProgram.test_NonExitcCs.|jttjdgtjtdd|ddS)NrLrMT)rGr.r/rD assertRaises SystemExitrrOrPrQrRr@r6r r r test_ExitrszTest_TestProgram.test_ExitcCs,|jttjdgtjtd|ddS)NrLrM)rGr.rDrVr6r r r test_ExitAsDefault|sz#Test_TestProgram.test_ExitAsDefaultN)r!r"r#rr5rTestCaser9rr@rJrKrUrYrZr r r r r s  rc@s>eZdZdZdZdZdZdZdZe j Z dZ dZ dZddZdS)InitialisableProgramFN__main__rcGsdSrr )r r)r r r __init__szInitialisableProgram.__init__)r!r"r#r/rr0rC tb_localsr.rZdefaultTestLoaderrDr;ZprogNamerr_r r r r r\sr\c@s(eZdZdZdZdZddZddZdS)r$NrcKs"|t_tjrtjd8_tdS)Nr])r$initArgs raiseError TypeError)r kwargsr r r r_szFakeRunner.__init__cCs |t_tSr)r$rRESULTrr r r rszFakeRunner.run)r!r"r#rarrbr_rr r r r r$s r$c@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ d%ddZ ddZ ddZddZddZddZd d!Zd"d#Zd$S)&TestCommandLineArgscCs*t|_dd|j_dt_dt_dt_dS)NcSsdSrr r r r r r*r+z+TestCommandLineArgs.setUp..r)r\r4 createTestsr$rarrbr6r r r setUps  zTestCommandLineArgs.setUpcCsb|j}dD]&}d|_|d|g||jdq dD]&}d|_|d|g||jdq6dS)N)z-qz--quietr]r)z-vz --verboser-)r4r0r&r)r r4optr r r testVerbositysz!TestCommandLineArgs.testVerbosityc Cs|j}dD]\}}|dkr"ts"q t||d|dg|t||dg}t||||dg|t|||dg}t||||dg|t|||d|d}d|}||fD]}t||d|d|g|t||dt||dt*} |t } |d|gW5QRXW5QRX| | j j d t||dt*} |t } |d|gW5QRXW5QRX| | j j d qq dS) N))bufferrk)failfastrl)catch catchbreakrmF*z-%srz--%sT)r-) r4ZhasInstallHandlersetattrr&assertIsgetattrrZcaptured_stderrrWrXr exceptionr)) r r4argattrZfalsetrueZ short_optZlong_optristderrcmr r r testBufferCatchFailfastsF            "  "z+TestCommandLineArgs.testBufferCatchFailfastc CsGdddtj}tjdd}zjgtjdd<||jd||ddjddgtjdd<||jd||ddjdW5|tjdd<XdS)zTest the warnings argumentc@seZdZddZddZdS)z/TestCommandLineArgs.testWarning..FakeTPc_sdSrr r r)kwr r r r&r+z9TestCommandLineArgs.testWarning..FakeTP.parseArgsc_sdSrr rzr r r runTestsr+z8TestCommandLineArgs.testWarning..FakeTP.runTestsN)r!r"r#r&r|r r r r FakeTPsr}Ndefaultignore)warningsZ somevalue)rr%rF warnoptionsrr)r r}rr r r testWarningszTestCommandLineArgs.testWarningc Csf|j}t|_d|_d|_d|_d|_||tj dddddd|tj d| |j t dS)Nr0rlrkrF)r0rlrkr`rr)r4r$r.r0rlrkrr|rrarrqrrerTr r r testRunTestsRunnerClasss z+TestCommandLineArgs.testRunTestsRunnerClasscCsH|j}t|_dt_||tj|tjd||j t dS)Nr) r4r$r.rar|Z assertIsNonerrrqrrerTr r r testRunTestsRunnerInstance s z.TestCommandLineArgs.testRunTestsRunnerInstancec CsN|j}t|_|ddg|d|j||tjdddddddS)Nz--localsTFr])rkrlr`r0r)r4r$r.r&rr`r|rarTr r r test_localss zTestCommandLineArgs.test_localscCs`|j}dt_t|_d|_d|_d|_d|_|| tj i| tjd| |j t dS)Nr-r0rlrkr)r4r$rbr.r0rlrkrr|rrarqrrerTr r r testRunTestsOldRunnerClass&sz.TestCommandLineArgs.testRunTestsOldRunnerClasscsjtjdjfdd}|d_fdd}|_j}d|_t|_|  jdS)Nz unittest.maincs _dSr)installHandlerr )r;originalr r restore=szBTestCommandLineArgs.testCatchBreakInstallsHandler..restoreFcs d_dSr) installedr r6r r fakeInstallHandlerBszMTestCommandLineArgs.testCatchBreakInstallsHandler..fakeInstallHandlerT) rFmodulesrr2rr4rnr$r.r|r)r rrr4r )r;rr r testCatchBreakInstallsHandler:s   z1TestCommandLineArgs.testCatchBreakInstallsHandlerTcs6fdd}tjj|tj_fdd}||dS)Ncs|kSrr )r)r=r r isfileOsz1TestCommandLineArgs._patch_isfile..isfilecs tj_dSr)rrrr )rr r rSsz2TestCommandLineArgs._patch_isfile..restore)rrrr2)r r=existsrrr )r=rr _patch_isfileNs   z!TestCommandLineArgs._patch_isfilecCsP|j}dddddg}||dd|_||dd d dg}||j|dS) Nprognamezfoo.pyzbar.Pyzbaz.PYzwing.txtcSsdSrr r r r r r*^r+z.foobarZbazr4rrgr&rrHr r4rGexpectedr r r testParseArgsFileNamesXs    z*TestCommandLineArgs.testParseArgsFileNamescCsH|j}dddg}||dd|_||ddg}||j|dS)Nrfoo/bar/baz.py green\red.pycSsdSrr r r r r r*lr+z. foo.bar.baz green.redrrr r r testParseArgsFilePathsgs    z*TestCommandLineArgs.testParseArgsFilePathscCsH|j}dddg}|gdd|_||||j|dddS)NrrrcSsdSrr r r r r r*xr+zCTestCommandLineArgs.testParseArgsNonExistentFiles..r]rr r4rGr r r testParseArgsNonExistentFilesss     z1TestCommandLineArgs.testParseArgsNonExistentFilescsdt|j}fdd}d|d|dg}||dd|_||dd g}||j|dS) Ncstj|Sr)rrjoin)nameZcur_dirr r _joinszOTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted.._joinrrrcSsdSrr r r r r r*r+zRTestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConverted..rr)rgetcwdr4rrgr&rrH)r r4rrGrr rr ,testParseArgsAbsolutePathsThatCanBeConverted}s    z@TestCommandLineArgs.testParseArgsAbsolutePathsThatCanBeConvertedcCsH|j}dddg}||dd|_||||j|dddS)Nrz/foo/bar/baz.pyz /green/red.pycSsdSrr r r r r r*r+zUTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConverted..r]rrr r r /testParseArgsAbsolutePathsThatCannotBeConverteds     zCTestCommandLineArgs.testParseArgsAbsolutePathsThatCannotBeConvertedcCsD|j}dddddddg}dd|_||||jdd dgdS) Nr-krrz*pat*cSsdSrr r r r r r*r+zDTestCommandLineArgs.testParseArgsSelectedTestNames..z*foo*z*bar*)r4rgr&rZtestNamePatternsrr r r testParseArgsSelectedTestNamess   z2TestCommandLineArgs.testParseArgsSelectedTestNamesc Csdd}d}|d||g|d|dd|g|d|ddd ddg|d |dd |g|d|dd |g|d |dd|g|d|dd|g|d|dd|gdS)Nc SsNtjtjddg|tjtjtjt d}|| \}}W5QRX| S)Nz-mr)stdoutrwcwd) subprocessPopenrF executableDEVNULLPIPErrrr communicatedecode)r)p_rwr r r run_unittests zMTestCommandLineArgs.testSelectedTestNamesFunctionalTest..run_unittestZ_test_warningsz Ran 7 testsrZ TestWarningsrz-pz*_test*z Ran 2 testsftz Ran 3 testsz*tz*test_warnings.*Warning*z Ran 1 testz*test_warnings.*warning*)ZassertIn)r rrr r r #testSelectedTestNamesFunctionalTestsz7TestCommandLineArgs.testSelectedTestNamesFunctionalTestN)T)r!r"r#rhrjryrrrrrrrrrrrrrrr r r r rfs" (     rfr^)rQrrFrrrrZ unittest.testr[rr%r\r1rer$rfr!rOr r r r s z