U g$,@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl m Z ddl m Z zddlZddlZWnek rdZYnXGdddZdS)N)support) print_warningc@seZdZdZdZduddddZdZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZddZddZddZddZd d!Zd"d#Zd$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Zd2d3Zd4d5Zd6d7Zd8d9Zd:d;Z dd?Z"d@dAZ#dBdCZ$dDdEZ%dFdGZ&dHdIZ'dJdKZ(dLdMZ)dNdOZ*dPdQZ+dRdSZ,dTdUZ-dVdWZ.dXdYZ/dZd[Z0d\d]Z1d^d_Z2d`daZ3dbdcZ4dddee5e6DZ7dfdgZ8dhdiZ9djdkZ:dldmZ;dndoZdtS)vsaved_test_environmentaSave bits of the test environment and restore them at block exit. with saved_test_environment(testname, verbose, quiet): #stuff Unless quiet is True, a warning is printed to stderr if any of the saved items was changed by the test. The attribute 'changed' is initially False, but is set to True if a change is detected. If verbose is more than 1, the before and after state of changed items is also printed. Fr)pgocCs||_||_||_||_dSN)testnameverbosequietr)selfrrr rr //usr/lib/python3.8/test/libregrtest/save_env.py__init__+szsaved_test_environment.__init__)zsys.argvcwdz sys.stdinz sys.stdoutz sys.stderrz os.environzsys.pathzsys.path_hooks __import__zwarnings.filterszasyncore.socket_mapzlogging._handlerszlogging._handlerListz sys.gettracezsys.warnoptionsz!multiprocessing.process._danglingzthreading._danglingzsysconfig._CONFIG_VARSzsysconfig._INSTALL_SCHEMESfileslocalezwarnings.showwarningZshutil_archive_formatsZshutil_unpack_formatsz!asyncio.events._event_loop_policycCstSr)rZmaybe_get_event_loop_policyr r r r %get_asyncio_events__event_loop_policyIszsz3saved_test_environment.get_files..)sortedrlistdirrr r r get_filessz saved_test_environment.get_filescCsLtj}||krH|d|krHtj|r2t|ntj|rHt|dS)Nrq)rZTESTFNrr5isfileunlinkrsZrmtree)r Z saved_valuerur r r restore_filess    z$saved_test_environment.restore_filescCs g|]}|drtt|qS)ZLC_) startswithgetattrr)rtlcr r r s z!saved_test_environment.c CsLg}|jD]<}z||t|dfWq ttfk rDYq Yq Xq |Sr)_lcappendr setlocale TypeError ValueError)r Zpairingsrr r r get_locales  z!saved_test_environment.get_localecCs|D]\}}t||qdSr)rr)r rTrZsettingr r r restore_locales z%saved_test_environment.restore_localecCstjSrrD showwarningrr r r get_warnings_showwarningsz/saved_test_environment.get_warnings_showwarningcCs |t_dSrr)r fxnr r r restore_warnings_showwarningsz3saved_test_environment.restore_warnings_showwarningccsD|jD]8}|dd}d|}d|}|t||t||fVqdS)N._Zget_Zrestore_) resourcesreplacer~)r nameZ method_suffixZget_nameZ restore_namer r r resource_infos   z$saved_test_environment.resource_infocCstdd|D|_|S)Ncss|]\}}}||fVqdSrr )rtrrJrestorer r r rv sz3saved_test_environment.__enter__..)r0r saved_valuesrr r r __enter__s z saved_test_environment.__enter__c Cs|j}|`t|jtjO_|D]n\}}}|}||} || kr*d|_|| |js*|js*t |d|j t d| d|dt j ddq*dS)NTz was modified by z Before: z After:  )fileflushF)rrZ gc_collectchangedZenvironment_alteredrpopr rrrprintrr() r exc_typeZexc_valZexc_tbrrrJrZcurrentZoriginalr r r __exit__ s"  zsaved_test_environment.__exit__N)rF)?__name__ __module__ __qualname____doc__rr rrrrrr r"r%r&r)r*r-r.r1r4r6r7r9r:r<r>rArCrFrGrMrNrQrUrWrXrZr[r\r]r_r`rcrdrgrhrlrmrorpryr|dirrrrrrrrrrr r r r rst r)rr@rrYrrOrrjrarDZtestrZtest.libregrtest.utilsrZ_multiprocessingZmultiprocessing.processre ImportErrorrr r r r s