a 5êdgµÑã@s&ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddl Z ddlmZddlmZejejkZeedƒZej d¡r´dZndZGd d „d e jƒZGd d „d e jƒZGd d„deƒZGdd„deƒZGdd„deƒZGdd„deƒZ Gdd„deƒZ!ej"dd„ƒZ#dd„Z$Gdd„dƒZ%Gdd„de%eƒZ&Gdd „d eƒZ'Gd!d"„d"eƒZ(Gd#d$„d$eƒZ)Gd%d&„d&e%eƒZ*Gd'd(„d(eƒZ+Gd)d*„d*eƒZ,Gd+d,„d,eƒZ-ej.ej/uròGd-d.„d.eƒZ0Gd/d0„d0ƒZ1Gd1d2„d2eƒZ2e3d3kr"e  4¡dS)4éN)Úmock)Úsupport)Ú script_helperÚspawnlZopenbsdé0édc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestLowLevelInternalscCs:| tt d¡¡| tt d¡¡| tt d¡¡dS©NÚó)ÚassertIsÚstrÚtempfileÚ_infer_return_typeÚbytes©Úself©rú./usr/local/lib/python3.9/test/test_tempfile.pyÚtest_infer_return_type_singles$sz4TestLowLevelInternals.test_infer_return_type_singlescCs˜| tt dd¡¡| tt dd¡¡| t¡t dd¡Wdƒn1sT0Y| t¡t dd¡Wdƒn1sŠ0YdSr ©r r rrrÚ assertRaisesÚ TypeErrorrrrrÚ test_infer_return_type_multiples)s  * z6TestLowLevelInternals.test_infer_return_type_multiplescCsØ| tt dd¡¡| tt dd¡¡| tt dd¡¡| tt dd¡¡| tt dd¡¡| t¡t ddd¡Wdƒn1s’0Y| t¡t ddd¡Wdƒn1sÊ0YdSr rrrrrÚ)test_infer_return_type_multiples_and_none1s , z?TestLowLevelInternals.test_infer_return_type_multiples_and_nonecCs| tt t d¡¡¡dS)Nú/)r r rrÚpathlibÚPathrrrrÚtest_infer_return_type_pathlib<sz4TestLowLevelInternals.test_infer_return_type_pathlibN)Ú__name__Ú __module__Ú __qualname__rrrrrrrrr#s rc@s8eZdZe d¡Ze d¡Zdd„Zdd„Zdd„Z d S) Ú BaseTestCasez^[a-z0-9_-]{8}$s^[a-z0-9_-]{8}$cCs*t ¡|_|j ¡tjdtdtddS)NÚignoreÚmktemp)ÚcategoryÚmessageÚmodule)rÚcheck_warningsÚ_warnings_managerÚ __enter__ÚwarningsÚfilterwarningsÚRuntimeWarningrrrrrÚsetUpGs   ÿzBaseTestCase.setUpcCs|j ddd¡dS©N)r)Ú__exit__rrrrÚtearDownMszBaseTestCase.tearDownc Csˆtj |¡\}}|dt|ƒ…}|t|ƒt|ƒd…}|durn| t|ƒt|ƒtusbt|tjƒrftnt d¡|dur˜| t|ƒt|ƒturtnt d¡|durÂ| t|ƒt|ƒturºtnt d¡|||fdkrâ| t|ƒtd¡|  tj  |¡tj  |¡d||f¡|  ||d||f¡|  ||d||f¡|t|ƒt|ƒt|ƒ…}t|tƒrb|j n|j } | |  |¡d|| jf¡dS)Nzunexpected return type)NNNzdefault return type must be strzfile %r not in directory %rzfile %r does not begin with %rzfile %r does not end with %rz$random characters %r do not match %r)ÚosÚpathÚsplitÚlenr Útyper Ú isinstanceÚPathLikerÚ assertEqualÚabspathÚ str_checkÚb_checkÚ assertTrueÚmatchÚpattern) rÚnameÚdirÚpreÚsufÚndirÚnbaseZnpreZnsufÚcheckrrrÚ nameCheckPsN ÿ ÿûÿÿ ÿ ÿ ÿ ÿÿzBaseTestCase.nameCheckN) rr r!ÚreÚcompiler;r<r.r1rGrrrrr"Bs   r"c@seZdZdd„ZdS)Ú TestExportscCsptj}dddddddddddddddœ}g}|D]"}|ddkr0||vr0| |¡q0| t|ƒdkd|¡dS)Né)ÚNamedTemporaryFileÚ TemporaryFileÚmkstempÚmkdtempr$ÚTMP_MAXÚ gettempprefixÚgettempprefixbÚ gettempdirÚ gettempdirbÚtempdirÚtemplateÚSpooledTemporaryFileÚTemporaryDirectoryrÚ_zunexpected keys: %s)rÚ__dict__Úappendr=r5)rÚdictÚexpectedZunexpÚkeyrrrÚ test_exportsvs.ò ÿzTestExports.test_exportsN)rr r!r_rrrrrJusrJcsNeZdZ‡fdd„Zdd„Zdd„Zdd„Ze e e d ƒd ¡d d „ƒZ ‡Z S) ÚTestRandomNameSequencecst ¡|_tƒ ¡dSr/)rÚ_RandomNameSequenceÚrÚsuperr.r©Ú __class__rrr.–s zTestRandomNameSequence.setUpcCst|jƒ}| |ddd¡dS©Nr )ÚnextrbrG)rÚsrrrÚtest_get_six_char_stršs z,TestRandomNameSequence.test_get_six_char_strcCsHi}|j}ttƒD]0}t|ƒ}| |ddd¡| ||¡d||<qdS)Nr rK)rbÚrangeÚ TEST_FILESrgrGÚ assertNotIn)rr\rbÚirhrrrÚ test_manyŸs  z TestRandomNameSequence.test_manycCs,d}|j}|D]}|d7}|dkrq(qdS)NrrKé)rb)rrmrbrhrrrÚ supports_iterªs z$TestRandomNameSequence.supports_iterÚforkz!os.fork is required for this testc CsÖt ¡\}}d}zŒt ¡}|sTt |¡t |t|jƒ d¡¡t |¡t d¡t|jƒ}t  |t |ƒ¡  d¡}W|rˆt j |ddt |¡t |¡n(|r°t j |ddt |¡t |¡0| ||¡dS)NÚasciir)Úexitcode)r2ÚpiperqÚcloseÚwritergrbÚencodeÚ_exitÚreadr5ÚdecoderZ wait_processÚassertNotEqual)rZread_fdZwrite_fdÚpidZ parent_valueZ child_valuerrrÚtest_process_awareness´s(       ü  z-TestRandomNameSequence.test_process_awareness) rr r!r.rirnrpÚunittestÚ skipUnlessÚhasattrr2r}Ú __classcell__rrrdrr`“s   ÿr`c@seZdZdd„Zdd„ZdS)ÚTestCandidateTempdirListcCs4t ¡}| t|ƒdk¡|D]}| |t¡qdS©Nr)rÚ_candidate_tempdir_listÚ assertFalser5ÚassertIsInstancer )rÚcandÚcrrrÚtest_nonempty_listÖsz+TestCandidateTempdirList.test_nonempty_listc Csºt ¡ž}dD]"}t |¡}|stj |¡||<qt ¡}dD]"}t |¡}|sTt‚|  ||¡q>z t  ¡}Wnt t fyŠtj }Yn0|  ||¡Wdƒn1s¬0YdS)N)ÚTMPDIRÚTEMPÚTMP)rÚEnvironmentVarGuardr2Úgetenvr3r:rr„Ú ValueErrorÚassertInÚgetcwdÚAttributeErrorÚOSErrorÚcurdir)rÚenvÚenvnameÚdirnamer‡rrrÚtest_wanted_dirsßs     z)TestCandidateTempdirList.test_wanted_dirsN)rr r!r‰r˜rrrrr‚Ós r‚c@seZdZdd„ZdS)ÚTestGetDefaultTempdirc s†t ¡f‰‡fdd„}t td|¡(t ¡| t ˆ¡g¡dd„‰t tdˆ¡T|  t ¡t ¡Wdƒn1s„0Y| t ˆ¡g¡Wdƒn1s´0Y‡‡fdd„}t td|¡V‰|  t ¡t ¡Wdƒn1s0Y| t ˆ¡g¡Wdƒn1s80YWdƒn1sX0YWdƒn1sx0YdS) NcsˆgSr/rr)Úour_temp_directoryrrÚour_candidate_listszKTestGetDefaultTempdir.test_no_files_left_behind..our_candidate_listr„c_s tƒ‚dSr/)r“)ÚargsÚkwargsrrrÚ raise_OSError szFTestGetDefaultTempdir.test_no_files_left_behind..raise_OSErrorÚopencsˆ|i|¤Ž}ˆ|_|Sr/)rv)rœrÚfp)Ú orig_openržrrÚ bad_writerszCTestGetDefaultTempdir.test_no_files_left_behind..bad_writer) rrXrÚ swap_attrÚ_get_default_tempdirr9r2ÚlistdirÚiorÚFileNotFoundError)rr›r¢r)r¡ršržrÚtest_no_files_left_behinds"  ÿ &0 (z/TestGetDefaultTempdir.test_no_files_left_behindN)rr r!r¨rrrrr™ýsr™c@seZdZdd„Zdd„ZdS)ÚTestGetCandidateNamescCst ¡}| |tj¡dSr/)rÚ_get_candidate_namesr†ra)rÚobjrrrÚ test_retval%sz!TestGetCandidateNames.test_retvalcCs"t ¡}t ¡}| ||u¡dSr/)rrªr=)rÚaÚbrrrÚtest_same_thing*sz%TestGetCandidateNames.test_same_thingN)rr r!r¬r¯rrrrr©"sr©c cs\t ¡}zBt td|¡dVWdƒn1s40YWt |¡n t |¡0dS)NrU)rrOrr£Úrmtree©rArrrÚ_inside_empty_temp_dir2s &r²cst td‡fdd„¡S)NrªcstˆƒSr/)Úiterr©ÚnamesrrÚ?r z'_mock_candidate_names..)rr£rr´rr´rÚ_mock_candidate_names<s þr·c@s$eZdZdd„Zdd„Zdd„ZdS)ÚTestBadTempdirc CsætƒÌt tj¡j}}|tjtjBtjBM}t  tj|¡zrt  tjtj ¡r\|  d¡|  t¡| ¡Wdƒn1s„0Y| t tj¡g¡Wt  tj|¡nt  tj|¡0Wdƒn1sØ0YdS)Nz!can't set the directory read-only)r²r2ÚstatrrUÚst_modeÚS_IWUSRÚS_IWGRPÚS_IWOTHÚchmodÚaccessÚW_OKZskipTestrÚPermissionErrorÚ make_tempr9r¥)rZoldmodeÚmoderrrÚtest_read_only_directoryDs  &z'TestBadTempdir.test_read_only_directoryc Csštƒ€tj tjd¡}t td|¡B| t ¡|  ¡Wdƒn1sP0YWdƒn1sn0YWdƒn1sŒ0YdS)NÚ nonexistentrU) r²r2r3ÚjoinrrUrr£rr§r©rrUrrrÚtest_nonexisting_directoryRs  z)TestBadTempdir.test_nonexisting_directoryc Cs¬tƒ’tj tjd¡}t|dƒ ¡t  td|¡F|  t t f¡|  ¡Wdƒn1sb0YWdƒn1s€0YWdƒn1sž0YdS)NÚfileÚwbrU)r²r2r3rÆrrUrŸrurr£rÚNotADirectoryErrorr§rÂrÇrrrÚtest_non_directoryYs z!TestBadTempdir.test_non_directoryN)rr r!rÄrÈrÌrrrrr¸Bsr¸c@sŒeZdZGdd„dƒZddd„Zdd„Zd d „Zd d „Zd d„Zdd„Z e   e d¡dd„ƒZ e   ed¡dd„ƒZdd„Zdd„Zdd„ZdS)ÚTestMkstempInnerc@s<eZdZejZejZej Z ej Z dd„Z dd„Zdd„ZdS)zTestMkstempInner.mkstempedcCs>|r |j}n|j}t |||¡}t |||||¡\|_|_dSr/)Ú_bflagsÚ_tflagsrrÚ_mkstemp_innerÚfdr@)rrArBrCÚbinÚflagsÚ output_typerrrÚ__init__ks z#TestMkstempInner.mkstemped.__init__cCst |j|¡dSr/)r2rvrÑ)rr rrrrvrsz TestMkstempInner.mkstemped.writecCs| |j¡| |j¡dSr/)Ú_closerÑÚ_unlinkr@rrrrÚ__del__us z"TestMkstempInner.mkstemped.__del__N)rr r!rÚ_bin_openflagsrÎÚ_text_openflagsrÏr2rurÖÚunlinkr×rÕrvrØrrrrÚ mkstempedesrÜNrKcCsrt |||¡}|dur0|tur(t ¡}nt ¡}|dur>|ƒ}|durL|ƒ}| ||||¡}| |j|||¡|Sr/)rrr rSrTrÜrGr@)rrArBrCrÒrÔrÉrrrÚ do_createys zTestMkstempInner.do_createcCs^| ¡ d¡|jdd d¡|jdd d¡|jddd d¡|jddd d¡dS) Nóblatr­©rBr®©rC©rBrCÚaaú.txt)rÝrvrrrrÚ test_basic‰s zTestMkstempInner.test_basiccCs2t ¡}|j|dd d¡|j|dd d¡|j|dd d¡|j|ddd d¡|j|dd d d¡| t¡$|jd dd d¡Wdƒn1s¤0Y| t¡$|j|d d d¡Wdƒn1sâ0Y| t¡&|j|dd d d¡Wdƒn1s$0YdS) Nr ©rArCrÞóa©rArBób©rArBrCóaaó.txtr )rrTrÝrvrr)rZdir_brrrÚtest_basic_with_bytes_names‘s 2 2 z,TestMkstempInner.test_basic_with_bytes_namescCs*tttƒƒ}|D]}|jdd||<qdS©Nrârß©ÚlistrjrkrÝ©rZextantrmrrrÚtest_basic_many¢s z TestMkstempInner.test_basic_manyc CsRt ¡}z8|j|d d¡|jt |¡d d¡Wt |¡n t |¡0dS©Nr±rÞ)rrOrÝrvrrr2Úrmdir©rrArrrÚtest_choose_directory¨s z&TestMkstempInner.test_choose_directorycCsJ| ¡}t t |j¡j¡}d}tjdkr:|d?}|d}| ||¡dS)Né€Úwin32ééI) rÝr¹ÚS_IMODEr2r@rºÚsysÚplatformr9)rrÉrÃr]ÚuserrrrÚtest_file_mode±s zTestMkstempInner.test_file_modezos.spawnl not availablecCsätjr d}nd}| ¡}| t |j¡d¡d|j}zt}WntyZt j d}Yn0tj   tj   tj  |¡¡d¡}t jdkr˜dt j}d|}nt j}t tjt j||||¡}| |dkd | ¡| |dkd |¡dS) NÚvÚqFz%drztf_inherit_check.pyr÷z"%s"z$child process caught fatal signal %dz child process reports failure %d)rÚverboserÝr9r2Úget_inheritablerÑÚ__file__Ú NameErrorrûÚargvr3rÆr—r:rüÚ executablerÚP_WAITr…)rrÿrÉrÑÚmeZtesterZ decoratedZretvalrrrÚtest_noinherit¾s,  ÿ    ÿzTestMkstempInner.test_noinheritztext mode not availablecCsL|jdd}| d¡| d¡t |jdtj¡| t |jd¡d¡dS)Nr)rÒsblatsextra rorÞ)rÝrvr2ÚlseekrÑÚSEEK_SETr9ry©rÚfrrrÚ test_textmodeäs    zTestMkstempInner.test_textmodecCst t ¡t ¡dtjt¡Srf)rrÐrSrQrÙr rrrrrÂïs  üzTestMkstempInner.make_tempc Cs¢tƒˆtdddƒ\| ¡\}}t |¡| | d¡¡| ¡\}}t |¡| | d¡¡Wdƒn1sv0YWdƒn1s”0YdS©NÚaaaÚbbb)r²r·rÂr2rur=Úendswith)rÚfd1Zname1Úfd2Zname2rrrÚ!test_collision_with_existing_fileös ÿ    z2TestMkstempInner.test_collision_with_existing_filec Cs”tƒztdddƒNt ¡}| | d¡¡| ¡\}}t |¡| | d¡¡Wdƒn1sh0YWdƒn1s†0YdSr) r²r·rrOr=rrÂr2ru)rrArÑr@rrrÚ&test_collision_with_existing_directorys ÿ  z7TestMkstempInner.test_collision_with_existing_directory)NNNrK)rr r!rÜrÝrärìrñrõrþr~rÚ has_spawnlr Ú has_textmoderrÂrrrrrrrÍbs    %   rÍc@seZdZdd„Zdd„ZdS)ÚTestGetTempPrefixcCsLt ¡}| |t¡| t|ƒd¡t ¡}| |t¡| t|ƒd¡dSrƒ)rrQr†r Z assertGreaterr5rRr)rÚpZpbrrrÚtest_sane_templates   z$TestGetTempPrefix.test_sane_templatec Csnt ¡d}tjdd}zDtj ||¡}t |tjtjB¡}t  |¡t  |¡Wt  |¡n t  |¡0dS)Nz xxxxxx.xxxr )Úprefix) rrQrOr2r3rÆrŸÚO_RDWRÚO_CREATrurÛró)rrÚdrÑrrrÚtest_usable_templates    z&TestGetTempPrefix.test_usable_templateN)rr r!rr rrrrrs rc@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) ÚTestGetTempDircCsTt ¡t ¡fD]>}| tj |¡p,|tjkd|¡| tj |¡d|¡qdS)Nz%r is not an absolute pathz%r is not a directory) rrSrTr=r2r3Úisabsr”Úisdir©rrrrrÚtest_directory_exists3sÿÿz$TestGetTempDir.test_directory_existscCs6t ¡}| d¡Wdƒn1s(0YdS)NrÞ)rrLrv)rrÉrrrÚtest_directory_writable<s z&TestGetTempDir.test_directory_writablecCsPt ¡}t ¡}t ¡}| ||u¡| t|ƒt|ƒ¡| |t |¡¡dSr/) rrSrTr=r{r6r9r2Úfsdecode)rr­r®rˆrrrr¯Es zTestGetTempDir.test_same_thingc Cs„t d¡}tjd}t_zTt ¡(}||d<| t ¡|¡Wdƒn1sP0YW|t_t |¡n|t_t |¡0dS)Nz-TemprŠ)rrOrUrrr9rSró)rZcase_sensitive_tempdirZ_tempdirr•rrrÚtest_case_sensitiveOs  0 ÿz"TestGetTempDir.test_case_sensitiveN)rr r!r%r&r¯r(rrrrr!0s   r!c@s.eZdZd dd„Zdd„Zdd„Zdd „ZdS) Ú TestMkstempNc CsÖt |||¡}|dur0|tur(t ¡}nt ¡}|dur>|ƒ}|durL|ƒ}tj|||d\}}tj |¡\}}tj  |¡} |  | |d| |f¡z(|  ||||¡Wt  |¡t  |¡nt  |¡t  |¡0dS)N©rArÚsuffixz+Directory '%s' incorrectly returned as '%s')rrr rSrTrNr2r3r4r:r9rGrurÛ) rrArBrCrÔrÑr@rDrEZadirrrrrÝas*   ÿ  ÿ zTestMkstemp.do_createcCsL| ¡|jdd|jdd|jddd|jddd|jdd dS) Nr­rßr®ràrárârãÚ.r±©rÝrrrrräxs   zTestMkstemp.test_basiccCst ¡}|j|dd|j|dd|j|dd|j|ddd|j|ddd|jd d | t¡ |jd dddWdƒn1sŽ0Y| t¡ |jd d ddWdƒn1sÈ0Y| t¡ |jd dd dWdƒn1s0YdS)Nr rårærçrèrérêrëó.r±r,rârã)rrTrÝrrr$rrrrìs  . . z'TestMkstemp.test_basic_with_bytes_namesc CsFt ¡}z,|j|d|jt |¡dWt |¡n t |¡0dS©Nr±)rrOrÝrrr2rórôrrrrõ“s  z!TestMkstemp.test_choose_directory)NNN)rr r!rÝrärìrõrrrrr)^s  r)c@sVeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dd„Z dS)Ú TestMkdtempcCst ¡Sr/)rrOrrrrr szTestMkdtemp.make_tempNcCst |||¡}|dur0|tur(t ¡}nt ¡}|dur>|ƒ}|durL|ƒ}tj|||d}z| ||||¡|WSt |¡‚Yn0dS©Nr*) rrr rSrTrOrGr2ró)rrArBrCrÔr@rrrrÝ£s   zTestMkdtemp.do_createcCs^t | ¡¡t |jdd¡t |jdd¡t |jddd¡t |jddd¡dS©Nr­rßr®ràrárârã)r2rórÝrrrrrä·s zTestMkdtemp.test_basiccCs4t ¡}t |j|d¡t |j|dd¡t |j|dd¡t |j|ddd¡t |j|ddd¡| t¡&t |j|d dd¡Wdƒn1s¤0Y| t¡&t |j|dd d¡Wdƒn1sä0Y| t¡&t |jd ddd¡Wdƒn1s&0YdS) Nr±rærçrèrårérêrërârãr )rrTr2rórÝrrr$rrrrì¿s 4 4 z'TestMkdtemp.test_basic_with_bytes_namesc Csntttƒƒ}z<|D]}|jdd||<qW|D]}t|tƒr.t |¡q.n |D]}t|tƒrNt |¡qN0dSrí)rïrjrkrÝr7r r2rórðrrrrñÎs  þ zTestMkdtemp.test_basic_manyc CsRt ¡}z8t |j|d¡t |jt |¡d¡Wt |¡n t |¡0dSr/)rrOr2rórÝrrrôrrrrõÙs z!TestMkdtemp.test_choose_directoryc Csl| ¡}zRt t |¡j¡}|dM}d}tjdkrB|d?}|d}| ||¡Wt |¡n t |¡0dS)NiÿiÀr÷rørù) rÝr¹rúr2rºrûrür9ró)rrArÃr]rýrrrÚ test_modeâs zTestMkdtemp.test_modec Cs”tƒztdddƒNtjdd}| ¡| |j d¡¡t ¡}| | d¡¡Wdƒn1sh0YWdƒn1s†0YdS)NrrF)Údelete) r²r·rrLrur=r@rrO)rrÉrArrrrós ÿ z-TestMkdtemp.test_collision_with_existing_filec Cs†tƒltdddƒ@t ¡}| | d¡¡t ¡}| | d¡¡Wdƒn1sZ0YWdƒn1sx0YdSr)r²r·rrOr=r)rZdir1Zdir2rrrrþs ÿz2TestMkdtemp.test_collision_with_existing_directory)NNN) rr r!rÂrÝrärìrñrõr3rrrrrrr0s    r0csPeZdZ‡fdd„Z‡fdd„ZGdd„dƒZddd „Zd d „Zd d „Z‡Z S)Ú TestMktempcst ¡|_tƒ ¡dSr/)rrOrArcr.rrdrrr.s zTestMktemp.setUpcs&|jrt |j¡d|_tƒ ¡dSr/)rAr2rórcr1rrdrrr1s zTestMktemp.tearDownc@s(eZdZejZejZdd„Z dd„Z dS)zTestMktemp.mktempedcCs.tj|||d|_t t |j|jd¡¡dS)Nr*rö)rr$r@r2rurŸrÎ)rrArBrCrrrrÕszTestMktemp.mktemped.__init__cCs| |j¡dSr/)r×r@rrrrrØ"szTestMktemp.mktemped.__del__N) rr r!r2rÛr×rrÙrÎrÕrØrrrrÚmktempedsr6r cCs(| |j||¡}| |j|j||¡|Sr/)r6rArGr@)rrBrCrÉrrrrÝ%szTestMktemp.do_createcCs@| ¡|jdd|jdd|jddd|jddddSr2r-rrrrrä+s   zTestMktemp.test_basiccCs*tttƒƒ}|D]}|jdd||<qdSrírîrðrrrrn3s zTestMktemp.test_many)r r ) rr r!r.r1r6rÝrärnrrrrdrr5 s    r5c@sfeZdZddd„Zdd„Zdd „Zd d „Zd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dS)ÚTestNamedTemporaryFileNr TcCs8|durt ¡}tj||||d}| |j|||¡|S)N)rArr+r4)rrSrLrGr@)rrArBrCr4rÉrrrrÝHs ÿz TestNamedTemporaryFile.do_createcCs@| ¡|jdd|jdd|jddd|jddddSr2r-rrrrräRs   z!TestNamedTemporaryFile.test_basiccCsP| ¡}t |¡}|j}|j}~|dƒ~|dƒ~tjddrL| |ƒ¡dS)NsfoosbarT)Zcpython)rÝÚweakrefÚrefrvrZcheck_impl_detailÚ assertIsNone)rr ÚwrrvZwrite2rrrÚtest_method_lookupZs  z)TestNamedTemporaryFile.test_method_lookupcsPgd¢‰‡fdd„}t|ƒƒD]\}}| |ˆ|¡q| |tˆƒd¡dS)N)sspam seggs sbeans cs*tjdd}| d ˆ¡¡| d¡|S)Núw+b©rÃr r)rrLrvrÆÚseek©r ©ÚlinesrrÚ make_filens  z3TestNamedTemporaryFile.test_iter..make_filerK)Ú enumerater9r5)rrCrmÚlrrArÚ test_iterjs  z TestNamedTemporaryFile.test_itercCs(t ¡}| tj |j¡d|j¡dS)Nz$NamedTemporaryFile %s does not exist)rrLr=r2r3Úexistsr@r rrrÚtest_creates_namedwsÿz)TestNamedTemporaryFile.test_creates_namedc Cszt ¡}z`tj|d}| d¡Wdƒn1s60Y| tj |j¡d|j¡Wt  |¡n t  |¡0dS)Nr±rÞz(NamedTemporaryFile %s exists after close) rrOrLrvr…r2r3rGr@ró©rrAr rrrÚtest_del_on_close}s(ÿz(TestNamedTemporaryFile.test_del_on_closec Cs’t ¡}d}zbtj|dd}|j}| d¡| ¡| tj  |j¡d|j¡W|durdt  |¡t  |¡n|dur‚t  |¡t  |¡0dS)NF)rAr4rÞz)NamedTemporaryFile %s missing after close) rrOrLr@rvrur=r2r3rGrÛró)rrAÚtmpr rrrÚtest_dis_del_on_closeˆs  ÿ  þ z,TestNamedTemporaryFile.test_dis_del_on_closecCs.t ¡}| d¡| ¡| ¡| ¡dS©Nóabc )rrLrvrur rrrÚtest_multiple_close˜s  z*TestNamedTemporaryFile.test_multiple_closecslt ¡$‰| tj ˆj¡¡Wdƒn1s20Y| tj ˆj¡¡‡fdd„}| t |¡dS)Ncs(ˆWdƒn1s0YdSr/rrr@rrÚ use_closed¥sz?TestNamedTemporaryFile.test_context_manager..use_closed) rrLr=r2r3rGr@r…rr©rrPrr@rÚtest_context_manager s  2 z+TestNamedTemporaryFile.test_context_managerc s–g‰tj‰‡‡fdd„}tjd|d\tjdtd.| ttj¡| t ˆƒd¡Wdƒn1sj0YWdƒn1sˆ0YdS)Ncsˆ |¡ˆ|ƒdSr/©r[©rÑ©ÚclosedZos_closerrru®s z5TestNamedTemporaryFile.test_no_leak_fd..closeúos.close©Z side_effectúio.openrK) r2rurÚpatchrrrrLr9r5©rrurrUrÚtest_no_leak_fdªsz&TestNamedTemporaryFile.test_no_leak_fdcCsœt ¡}| tj|¡| t¡tjd|dWdƒn1sD0Y| t¡tjd|dWdƒn1s|0Y|  t   |¡g¡dS)Nr;)rÃrAé) rrOZ addCleanuprr°rrrLrr9r2r¥rôrrrÚ test_bad_mode·s , ,z$TestNamedTemporaryFile.test_bad_mode)Nr r T)rr r!rÝrär<rFrHrJrLrOrRr\r^rrrrr7Es     r7c@s®eZdZd,dd„Zdd„Zdd „Zd d „Zd d „Zdd„Zdd„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„Zd(d)„Zd*d+„ZdS)-ÚTestSpooledTemporaryFilerNr cCs&|durt ¡}tj||||d}|S)N)Úmax_sizerArr+)rrSrW)rr`rArBrCrÉrrrrÝÅsz"TestSpooledTemporaryFile.do_createcCs4| ¡}| |j¡|jdddd}| |j¡dS)Nrr­rã)r`rBrC)rÝr…Ú_rolledr rrrräÍs z#TestSpooledTemporaryFile.test_basicc Csˆt ¡}zntjd|d}| |j¡| d¡| |j¡|j}| ¡| t |t ƒo`t j   |¡d|¡Wt  |¡n t  |¡0dS)Né )r`rAsblat blat blat blat blat z*SpooledTemporaryFile %s exists after close)rrOrWr…rarvr=r@rur7r r2r3rGró)rrAr ÚfilenamerrrrJÔs   ÿz*TestSpooledTemporaryFile.test_del_on_closecCsL|jdd}| |j¡tdƒD]}| dd¡| d¡q | |j¡dS)Né©r`éróxxxxxxxxxxxxxxxxxxxx)rÝr…rarjr?rv)rr rmrrrÚtest_rewrite_smallãs      z+TestSpooledTemporaryFile.test_rewrite_smallcCs^|jdd}| |j¡| d¡| |j¡| d¡| |j¡| d¡| |j¡dS)Nrdrergó xxxxxxxxxxóx)rÝr…rarvr=r rrrÚtest_write_sequentialìs       z.TestSpooledTemporaryFile.test_write_sequentialcCs@| ¡}| d¡| d¡}| |d¡| ¡}| |d¡dS)N)rjóyózrsxyz)rÝÚ writelinesr?r9ry)rr ÚposÚbufrrrÚtest_writelinesøs    z(TestSpooledTemporaryFile.test_writelinescCs<|jdd}| d¡| |j¡| d¡| |j¡dS)Né#re)rgrisxxxxxrj)rÝrnr…rarvr=r rrrÚtest_writelines_sequentials     z3TestSpooledTemporaryFile.test_writelines_sequentialcCsV|jdd}| |j¡| dd¡}| |d¡| |j¡| d¡| |j¡dS)Nrdrerrrj)rÝr…rar?r9rvr=)rr rorrrÚ test_sparse s      z$TestSpooledTemporaryFile.test_sparsecCs:|jdd}| |j¡| | ¡dk¡| |j¡dS)Nrdrer)rÝr…rar=Úfilenor rrrÚ test_filenos  z$TestSpooledTemporaryFile.test_filenocCs:t ¡}| d¡| |j¡| ¡| ¡| ¡dSrM)rrWrvr…rarur rrrÚ#test_multiple_close_before_rollovers   ztjdd}| d¡| |j¡| ¡| ¡| ¡dS)NrKrerN)rrWrvr=rarur rrrÚ"test_multiple_close_after_rollover%s    z;TestSpooledTemporaryFile.test_multiple_close_after_rollovercCsL|jdd}|j}|j}|j}|dƒ|dƒ|ddƒ| |dƒd¡dS)Nrdres#aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas#bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbréFsFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb)rÝryrvr?r9)rr ryrvr?rrrÚtest_bound_methods.s  z+TestSpooledTemporaryFile.test_bound_methodscCs–tjdd}| d¡| |j¡| |jd¡| |j¡|  t ¡|j Wdƒn1sb0Y|  t ¡|j Wdƒn1s’0Y|  t ¡|j Wdƒn1sÂ0Y| d¡| |j¡| |jd¡| |j¡|  t ¡|j Wdƒn1s$0Y|  t ¡|j Wdƒn1sV0Y|  t ¡|j Wdƒn1sˆ0YdS)Nrbrerir=rjzrb+)rrWrvr…rar9rÃr:r@rr’ÚnewlinesÚencodingÚerrorsr=ÚassertIsNotNoner rrrÚtest_properties<s*     $ $ $    & & z(TestSpooledTemporaryFile.test_propertiescCsHtjdddd}| d¡| d¡| | ¡d¡| d¡| d¡| | ¡d¡| |j¡| |jd¡|  |j ¡| |j t j ¡| |jd¡| |jd ¡| d ¡| d¡| | ¡d ¡| d ¡| d¡| | ¡d ¡| |j¡| |jd¡| |j ¡| |j t j ¡| |jd¡| |jd ¡dS)Núw+rbúutf-8)rÃr`r|zabc rzdef zabc def Ústrictzxyzzy zabc def xyzzy zfoobar zabc def xyzzy foobar )rrWrvr?r9ryr…rarÃr:r@r{r2Úlinesepr|r}r=r~r rrrÚtest_text_modeTs6ÿ            z'TestSpooledTemporaryFile.test_text_modecCstjdddddd}| d¡| d¡| | ¡d¡| |j¡| |jd¡|  |j ¡|  |j ¡| |j d¡| |jd¡| d ¡| d ¡| d¡| | ¡d ¡| |j¡| |jd¡|  |j ¡|  |j ¡| |j d¡| |jd¡dS) Nr€rbr rr#)rÃr`Únewliner|r}uΛ ruΜΜΜΜΜΜΜΜΜΜ u(ÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎuBΛ ΜΜΜΜΜΜΜΜΜΜ ÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ)rrWrvr?r9ryr…rarÃr:r@r~r{r|r}r=r rrrÚtest_text_newline_and_encodingts2þ         ÿ   z7TestSpooledTemporaryFile.test_text_newline_and_encodingcsltjdd(‰| ˆj¡| ˆj¡Wdƒn1s:0Y| ˆj¡‡fdd„}| t|¡dS)NrKrecs(ˆWdƒn1s0YdSr/rrr@rrrP”szQTestSpooledTemporaryFile.test_context_manager_before_rollover..use_closed)rrWr…rarVr=rrrQrr@rÚ$test_context_manager_before_rolloverŽs  *  z=TestSpooledTemporaryFile.test_context_manager_before_rollovercsŠtjddF‰| ˆj¡ˆ d¡ˆ ¡| ˆj¡| ˆj¡Wdƒn1sX0Y| ˆj¡‡fdd„}| t |¡dS)NrKrerNcs(ˆWdƒn1s0YdSr/rrr@rrrP¢szQTestSpooledTemporaryFile.test_context_manager_during_rollover..use_closed) rrWr…rarvÚflushr=rVrrrQrr@rÚ$test_context_manager_during_rollover™s   *  z=TestSpooledTemporaryFile.test_context_manager_during_rollovercs‚tjdd‰ˆ d¡ˆ ¡| ˆj¡ˆ| ˆj¡Wdƒn1sP0Y| ˆj¡‡fdd„}| t |¡dS)NrKrerNcs(ˆWdƒn1s0YdSr/rrr@rrrP°szPTestSpooledTemporaryFile.test_context_manager_after_rollover..use_closed) rrWrvrˆr=rar…rVrrrQrr@rÚ#test_context_manager_after_rollover§s   *  z.roundtrips1234r=zabdc r€uΛzutf-16)r|zfoo r )r…r)rr™rrrÚtest_mode_and_encodingñs    z(TestTemporaryFile.test_mode_and_encodingc s–g‰tj‰‡‡fdd„}tjd|d\tjdtd.| ttj¡| t ˆƒd¡Wdƒn1sj0YWdƒn1sˆ0YdS)Ncsˆ |¡ˆ|ƒdSr/rSrTrUrrrus z0TestTemporaryFile.test_no_leak_fd..closerWrXrYrK) r2rurrZrrrrMr9r5r[rrUrr\þsz!TestTemporaryFile.test_no_leak_fdN)rr r!rär–rOršr\rrrrr•Ðs   r•c@s$eZdZdd„Zdd„Zdd„ZdS)Ú NulledModulescGs&dd„|Dƒ|_dd„|jDƒ|_dS)NcSsg|] }|j‘qSr)rZ)Ú.0ÚmodrrrÚ r z*NulledModules.__init__..cSsg|] }| ¡‘qSr)Úcopy)rœr9rrrržr )ÚrefsÚcontents)rÚmodulesrrrrÕszNulledModules.__init__cCs"|jD]}|D] }d||<qqdSr/)r )rrr^rrrr*s zNulledModules.__enter__cGs.t|j|jƒD]\}}| ¡| |¡qdSr/)Úzipr r¡ÚclearÚupdate)rÚexc_inforrˆrrrr0szNulledModules.__exit__N)rr r!rÕr*r0rrrrr›sr›c@s–eZdZd dd„Zd!dd„Zdd „Zd d „Zejd d „ƒZ ej dd„ƒZ dd„Z dd„Z dd„Zdd„Zdd„Zdd„Ze eedƒd¡dd„ƒZdS)"ÚTestTemporaryDirectoryNr rKcCsH|durt ¡}tj|||d}| |j|||¡| |j|||¡|Sr1)rrSrXrGr@Ú do_create2)rrArBrCÚrecurseÚdirsÚfilesrKrrrrÝ s z TestTemporaryDirectory.do_createc Cs–|rBt|ƒD]4}tj |d|¡}t |¡| ||d||¡q t|ƒD]F}ttj |d|¡dƒ}| d¡WdƒqJ1s†0YqJdS)Nzdir%drKz test%d.txtrÊs Hello world!)rjr2r3rÆÚmkdirr¨rŸrv)rr3r©rªr«rmr@r rrrr¨(s   z!TestTemporaryDirectory.do_create2cCstt ¡}Wdƒn1s0Y| t¡}tj|dWdƒn1sT0Y| |jjtj¡dSr/)rrXrr§r9Ú exceptionÚerrnoÚENOENT)rrÅÚcmrrrÚtest_mkdtemp_failure3s   *z+TestTemporaryDirectory.test_mkdtemp_failurec Cstt ¡}zZ|j|d}| tj |j¡d|j¡| ¡|  tj |j¡d|j¡Wt  |¡n t  |¡0dS)Nr±z$TemporaryDirectory %s does not existú*TemporaryDirectory %s exists after cleanup) rrOrÝr=r2r3rGr@Úcleanupr…ró)rrArrrrÚtest_explicit_cleanup=s ÿÿz,TestTemporaryDirectory.test_explicit_cleanupcCsŒ| ¡}|jdd}t |jtj |jd¡¡| ¡| tj |j¡d|j¡|  tj |j¡d¡|  t  |j¡dgd¡| ¡dS)Nr)r©Zfoor²z-Directory pointed to by a symlink was deletedz test0.txtz>Contents of the directory pointed to by a symlink were deleted) rÝr2Úsymlinkr@r3rÆr³r…rGr=r9r¥)rZd1Zd2rrrÚ(test_cleanup_with_symlink_to_a_directoryJs ÿÿÿz?TestTemporaryDirectory.test_cleanup_with_symlink_to_a_directoryc CsTt ¡}z:|j|d}|j}~| tj |¡d|¡Wt |¡n t |¡0dS)Nr±ú*TemporaryDirectory %s exists after __del__) rrOrÝr@r…r2r3rGró©rrArr@rrrÚtest_del_on_collection_s ÿz-TestTemporaryDirectory.test_del_on_collectioncCsž| ¡‚}dD]l}dj||d}t d|¡\}}}| ¡ ¡}| tj  |¡d|¡| dd¡}|  d|¡|  d |¡qWdƒn1s0YdS) N)Úbuiltinsr2Úshutilrûrr+a½if True: import builtins import os import shutil import sys import tempfile import warnings tmp = tempfile.TemporaryDirectory(dir={dir!r}) sys.stdout.buffer.write(tmp.name.encode()) tmp2 = os.path.join(tmp.name, 'test_dir') os.mkdir(tmp2) with open(os.path.join(tmp2, "test0.txt"), "w") as f: f.write("Hello world!") {mod}.tmp = tmp warnings.filterwarnings("always", category=ResourceWarning) )rArú-cr²rÚbackslashreplaceú Exception ú'ResourceWarning: Implicitly cleaning up© rÝÚformatrZassert_python_okrzÚstripr…r2r3rGrlr)rrArÚcodeÚrcÚoutÚerrÚtmp_namerrrÚtest_del_on_shutdownls í ÿ  z+TestTemporaryDirectory.test_del_on_shutdowncCs’| ¡v}dj|d}t d|¡\}}}| ¡ ¡}| tj  |¡d|¡| dd¡}|  d|¡|  d|¡Wdƒn1s„0YdS) Na©if True: import sys import tempfile import warnings def generator(): with tempfile.TemporaryDirectory(dir={dir!r}) as tmp: yield tmp g = generator() sys.stdout.buffer.write(next(g).encode()) warnings.filterwarnings("always", category=ResourceWarning) r±r¼r²rr½r¾r¿rÀ)rrArÃrÄrÅrÆrÇrrrÚtest_exit_on_shutdownŒs  ô  ÿ  z,TestTemporaryDirectory.test_exit_on_shutdownc Cs¢| ¡†}|j|dd}|j}tjdtfdd(tjdtd~t ¡Wdƒn1s^0Y| t j   |¡d|¡Wdƒn1s”0YdS) Né)rAr©Z ImplicitlyF)ÚquietÚalways)r%r·) rÝr@rr(ÚResourceWarningr+r,Ú gc_collectr…r2r3rGr¸rrrÚtest_warnings_on_cleanup¤s &ÿz/TestTemporaryDirectory.test_warnings_on_cleanupcCs$| ¡}| ¡| ¡| ¡dSr/)rÝr³r$rrrrO²sz*TestTemporaryDirectory.test_multiple_closecCsb| ¡}|0}| tj |¡¡| ||j¡Wdƒn1sB0Y| tj |¡¡dSr/)rÝr=r2r3rGr9r@r…)rrr@rrrrR¹s ,z+TestTemporaryDirectory.test_context_managerc CsätdƒD]Ö}|dK}|jt|dƒd¨|jdddd}|`tj|jdd D]6\}}}|D]}t tj  ||¡|¡q\t ||¡qN|  ¡Wdƒn1s¢0Y|  tj  |j¡¡Wdƒq1sÔ0YqdS) NérøZ03or>rÊr]©r©rªr«F©Útopdown) rjZsubTestrÁrÝr2Úwalkr@r¾r3rÆr³r…rG)rrÃrÚrootrªr«r@rrrÚ test_modesÁs &z!TestTemporaryDirectory.test_modesÚchflagszrequires os.lchflagsc Cs¨tjtjB}|jdddd}|`tj|jddD]6\}}}|D]}t tj  ||¡|¡q@t ||¡q2|  ¡Wdƒn1s†0Y|  tj  |j¡¡dS)NrÊr]rÑFrÒ) r¹Ú UF_IMMUTABLEÚ UF_NOUNLINKrÝr2rÔr@r×r3rÆr³r…rG)rrÓrrÕrªr«r@rrrÚ test_flagsÏs &z!TestTemporaryDirectory.test_flags)Nr r rKrKrK)rKrKrK)rr r!rÝr¨r±r´rZskip_unless_symlinkr¶Z cpython_onlyr¹rÈrÉrÏrOrRrÖr~rr€r2rÚrrrrr§s        r§Ú__main__)5rr®r¦r2rrûrHr+Ú contextlibr¹r’r8r~rÚtestrZ test.supportrrÚrÙrr€rrüÚ startswithrkZTestCaserr"rJr`r‚r™r©Úcontextmanagerr²r·r¸rÍrr!r)r0r5r7r_rLrMr•r›r§rÚmainrrrrÚsb      3@*%  / .?l<}>A