ó {G_Tc@s|dZddlZddlmZmZmZddlmZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddlmZde jkrÀddlZnejdƒ‚ejrejjejƒ rejejƒejejƒndejfd „ƒYZd efd „ƒYZd ejfd „ƒYZd„ZedkrxeƒndS(sTests for 'site'. Tests assume the initial paths in sys.path once the interpreter has begun executing have not been removed. iÿÿÿÿN(t run_unittesttTESTFNtEnvironmentVarGuard(tcaptured_output(tcopytsites!importation of site.py suppressedtHelperFunctionsTestscBsËeZdZd„Zd„Zd„Zd„Zd„Zd„Zde d„Z d „Z d „Z e jejd kd ƒd „ƒZd„Ze jejdƒd„ƒZd„Zd„Zd„ZRS(s›Tests for helper functions. The setting of the encoding (set using sys.setdefaultencoding) used by the Unicode implementation is not tested. cCsGtj|_tj|_tj|_tj|_ t t j ƒ|_ dS(sSave a copy of sys.pathN(tsystpathtsys_pathRt USER_BASEtold_baset USER_SITEtold_sitetPREFIXESt old_prefixesRt sysconfigt _CONFIG_VARStold_vars(tself((s*/usr/local/lib/python2.7/test/test_site.pytsetUp(s     cCsA|jtj(|jt_|jt_|jt_ |j t _ dS(sRestore sys.pathN( R RRR RR R R RRRRR(R((s*/usr/local/lib/python2.7/test/test_site.pyttearDown0s     cCs”d}tjj|Œ}tj|Œ\}}|jtjj|ƒ|ƒ|tjj|ƒkrt|j||ƒn|jtjj|ƒ|ƒdS(Nt BeginningtEnd(RR(tosRtjoinRtmakepatht assertEqualtabspathtnormcase(Rt path_partst original_dirtabs_dirtnorm_dir((s*/usr/local/lib/python2.7/test/test_site.pyt test_makepath8scCsytjƒ}xfgtjD]1}|rtjj|ƒrtj|ƒd^qD]#}|j||d||fƒqNWdS(NisB%s from sys.path not found in set returned by _init_pathinfo(): %s(Rt_init_pathinfoRRRtisdirRtassertIn(Rtdir_setRtentry((s*/usr/local/lib/python2.7/test/test_site.pyttest_init_pathinfoEs  5 cCsc|j|jtjd|jƒ|jtj|jƒdtjƒ|jt jj |j ƒƒdS(s>Contain common code for testing results of reading a .pth files%s not in sys.modulesiN( R%timportedRtmodulesRRt good_dir_pathRt assertFalseRtexistst bad_dir_path(Rtpth_file((s*/usr/local/lib/python2.7/test/test_site.pytpth_file_testsMs#cCsbtƒ}|jdtƒz7|jƒtj|j|jtƒƒ|j |ƒWd|jƒXdS(Ntprep( tPthFiletcleanuptTruetcreateRt addpackagetbase_dirtfilenametsetR0(RR/((s*/usr/local/lib/python2.7/test/test_site.pyttest_addpackageTs  t.cswtjj|ƒ}|d}tjj||ƒ‰tˆdƒ}|j‡fd†ƒ|j|ƒ|jƒ||fS(Ns.pthtwcs tjˆƒS(N(Rtremove((tpth_fn(s*/usr/local/lib/python2.7/test/test_site.pytis(RRRRtopent addCleanuptwritetclose(Rtcontentstpth_dirtpth_namet pth_basenameR/((R>s*/usr/local/lib/python2.7/test/test_site.pytmake_pthcs   cCsÊ|jdƒ\}}tdƒ}tj||tƒƒWdQX|j|jƒdƒ|j|jƒtjt j j ||ƒƒƒ|j|jƒdƒ|j|jƒdƒ|j|jƒdƒdS(Nsimport bad)syntax tstderrsline 1t Tracebacksimport bad\)syntaxt SyntaxError( RHRRR6R9tassertRegexpMatchestgetvaluetretescapeRRR(RRER>terr_out((s*/usr/local/lib/python2.7/test/test_site.pyt!test_addpackage_import_bad_syntaxnscCs´|jdƒ\}}tdƒ}tj||tƒƒWdQX|j|jƒdƒ|j|jƒtjt j j ||ƒƒƒ|j|jƒdƒ|j|jƒdƒdS(Nsrandompath import nosuchmodule RIsline 2RJt ImportError( RHRRR6R9RLRMRNRORRR(RRER>RP((s*/usr/local/lib/python2.7/test/test_site.pyttest_addpackage_import_bad_exec}stwin32sIWindows does not raise an error for file paths containing null characterscCs´|jdƒ\}}tdƒ}tj||tƒƒWdQX|j|jƒdƒ|j|jƒtjt j j ||ƒƒƒ|j|jƒdƒ|j|jƒdƒdS(Ntabcdef RIsline 1RJt TypeError( RHRRR6R9RLRMRNRORRR(RRER>RP((s*/usr/local/lib/python2.7/test/test_site.pyt#test_addpackage_import_bad_pth_file‰scCs\tƒ}|jdtƒz1|jƒtj|jtƒƒ|j|ƒWd|jƒXdS(NR1( R2R3R4R5Rt addsitedirR7R9R0(RR/((s*/usr/local/lib/python2.7/test/test_site.pyttest_addsitedir—s  s<requires access to PEP 370 user-site (site.ENABLE_USER_SITE)cCsPtj}|j|tjƒtjjƒ}tj tj dd|gd|ƒ}|j |dd||fƒtjjƒ}tj tj ddd|gd|ƒ}|j |dƒtjjƒ}d|d ``, a line with self.good_dirname, and a line with self.bad_dirname. Creation of the directory for self.good_dir_path (based off of self.good_dirname) is also performed. Make sure to call self.cleanup() to undo anything done by this method. R<s#import @bad module names s import %sN( R@R‹R)RŒRRCRtmkdirR+(RtFILE((s*/usr/local/lib/python2.7/test/test_site.pyR5s     cCsÕtjj|jƒr(tj|jƒn|rbtjj|jƒ|_ |j rtj|j=qn|j r|j tj|js.        á7O