ÿØÿàJFIFÿþ ÿÛC       ÿÛC ÿÀÿÄÿÄ"#QrÿÄÿÄ&1!A"2qQaáÿÚ ?Øy,æ/3JæÝ¹È߲؋5êXw²±ÉyˆR”¾I0ó2—PI¾IÌÚiMö¯–þrìN&"KgX:Šíµ•nTJnLK„…@!‰-ý ùúmë;ºgµŒ&ó±hw’¯Õ@”Ü— 9ñ-ë.²1<yà‚¹ïQÐU„ہ?.’¦èûbß±©Ö«Âw*VŒ) `$‰bØÔŸ’ëXÖ-ËTÜíGÚ3ð«g Ÿ§¯—Jx„–’U/ÂÅv_s(Hÿ@TñJÑãõçn­‚!ÈgfbÓc­:él[ðQe 9ÀPLbÃãCµm[5¿ç'ªjglå‡Ûí_§Úõl-;"PkÞÞÁQâ¼_Ñ^¢SŸx?"¸¦ùY騐ÒOÈ q’`~~ÚtËU¹CڒêV  I1Áß_ÿÙ fPc@sdZddlZddlZddlZddlmZddlmZmZm Z m Z m Z ej e ZdddgZejjZejjZejjZejjZejjZejjZdefdYZeZdefd YZ dS( s Test Selection -------------- Test selection is handled by a Selector. The test loader calls the appropriate selector method for each object it encounters that it thinks may be a test. iN(tConfig(tsplit_test_nametsrct getfilenamet getpackaget ispackagetSelectortdefaultSelectort TestAddresscBs_eZdZdZdZdZdZdZdZdZ dZ d Z RS( sCore test selector. Examines test candidates and determines whether, given the specified configuration, the test candidate should be selected as a test. cCs)|dkrt}n|j|dS(N(tNoneRt configure(tselftconfig((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyt__init__"s  cCsI||_|j|_|j|_|j|_|j|_|j|_dS(N(R texcludet ignoreFilestincludetpluginst testMatchtmatch(R R ((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR 's      cCs|jj|sI|jotdg|jD]}|j|^q+o|j ptdg|jD]}|j|^qc S(sDoes the name match my requirements? To match, a name must match config.testMatch OR config.include and it must not match config.exclude N(RtsearchRtfilterR R(R tnametinctexc((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pytmatches/s ( cCst|dd}|dk r'|}n7|jjd o[t|tjp[|j|j}|jj |}|dk rt j d|||}nt j d|||S(sIs the class a wanted test class? A class must be a unittest.TestCase subclass, or match test name requirements. Classes that start with _ are always excluded. t__test__t_s$Plugin setting selection of %s to %sswantClass %s? %sN( tgetattrR t__name__t startswitht issubclasstunittesttTestCaseRRt wantClasstlogtdebug(R tclstdeclaredtwantedt plug_wants((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR">s    cCst|}t|rT|j pNtdg|jD]}|j|^q2 }n-|j|p~|jjo~||jjk}|j j |}|dk rt j d|||}nt j d|||S(sIs the directory a wanted test directory? All package directories match, so long as they do not match exclude. All other directories must match test requirements. s$Plugin setting selection of %s to %sswantDirectory %s? %sN( t op_basenameRRRR RRR tsrcDirsRt wantDirectoryR#R$(R tdirnamettailRR'R(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR+Ss   ,     c Cs t|}g|jD]}|j|r|^q}|rQtjd|tS|jj rtj |tj rtj d|tSt |\}}|dk}|o|j |}|jj|} | dk rtjd|| | }ntjd|||S(sIs the file a wanted test file? The file must be a python source file and match testMatch or include, and not match exclude. Files that match ignore are *never* wanted, regardless of plugin, testMatch, include or exclude settings. s'%s matches ignoreFiles pattern; skippeds%s is executable; skippeds.pysplugin setting want %s to %sswantFile %s? %sN(R)RRR#R$tFalseR t includeExetostaccesstX_OKtinfot op_splitextRRtwantFileR ( R tfiletbaset ignore_thistignore_matchestdummytexttpysrcR'R(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR5ks&  "   cCsy(t|dr|j}n |j}Wntk r<tSXt|dd}|dk rd|}n|jd o|j|}|j j |}|dk r|}nt j d|||S(s)Is the function a test function? tcompat_func_nameRRswantFunction %s? %sN( thasattrR=RtAttributeErrorR.RR RRRt wantFunctionR#R$(R tfunctiontfuncnameR&R'R(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR@s       cCsy |j}Wntk r!tSX|jdr5tSt|dd}|dk r\|}n|j|}|jj|}|dk r|}nt j d|||S(s%Is the method a test method? RRswantMethod %s? %sN( RR?R.RRR RRt wantMethodR#R$(R tmethodt method_nameR&R'R(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyRCs      cCst|dd}|dk r'|}n.|j|jjddpR|jdk}|jj|}|dk r||}ntjd|||S(sIs the module a test module? The tail of the module name must match test requirements. One exception: we always want __main__. Rt.it__main__swantModule %s? %sN( RR RRtsplitRt wantModuleR#R$(R tmoduleR&R'R(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyRIs    ( Rt __module__t__doc__R R RR"R+R5R@RCRI(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyRs        cBs5eZdZddZdZdZdZRS(sA test address represents a user's request to run a particular test. The user may specify a filename or module (or neither), and/or a callable (a class, function, or method). The naming format for test addresses is: filename_or_module:callable Filenames that are not absolute will be made absolute relative to the working dir. The filename or module part will be considered a module name if it doesn't look like a file, that is, if it doesn't exist on the file system and it doesn't contain any directory separators and it doesn't end in .py. Callables may be a class name, function name, method name, or class.method specification. cCs>|dkrtj}n||_||_t|\|_|_|_t j d||j|j|j|jdkr|jdk rt |j|j|_qn|jrt |j|_t |jstt||j|_n|jdkrt|j|_qnt j d||j|j|jdS(Ns4Test name %s resolved to file %s, module %s, call %ss;Final resolution of test name %s: file %s module %s call %s(R R0tgetcwdRt workingDirRtfilenameRJtcallR#R$RRtop_isabst op_abspathtop_joinR(R RRN((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyR s(      cCs|j|j|jfS(N(RORJRP(R ((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyttotuplescCs|jS(N(R(R ((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyt__str__scCs d|j|j|j|jfS(Ns%s: (%s, %s, %s)(RRORJRP(R ((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyt__repr__sN(RRKRLR R RTRURV(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyRs    (!RLtloggingR0R t nose.configRt nose.utilRRRRRt getLoggerRR#t__all__tpathtjoinRStbasenameR)texistst op_existstsplitextR4tisabsRQtabspathRRtobjectRRR(((s>/opt/alt/python27/lib/python2.7/site-packages/nose/selector.pyts    (