mò
­fIc           @   s/  d  Z  d k Z d k Z d k Z d k l Z d k Z d k Z d k Z d k	 Z	 d „  Z
 d e i f d „  ƒ  YZ d e i f d „  ƒ  YZ d e i f d	 „  ƒ  YZ d
 e i f d „  ƒ  YZ d e i f d „  ƒ  YZ d e i f d „  ƒ  YZ d e i f d „  ƒ  YZ d „  Z e d j o e ƒ  n d S(   s   Regresssion tests for urllibN(   s   test_supportc         C   sE   t  t |  ƒ ƒ d i ƒ  } t | ƒ d j o d | } n d | S(   s!   Escape char as RFC 2396 specifiesi   i   s   0%st   %N(   t   hext   ordt   chart   uppert   hex_reprt   len(   R   R   (    (    t-   /mit/python/lib/python2.4/test/test_urllib.pyt	   hexescape   s
     t   urlopen_FileTestsc           B   sq   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z RS(   s©   Test urlopen() opening a temporary file.

    Try to test as much functionality as possible so as to cut down on reliance
    on connecting to the Net for testing.

    c         C   sp   d |  i i |  _ t t i d ƒ } z | i |  i ƒ Wd | i	 ƒ  Xt i |  _
 t i d |  i
 ƒ |  _ d S(   s'   Setup of a temp file to use for testings   test_urllib: %s
t   wbNs   file:%s(   t   selft	   __class__t   __name__t   textt   filet   test_supportt   TESTFNt   FILEt   writet   closet   pathnamet   urllibt   urlopent   returned_obj(   R   R   (    (    R   t   setUp   s      c         C   s!   |  i i ƒ  t i t i ƒ d S(   s   Shut down the open objectN(   R   R   R   t   ost   removeR   R   (   R   (    (    R   t   tearDown&   s     c         C   s5   x. d
 D]& } |  i t |  i | ƒ d	 | ƒ q Wd  S(   Nt   readt   readlinet	   readlinest   filenoR   t   infot   geturlt   __iter__s/   object returned by urlopen() lacks %s attribute(   s   reads   readlines	   readliness   filenos   closes   infoR"   s   __iter__(   t   attrR   t   assert_t   hasattrR   (   R   R$   (    (    R   t   test_interface+   s     c         C   s    |  i |  i |  i i ƒ  ƒ d  S(   N(   R   t   assertEqualR   R   R   (   R   (    (    R   t	   test_read3   s    c         C   s<   |  i |  i |  i i ƒ  ƒ |  i d |  i i ƒ  d ƒ d  S(   Nt    sK   calling readline() after exhausting the file did not return an empty string(   R   R(   R   R   R   (   R   (    (    R   t   test_readline6   s    c         C   sF   |  i i ƒ  } |  i t | ƒ d d ƒ |  i | d |  i d ƒ d  S(   Ni   s.   readlines() returned the wrong number of linesi    s"   readlines() returned improper text(   R   R   R   t
   lines_listR(   R   R   (   R   R,   (    (    R   t   test_readlines<   s
    c         C   sW   |  i i ƒ  } |  i t | t ƒ d ƒ |  i t i	 | t
 |  i ƒ ƒ |  i d ƒ d  S(   Ns   fileno() did not return an intsT   Reading on the file descriptor returned by fileno() did not return the expected text(   R   R   R    t   file_numR%   t
   isinstancet   intR(   R   R   R   R   (   R   R.   (    (    R   t   test_filenoC   s
    $c         C   s   |  i i ƒ  d  S(   N(   R   R   R   (   R   (    (    R   t
   test_closeK   s    c         C   s&   |  i t |  i i ƒ  t i ƒ ƒ d  S(   N(   R   R%   R/   R   R!   t	   mimetoolst   Message(   R   (    (    R   t	   test_infoP   s    c         C   s    |  i |  i i ƒ  |  i ƒ d  S(   N(   R   R(   R   R"   R   (   R   (    (    R   t   test_geturlS   s    c         C   s1   x* |  i i ƒ  D] } |  i | |  i ƒ q Wd  S(   N(   R   R   R#   t   lineR(   R   (   R   R7   (    (    R   t	   test_iterV   s     (   R   t
   __module__t   __doc__R   R   R'   R)   R+   R-   R1   R2   R5   R6   R8   (    (    (    R   R	      s    										t   urlopen_HttpTestsc           B   s)   t  Z d  Z d „  Z d „  Z d „  Z RS(   s.   Test urlopen() opening a fake http connection.c            se   d t  i  f d „  ƒ  Y‰ d t i f ‡ ‡  d †  ƒ  Y} t i i t i j p t ‚ | t i _ d  S(   Nt
   FakeSocketc           B   s2   t  Z d „  Z d „  Z d  d „ Z d  d „ Z RS(   Nc         C   s   d  S(   N(    (   R   t   str(    (    R   t   sendallc   s    c         C   s   |  S(   N(   R   (   R   t   modet   name(    (    R   t   makefiled   s    c         C   s%   |  i o d Sn t i i |  | ƒ S(   NR*   (   R   t   closedt   StringIOR   t   amt(   R   RD   (    (    R   R   e   s    
 c         C   s%   |  i o d Sn t i i |  | ƒ S(   NR*   (   R   RB   RC   R   t   length(   R   RE   (    (    R   R   h   s    
 (   R   R9   R>   RA   t   NoneR   R   (    (    (    R   R<   b   s   		t   FakeHTTPConnectionc              s   t  Z ‡ ‡  d †  Z RS(   Nc            s   ˆ ˆ  ƒ |  _ d  S(   N(   R<   t   fakedataR   t   sock(   R   (   RH   R<   (    R   t   connectl   s    (   R   R9   RJ   (    (   R<   RH   (    R   RG   k   s   (   RC   R<   t   httplibt   HTTPConnectionRG   t   HTTPt   _connection_classt   AssertionError(   R   RH   RG   R<   (    (   RH   R<   R   t   fakehttpa   s    	c         C   s   t  i t  i _ d  S(   N(   RK   RL   RM   RN   (   R   (    (    R   t
   unfakehttpq   s    c         C   s^   |  i d ƒ z? t i d ƒ } |  i | i ƒ  d ƒ |  i | i ƒ  d ƒ Wd  |  i ƒ  Xd  S(   Ns   Hello!s   http://python.org/R*   (   R   RP   R   R   t   fpR(   R   RQ   (   R   RR   (    (    R   R)   t   s     (   R   R9   R:   RP   RQ   R)   (    (    (    R   R;   ^   s    		t   urlretrieve_FileTestsc           B   st   t  Z d  Z d „  Z d „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z RS(   s(   Test urllib.urlretrieve() on local filesc         C   sr   g  |  _ |  i t i ƒ d |  _ z0 t t i d ƒ } | i |  i ƒ | i	 ƒ  Wd  y | i	 ƒ  Wn n XXd  S(   Ns   testing urllib.urlretrieveR
   (
   R   t	   tempFilest   registerFileForCleanUpR   R   R   R   R   R   R   (   R   R   (    (    R   R   €   s    		   c         C   s3   x, |  i D]! } y t i | ƒ Wq
 q
 Xq
 Wd  S(   N(   R   RT   t   eachR   R   (   R   RV   (    (    R   R   •   s    
   c         C   s   d t  i t i i | ƒ ƒ S(   Ns	   file://%s(   R   t   pathname2urlR   t   patht   abspatht   filePath(   R   RZ   (    (    R   t   constructLocalFileUrl›   s    R*   c         C   sl   t  i ƒ  \ } } z: |  i | ƒ t i | d ƒ } | i	 | ƒ | i ƒ  Wd y | i ƒ  Wn n XX| S(   s¹   Creates a new temporary file containing the specified data,
        registers the file for deletion during the test fixture tear down, and
        returns the absolute path of the file.R
   N(   t   tempfilet   mkstempt   newFdt   newFilePathR   RU   R   t   fdopent   newFileR   t   dataR   (   R   Rb   R_   R^   Ra   (    (    R   t   createNewTempFilež   s        c         C   s   |  i i | ƒ d  S(   N(   R   RT   t   appendt   fileName(   R   Re   (    (    R   RU   ®   s    c         C   sQ   t  i d t i ƒ } |  i | d t i ƒ |  i t | d t	 i
 ƒ d ƒ d  S(   Ns   file:%si    i   sA   did not get a mimetools.Message instance as second returned value(   R   t   urlretrieveR   R   t   resultR   R(   R%   R/   R3   R4   (   R   Rg   (    (    R   t
   test_basic±   s    c         C   sÄ   d t  i } |  i | ƒ t i |  i t  i ƒ | ƒ } |  i	 | | d ƒ |  i
 t i i | ƒ d ƒ t | d ƒ } z | i ƒ  } | i ƒ  Wd  y | i ƒ  Wn n XX|  i	 |  i | ƒ d  S(   Ns   %s.2i    s   copy of the file was not madet   rb(   R   R   t   second_tempR   RU   R   Rf   R[   Rg   R(   R%   R   RX   t   existsR   R   R   R   R   (   R   R   Rg   R   Rj   (    (    R   t	   test_copyº   s     	   c            sO   d g ‡  d † } d t i } ˆ  i | ƒ t i ˆ  i t i ƒ | | ƒ d  S(   Ni    c            sl   ˆ  i t |  t ƒ ƒ ˆ  i t | t ƒ ƒ ˆ  i t | t ƒ ƒ ˆ  i |  | d ƒ | d d | d <d  S(   Ni    i   (	   R   R%   R/   t   countR0   t
   block_sizet
   total_sizeR(   t   count_holder(   Rm   Rn   Ro   Rp   (   R   (    R   t
   hooktesterÎ   s
    s   %s.2(	   Rq   R   R   Rj   R   RU   R   Rf   R[   (   R   Rj   Rq   (    (   R   R   t   test_reporthookÌ   s
    c         C   so   g  } | d „ } |  i ƒ  } t i |  i | ƒ t i	 | ƒ |  i
 t | ƒ d ƒ |  i
 | d d d ƒ d  S(   Nc         C   s   | i |  | | f ƒ d  S(   N(   t   _reportRd   Rm   Rn   Ro   (   Rm   Rn   Ro   Rs   (    (    R   Rq   Ü   s    i   i    i   (   t   reportRq   R   Rc   t   srcFileNameR   Rf   R[   R   R   R(   R   (   R   Rq   Rt   Ru   (    (    R   t   test_reporthook_0_bytesÙ   s    c         C   sŽ   g  } | d „ } |  i d d ƒ } t i |  i | ƒ t i	 | ƒ |  i
 t | ƒ d ƒ |  i
 | d d d ƒ |  i
 | d d d ƒ d  S(   Nc         C   s   | i |  | | f ƒ d  S(   N(   Rs   Rd   Rm   Rn   Ro   (   Rm   Rn   Ro   Rs   (    (    R   Rq   ê   s    t   xi   i   i    i   i    (   Rt   Rq   R   Rc   Ru   R   Rf   R[   R   R   R(   R   (   R   Rq   Rt   Ru   (    (    R   t   test_reporthook_5_bytesä   s    c         C   sŽ   g  } | d „ } |  i d d ƒ } t i |  i | ƒ t i	 | ƒ |  i
 t | ƒ d ƒ |  i
 | d d d ƒ |  i
 | d d d ƒ d  S(	   Nc         C   s   | i |  | | f ƒ d  S(   N(   Rs   Rd   Rm   Rn   Ro   (   Rm   Rn   Ro   Rs   (    (    R   Rq   ø   s    Rw   i   i   i    i   i    i   (   Rt   Rq   R   Rc   Ru   R   Rf   R[   R   R   R(   R   (   R   Rq   Rt   Ru   (    (    R   t   test_reporthook_8193_bytesó   s    (   R   R9   R:   R   R   R[   Rc   RU   Rh   Rl   Rr   Rv   Rx   Ry   (    (    (    R   RS   }   s    										t   QuotingTestsc           B   s;   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   sw  Tests for urllib.quote() and urllib.quote_plus()

    According to RFC 2396 ("Uniform Resource Identifiers), to escape a
    character you write it as '%' + <2 character US-ASCII hex value>.  The Python
    code of ``'%' + hex(ord(<character>))[2:]`` escapes a character properly.
    Case does not matter on the hex letters.

    The various character sets specified are:

    Reserved characters : ";/?:@&=+$,"
        Have special meaning in URIs and must be escaped if not being used for
        their special meaning
    Data characters : letters, digits, and "-_.!~*'()"
        Unreserved and do not need to be escaped; can be, though, if desired
    Control characters : 0x00 - 0x1F, 0x7F
        Have no use in URIs so must be escaped
    space : 0x20
        Must be escaped
    Delimiters : '<>#%"'
        Must be escaped
    Unwise : "{}|\^[]`"
        Must be escaped

    c         C   sw   d i  d d d d g ƒ } t i | ƒ } |  i | | d | | f ƒ t i | ƒ } |  i | | d | | f ƒ d  S(   NR*   t   ABCDEFGHIJKLMNOPQRSTUVWXYZt   abcdefghijklmnopqrstuvwxyzt
   0123456789s   _.-s   using quote(): %s != %ss   using quote_plus(): %s != %s(   t   joint   do_not_quoteR   t   quoteRg   R   R(   t
   quote_plus(   R   R   Rg   (    (    R   t   test_never_quote  s    c         C   s   |  i t i i d d ƒ d  S(   Ni    t   /(   R   R(   R   R€   t   func_defaults(   R   (    (    R   t   test_default_safe(  s    c         C   sn   d } t i | d | ƒ} |  i | | d | | f ƒ t i | d | ƒ} |  i | | d | | f ƒ d  S(   Ns   <>t   safes   using quote(): %s != %ss   using quote_plus(): %s != %s(   t   quote_by_defaultR   R€   Rg   R   R(   R   (   R   R‡   Rg   (    (    R   t	   test_safe,  s    c         C   s?  g  } t d ƒ D] } | t | ƒ q ~ } | i d ƒ | i t d ƒ ƒ d i | ƒ } x„ | D]| } t i	 | ƒ } |  i t | ƒ | d | t | ƒ | f ƒ t i | ƒ } |  i t | ƒ | d | t | ƒ | f ƒ qc W~ d } d } t i	 | ƒ } |  i | | d	 | | f ƒ |  i | | d
 | | f ƒ d  S(   Ni    s   <>#%"{}|\^[]`i   R*   s1   using quote(): %s should be escaped to %s, not %ss6   using quote_plus(): %s should be escapes to %s, not %ss   ab[]cds
   ab%5B%5Dcds   using quote(): %s != %ss   using quote_plus(): %s != %s(   t   _[1]t   ranget   numt   chrt   should_quoteRd   R~   R   R   R€   Rg   R   R(   R   R   t   partial_quotet   expected(   R   R   R   R‰   R‹   Rg   RŽ   R   (    (    R   t   test_default_quoting7  s(    - c         C   sê   t  i d ƒ } |  i | t d ƒ d | t d ƒ f ƒ t  i d ƒ } |  i | d d | ƒ d } | i d t d ƒ ƒ } t  i | ƒ } |  i | | d | | f ƒ | i d d ƒ } t  i | ƒ } |  i | | d | | f ƒ d  S(   Nt    s   using quote(): %s != %st   +s   using quote_plus(): %s != +s
   a b cd e fs   using quote_plus(): %s != %s(
   R   R€   Rg   R   R(   R   R   t   givent   replacet   expect(   R   R“   Rg   R•   (    (    R   t   test_quoting_spaceQ  s    (   R   R9   R:   R‚   R…   Rˆ   R   R–   (    (    (    R   Rz     s    				t   UnquotingTestsc           B   s2   t  Z d  Z d „  Z d „  Z d „  Z d „  Z RS(   sw   Tests for unquote() and unquote_plus()

    See the doc string for quoting_Tests for details on quoting and such.

    c         C   s  g  } x— t d ƒ D]‰ } t t | ƒ ƒ } t | ƒ } t i | ƒ } |  i | | d | | f ƒ t i | ƒ } |  i | | d | | f ƒ | i | ƒ q Wd i | ƒ } ~ t i | ƒ } |  i | i d ƒ d d | ƒ t i | ƒ } |  i | i d ƒ d d | ƒ d  S(	   Ni€   s   using unquote(): %s != %ss   using unquote_plus(): %s != %sR*   R    i   s-   using quote(): not all characters escaped; %ss/   using unquote(): not all characters escaped: %s(   t   escape_listRŠ   R‹   R   RŒ   R“   R•   R   t   unquoteRg   R   R(   t   unquote_plusRd   R~   t   escape_stringRm   (   R   Rg   R“   R‹   R•   R›   R˜   (    (    R   t   test_unquotingk  s(     c         C   sr   d t  d ƒ } d } t i | ƒ } |  i | | d | | f ƒ t i | ƒ } |  i | | d | | f ƒ d  S(   Ns   ab%sdt   ct   abcds   using quote(): %s != %ss   using unquote_plus(): %s != %s(	   R   R“   R•   R   R™   Rg   R   R(   Rš   (   R   R“   Rg   R•   (    (    R   t   test_unquoting_parts„  s    c         C   sz   d } | } t i | ƒ } |  i | | d | | f ƒ | i d d ƒ } t i | ƒ } |  i | | d | | f ƒ d  S(   Ns   are+there+spaces...s   using unquote(): %s != %sR’   R‘   s   using unquote_plus(): %s != %s(	   R“   R•   R   R™   Rg   R   R(   R”   Rš   (   R   Rg   R“   R•   (    (    R   t   test_unquoting_plus  s    c         C   s#   t  i d ƒ } |  i | d ƒ d  S(   Nu"   br%C3%BCckner_sapporo_20050930.docu    brÃƒÂ¼ckner_sapporo_20050930.doc(   R   R™   t   rR   R(   (   R   R¡   (    (    R   t   test_unquote_with_unicodeœ  s    (   R   R9   R:   Rœ   RŸ   R    R¢   (    (    (    R   R—   d  s
    			t   urlencode_Testsc           B   s;   t  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   Tests for urlencode()c   	      C   s  d d d g } t i | ƒ } x1 | D]) } |  i | | j d | | | f ƒ q% W|  i	 | i
 d ƒ d d | | i
 d ƒ f ƒ | i d ƒ } | | d } | | d } |  i | i ƒ  o
 | i ƒ  d	 | | f ƒ |  i	 t | ƒ d
 d d d | t | ƒ d
 d d f ƒ d S(   s  Helper method for testing different input types.

        'given' must lead to only the pairs:
            * 1st, 1
            * 2nd, 2
            * 3rd, 3

        Test cannot assume anything about order.  Docs make no guarantee and
        have possible dictionary input.

        s   1st=1s   2nd=2s   3rd=3s   testing %s: %s not found in %st   &i   s#   testing %s: expected 2 '&'s; got %si   s1   testing %s: '&' not located in proper place in %si   i   s5   testing %s: unexpected number of characters: %s != %sN(   t   expect_somewhereR   t	   urlencodeR“   Rg   R   R   R%   t	   test_typeR(   Rm   t   indext   amp_locationt   on_amp_leftt   on_amp_rightt   isdigitR   (	   R   R“   R§   R¥   R©   Rg   R   R«   Rª   (    (    R   t   help_inputtype£  s       c         C   s/   |  i h  d d <d d <d d <d ƒ d  S(   Nt   1stt   1t   2ndt   2t   3rdt   3s   using dict as input type(   R   R­   (   R   (    (    R   t   test_using_mappingÃ  s    $c         C   s   |  i d d	 d
 g d ƒ d  S(   NR®   R¯   R°   R±   R²   R³   s*   using sequence of two-item tuples as input(   s   1stR¯   (   s   2ndR±   (   s   3rdR³   (   R   R­   (   R   (    (    R   t   test_using_sequenceÈ  s    c         C   s‚   h  d d <} d t d ƒ t d ƒ f } t i | ƒ } |  i | | ƒ h  d d <} d } t i | ƒ } |  i | | ƒ d  S(   NR¤   t   =s   %s=%ss   key names   A bunch of plusess   key+name=A+bunch+of+pluses(   R“   R   R•   R   R¦   Rg   R   R(   (   R   R“   Rg   R•   (    (    R   t   test_quotingÍ  s    c         C   s×   h  d d d d g <} d t i t d d d g ƒ ƒ } t i | ƒ } |  i | | ƒ t i | t	 ƒ } x< | d D]0 } d | } |  i | | j d | | f ƒ qv W|  i | i d ƒ d d	 | i d ƒ ƒ d  S(
   Nt   sequenceR¯   R±   R³   s   sequence=%ss   %s not found in %sR¤   i   s   Expected 2 '&'s, got %s(   R“   R   R   R=   R•   R¦   Rg   R   R(   t   Truet   valueR%   Rm   (   R   Rº   R“   Rg   R•   (    (    R   t
   test_doseqØ  s    " 
(   R   R9   R:   R­   R´   Rµ   R·   R»   (    (    (    R   R£      s    	 			t   Pathname_Testsc           B   s    t  Z d  Z d „  Z d „  Z RS(   s&   Test pathname2url() and url2pathname()c         C   s}   t  i i d d d d ƒ } d } t i | ƒ } |  i	 | | d | | f ƒ t i
 | ƒ } |  i	 | | d | | f ƒ d  S(   Nt   partst   oft   aRX   s   parts/of/a/paths   pathname2url() failed; %s != %ss   url2pathame() failed; %s != %s(   R   RX   R~   t   expected_patht   expected_urlR   RW   Rg   R   R(   t   url2pathname(   R   RÀ   Rg   RÁ   (    (    R   Rh   é  s    c         C   s(  t  i i d d d ƒ } d t i d ƒ } t i | ƒ } |  i
 | | d | | f ƒ | } t i | ƒ } |  i
 | | d | | f ƒ t  i i d d ƒ } d	 t i d ƒ } t i | ƒ } |  i
 | | d | | f ƒ d
 } t  i i d d ƒ } t i | ƒ } |  i
 | | d | | f ƒ d  S(   Nt   needss   quot=ingt   heres   needs/%s/heres   pathname2url() failed; %s != %ss   url2pathname() failed; %s != %ss	   make suret   using_quotes   %s/using_quotes   make+sure/using_unquotes	   make+suret   using_unquote(   R   RX   R~   R“   R   R€   R•   RW   Rg   R   R(   RÂ   (   R   R“   Rg   R•   (    (    R   R·   ö  s&    (   R   R9   R:   Rh   R·   (    (    (    R   R¼   æ  s    	c           C   s#   t  i t t t t t t t ƒ d  S(   N(	   R   t   run_unittestR	   R;   RS   Rz   R—   R£   R¼   (    (    (    R   t	   test_main  s    	t   __main__(   R:   R   RK   t   unittestt   testR   R   R3   R\   RC   R   t   TestCaseR	   R;   RS   Rz   R—   R£   R¼   RÈ   R   (   R   R3   RK   R   R£   R	   RC   R\   Rz   RÊ   R—   R   RS   R;   RÈ   R¼   R   (    (    R   t   ?   s&   								K„c<F-	