ó
ç'ÊUc           @   sŽ  d  d l  Z  d  d l m Z d  d l m Z d  d l m Z m Z m Z m	 Z	 m
 Z
 m Z d  d l m Z m Z d  d l m Z d  d l m Z d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ e e d „ Z d e  j f d „  ƒ  YZ d e  j f d „  ƒ  YZ d e  j f d „  ƒ  YZ d e  j f d „  ƒ  YZ e d k rŠe  j  ƒ  n  d S(   iÿÿÿÿN(   t   partial(   t
   ItemLoader(   t   Joint   Identityt	   TakeFirstt   Composet
   MapComposet
   SelectJmes(   t   Itemt   Field(   t   Selector(   t   HtmlResponset   NameItemc           B   s   e  Z e ƒ  Z RS(    (   t   __name__t
   __module__R	   t   name(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s   t   TestItemc           B   s   e  Z e ƒ  Z e ƒ  Z RS(    (   R   R   R	   t   urlt   summary(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s   	t   NameItemLoaderc           B   s   e  Z e Z RS(    (   R   R   R   t   default_item_class(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s   t   TestItemLoaderc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s
   |  j  ƒ  S(   N(   t   title(   t   v(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   <lambda>   s    (   R   R   R   t   name_in(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s   t   DefaultedItemLoaderc           B   s   e  Z e d  „  ƒ Z RS(   c         C   s   |  d  S(   Niÿÿÿÿ(    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s    (   R   R   R   t   default_input_processor(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR      s   c         C   s   d | k r | d S|  S(   Nt   key(    (   t   valuet   othert   loader_context(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   processor_with_args#   s    t   BasicItemLoaderTestc           B   s  e  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 d „  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 d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   t  ƒ  } d | d <t d | ƒ } | j d d ƒ | j ƒ  } | | k sP t ‚ |  j | d d ƒ |  j | d d g ƒ d  S(   Nu   lalaR   t   itemR   u   marta(   R   R   t	   add_valuet	   load_itemt   AssertionErrort   assertEqual(   t   selft   it   ilR"   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt#   test_load_item_using_default_loader+   s    	
c         C   s@   t  ƒ  } | j d d ƒ | j ƒ  } |  j | d d g ƒ d  S(   NR   u   martau   Marta(   R   R#   R$   R&   (   R'   R)   R"   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt"   test_load_item_using_custom_loader5   s    	c            sÝ   d „  ‰  d t  f ‡  f d †  ƒ  Y} d } d } d } | d i  ƒ } | j d | g d	 | ƒ| j d
 d ƒ | j d d g ƒ |  j | j ƒ  i d d
 6d d 6ƒ | j d | g d	 | ƒ|  j | j ƒ  d d ƒ d  S(   Nc         S   s   |  j  ƒ  r |  Sd  S(   N(   t   isdigit(   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   validate_sku<   s    t   MyLoaderc              s;   e  Z e d  „  ƒ Z e e ƒ  e ƒ Z e e ƒ  ˆ  ƒ Z RS(   c         S   s   |  d S(   Ni    (    (   t   vs(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   B   s    (   R   R   R   t   name_outR   t   floatt	   price_outt   sku_out(    (   R-   (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR.   A   s   u	   SKU: 1234u   SKU: not availables	   SKU: (.+)R"   t   skut   reR   u    t   priceu   0g        u   1234(   R   R#   R&   R$   t   replace_value(   R'   R.   t   valid_fragmentt   invalid_fragmentt   sku_reR)   (    (   R-   s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt'   test_load_item_ignore_none_field_values;   s    	c         C   s©   d t  f d „  ƒ  Y} | d i  ƒ } | j d d ƒ | j d d ƒ |  j | j ƒ  i d d 6d d 6ƒ | d i  ƒ } | j d d ƒ |  j | j ƒ  i d d 6ƒ d  S(	   NR.   c           B   s   e  Z e ƒ  Z d  „  Z RS(   c         S   s   |  j  d ƒ p d | d S(   NR   t    i    (   t   get_output_value(   R'   t   values(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   img_url_out\   s    (   R   R   R   t   url_outR?   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR.   Y   s   	R"   R   s   http://example.com/t   img_urls   1234.pngs   http://example.com/1234.png(   R   R#   R&   R$   (   R'   R.   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_self_referencing_loaderX   s    c         C   s  t  ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d d g ƒ |  j | j d ƒ d d g ƒ | j d i d d 6ƒ |  j | j d ƒ i d d 6g ƒ | j d  d	 d
 „  ƒ |  j | j d ƒ d d d	 g ƒ d  S(   NR   u   martau   Martau   pepeu   PepeR   i   R   u   Jimc         S   s   i |  d 6S(   NR   (    (   t   x(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   z   s    (   R   R#   R&   t   get_collected_valuesR=   t   None(   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_add_valuem   s    	#c         C   s9   t  ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR   i    (   R   R#   R&   RD   (   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_add_zero}   s    	c         C   sÏ   t  ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ |  j | j d ƒ d g ƒ | j d  d d „  ƒ |  j | j d ƒ d g ƒ d  S(   NR   u   martau   Martau   pepeu   Pepeu   Jimc         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   ‹   s    (   R   R7   R&   RD   R=   RE   (   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_value‚   s    	c         C   sþ   t  ƒ  } |  j d | j d d g t ƒ  t j ƒ ƒ |  j d d g | j d d g d d ƒƒ |  j d | j d d g t ƒ  d d ƒƒ | j d d d g t ƒ  d d ƒ|  j d g | j d ƒ ƒ | j d d d d ƒ|  j d g | j d ƒ ƒ d  S(	   Nu   FOOu   foou   baru   name:foou   name:barR5   u
   name:(.*)$R   (	   R   R&   t	   get_valueR   t   unicodet   upperR#   RD   R7   (   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_get_valueŽ   s    	+++"c         C   sH  d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | ƒ  } | j d d d g ƒ |  j | j d ƒ d g ƒ | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | ƒ  } | j d d d g ƒ |  j | j d ƒ d g ƒ | ƒ  } | j d d ƒ | j d d d g ƒ |  j | j d ƒ d d g ƒ d  S(   Nt   NameFirstItemLoaderc           B   s   e  Z e ƒ  Z RS(    (   R   R   R   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRM   š   s   R   u   martau   joseu   pedro(   R   R#   R&   RD   R7   (   R'   RM   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt"   test_iter_on_input_processor_input™   s"    					c         C   sP   d „  } t  | t j ƒ } |  j | d d d d d g ƒ d d d	 d
 g ƒ d  S(   Nc         S   s   |  d k r d  S|  S(   Nt   world(   RE   (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   filter_world±   s    t   helloRO   t   thist   ist   scrapyt   HELLOt   THISt   ISt   SCRAPY(   R   t   strRK   R&   (   R'   RP   t   proc(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_map_compose_filter°   s    	c         C   sr   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | j ƒ  } |  j | d d g ƒ d  S(   NR   c           B   s   e  Z e d  „  d „  ƒ Z RS(   c         S   s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   º   s    c         S   s   |  d  S(   Niÿÿÿÿ(    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   º   s    (   R   R   R   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   ¹   s   R   u   martau   Mart(   R   R#   R&   R=   R$   (   R'   R   R)   R"   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_map_compose_filter_multil¸   s    	c         C   s9   t  ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR   u   martau   mart(   R   R#   R&   R=   (   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_default_input_processorÂ   s    	c         C   sO   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   InheritDefaultedItemLoaderc           B   s   e  Z RS(    (   R   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR^   È   s   R   u   martau   mart(   R   R#   R&   R=   (   R'   R^   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt&   test_inherited_default_input_processorÇ   s    	c         C   sò   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d	 | f d
 „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   ChildItemLoaderc           B   s   e  Z e d  „  ƒ Z RS(   c         S   s
   |  j  ƒ  S(   N(   t   lower(   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   Ñ   s    (   R   R   R   t   url_in(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   Ð   s   R   u   HTTP://scrapy.ORGu   http://scrapy.orgR   u   martau   Martat   ChildChildItemLoaderc           B   s&   e  Z e d  „  ƒ Z e d „  ƒ Z RS(   c         S   s
   |  j  ƒ  S(   N(   RK   (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   Ú   s    c         S   s   |  S(   N(    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   Û   s    (   R   R   R   Rb   t
   summary_in(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRc   Ù   s   u   HTTP://SCRAPY.ORG(   R   R#   R&   R=   (   R'   R`   R)   Rc   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt    test_input_processor_inheritanceÏ   s    		c         C   sO   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   IdentityDefaultedItemLoaderc           B   s   e  Z e ƒ  Z RS(    (   R   R   R   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRf   ä   s   R   u   marta(   R   R#   R&   R=   (   R'   Rf   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_empty_map_composeã   s    	c         C   sO   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NRf   c           B   s   e  Z e ƒ  Z RS(    (   R   R   R   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRf   ì   s   R   u   marta(   R   R#   R&   R=   (   R'   Rf   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_identity_input_processorë   s    	c         C   sO   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR`   c           B   s   e  Z e e j e j ƒ Z RS(    (   R   R   R   R   R   RJ   t   swapcase(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   ô   s   R   u   martau   mARTA(   R   R#   R&   R=   (   R'   R`   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt#   test_extend_custom_input_processorsó   s    	c         C   sO   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   ChildDefaultedItemLoaderc           B   s   e  Z e e j e j ƒ Z RS(    (   R   R   R   R   R   RJ   Ri   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRk   ü   s   R   u   martau   MART(   R   R#   R&   R=   (   R'   Rk   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt$   test_extend_default_input_processorsû   s    	c         C   s   t  ƒ  } | j d d d g ƒ |  j | j d ƒ d d g ƒ d t  f d „  ƒ  Y} | ƒ  } | j d d d g ƒ |  j | j d ƒ d ƒ d  S(	   NR   u   maru   tau   Maru   Tat   TakeFirstItemLoaderc           B   s   e  Z d  j Z RS(   u    (   R   R   t   joinR0   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRm     s   u   Mar Ta(   R   R#   R&   R=   (   R'   R)   Rm   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt$   test_output_processor_using_function  s    		c         C   s  d t  f d „  ƒ  Y} | ƒ  } | j d d g ƒ y t d ƒ Wn t k
 ra } t | ƒ } n Xd  } y | j ƒ  Wn t k
 r‘ } | } n Xt | t ƒ s§ t	 ‚ t | ƒ } d | k sË t	 | ƒ ‚ d | k sã t	 | ƒ ‚ d | k sû t	 | ƒ ‚ | | k st	 | ƒ ‚ d  S(   NR   c           B   s   e  Z e Z e e ƒ Z RS(    (   R   R   R   R   R   R1   R0   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR     s   R   u   $10s   $10t
   ValueError(
   R   R#   R1   t	   ExceptionRY   RE   R$   t
   isinstanceRp   R%   (   R'   R   R)   t   et   expected_exc_strt   exct   s(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_output_processor_error  s$    	
c         C   sÞ   t  ƒ  } | j d d d g ƒ |  j | j d ƒ d d g ƒ d t  f d „  ƒ  Y} | ƒ  } | j d d d g ƒ |  j | j d ƒ d ƒ d t  f d	 „  ƒ  Y} | ƒ  } | j d d d g ƒ |  j | j d ƒ d
 ƒ d  S(   NR   u   maru   tau   Maru   TaRm   c           B   s   e  Z e ƒ  Z RS(    (   R   R   R   R0   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRm   ,  s   u   Mar Tac           B   s   e  Z e d  ƒ Z RS(   s   <br>(   R   R   R   R0   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRm   3  s   u	   Mar<br>Ta(   R   R#   R&   R=   (   R'   R)   Rm   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt#   test_output_processor_using_classes'  s    			c         C   s–   t  ƒ  } | j d d d g ƒ |  j | j d ƒ d d g ƒ d t  f d „  ƒ  Y} | ƒ  } | j d d d g ƒ |  j | j d ƒ d d g ƒ d  S(   NR   u   maru   tau   Maru   Tat   LalaItemLoaderc           B   s   e  Z e ƒ  Z RS(    (   R   R   R   t   default_output_processor(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRy   ?  s   (   R   R#   R&   R=   (   R'   R)   Ry   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_default_output_processor:  s    		c         C   s{   d t  f d „  ƒ  Y} | ƒ  } | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR`   c           B   s   e  Z e e d  d ƒZ RS(   R   u   val(   R   R   R   R    Rb   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   G  s   R   u   textt   valu   text2(   R   R#   R&   R=   R7   (   R'   R`   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt"   test_loader_context_on_declarationF  s    	c         C   s   d t  f d „  ƒ  Y} | d d ƒ } | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(	   NR`   c           B   s   e  Z e e ƒ Z RS(    (   R   R   R   R    Rb   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   Q  s   R   u   valR   u   textR|   u   text2(   R   R#   R&   R=   R7   (   R'   R`   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt$   test_loader_context_on_instantiationP  s    c         C   sˆ   d t  f d „  ƒ  Y} | ƒ  } d | j d <| j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(	   NR`   c           B   s   e  Z e e ƒ Z RS(    (   R   R   R   R    Rb   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   [  s   u   valR   R   u   textR|   u   text2(   R   t   contextR#   R&   R=   R7   (   R'   R`   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_loader_context_on_assignZ  s    	c            sŸ   d „  ‰  d t  f ‡  f d †  ƒ  Y} t d d ƒ } | d | ƒ } | j d d ƒ |  j | j d ƒ d g ƒ | j d d	 ƒ |  j | j d ƒ d g ƒ d  S(
   Nc         S   s   | d d S(   NR"   R   (    (   R   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt	   processorf  s    R`   c              s   e  Z e ˆ  ƒ Z RS(    (   R   R   R   Rb   (    (   R   (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR`   i  s   R   t   martaR"   R   u   textu   text2(   R   R   R#   R&   R=   R7   (   R'   R`   t   itR)   (    (   R   s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt-   test_item_passed_to_input_processor_functionse  s    	c         C   s,   t  ƒ  } |  j t | j d d d g ƒ d  S(   Nt   wrong_fieldu   lalau   lolo(   R   t   assertRaisest   KeyErrorR#   (   R'   R)   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_add_value_on_unknown_fields  s    	c         C   sr   d t  f d „  ƒ  Y} | ƒ  } | j d d d g ƒ |  j | j d ƒ d ƒ | j ƒ  } |  j | d d ƒ d  S(   NR   c           B   s#   e  Z e d  „  d „  d „  ƒ Z RS(   c         S   s   |  d S(   Ni    (    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   y  s    c         S   s
   |  j  ƒ  S(   N(   R   (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   y  s    c         S   s   |  d  S(   Niÿÿÿÿ(    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   y  s    (   R   R   R   R0   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   x  s   R   u   martau   otheru   Mart(   R   R#   R&   R=   R$   (   R'   R   R)   R"   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_compose_processorw  s    	c            sÅ   d  d  d  d „ ‰  d t f ‡  f d †  ƒ  Y} | ƒ  } | j d d d g ƒ | j d d d g ƒ | j d d d g ƒ | j ƒ  } |  j | d d	 ƒ |  j | d d
 ƒ |  j | d d ƒ d  S(   Nc         S   sM   | d  k	 r | j |  ƒ S| r< d | k r< | d j |  ƒ Sd j |  ƒ Sd  S(   Nt   sepR<   (   RE   Rn   (   R>   RŠ   R   t   ignored(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyRn   ‚  s
    R   c              sW   e  Z e e ˆ  d  d ƒƒ Z e e ˆ  d i d d  6ƒƒ Z e e ˆ  d d ƒƒ Z RS(   RŠ   t   +R   t   .R‹   t   foo(   R   R   R   R    R0   R@   t   summary_out(    (   Rn   (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   Š  s   R   u   rabbitu   holeR   R   u   rabbit+holeu   rabbit.holeu
   rabbithole(   RE   R   R#   R$   R&   (   R'   R   R)   R"   (    (   Rn   s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_partial_processor  s    	(   R   R   R*   R+   R;   RB   RF   RG   RH   RL   RN   R[   R\   R]   R_   Re   Rg   Rh   Rj   Rl   Ro   Rw   Rx   R{   R}   R~   R€   R„   Rˆ   R‰   R   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR!   )   s:   	
										
												
	
				
t   ProcessorsTestc           B   s5   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sT   t  ƒ  } |  j | d  d d d g ƒ d ƒ |  j | d  d d d d g ƒ d ƒ d  S(   NR<   RQ   RO   i    (   R   R&   RE   (   R'   RZ   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_take_first›  s    	"c         C   s;   t  ƒ  } |  j | d  d d d g ƒ d  d d d g ƒ d  S(   NR<   RQ   RO   (   R   R&   RE   (   R'   RZ   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_identity   s    	c         C   s‰   t  ƒ  } |  j t | d  d d d g ƒ |  j | d d d g ƒ d ƒ |  j | d d g ƒ d ƒ |  j t | d d g ƒ t ƒ ƒ d  S(   NR<   RQ   RO   u    hello worldu   hello world(   R   R†   t	   TypeErrorRE   R&   t   assert_Rr   RJ   (   R'   RZ   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt	   test_join¥  s
    	c         C   s‚   t  d „  t j ƒ } |  j | d d g ƒ d ƒ t  t j ƒ } |  j | d  ƒ d  ƒ t  t j d t ƒ} |  j t | d  ƒ d  S(   Nc         S   s   |  d S(   Ni    (    (   R   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   ­  s    RQ   RO   RU   t   stop_on_none(   R   RY   RK   R&   RE   t   FalseR†   R”   (   R'   RZ   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_compose¬  s    c         C   sP   d „  } t  | t j ƒ } |  j | d d d d d g ƒ d d d	 d
 g ƒ d  S(   Nc         S   s   |  d k r d  S|  S(   NRO   (   RE   (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   µ  s    u   hellou   worldu   thisu   isu   scrapyu   HELLOu   THISu   ISu   SCRAPY(   R   RJ   RK   R&   (   R'   RP   RZ   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_mapcompose´  s    	(   R   R   R’   R“   R–   R™   Rš   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR‘   ™  s
   				t   SelectortemLoaderTestc           B   s­   e  Z e d  d d d ƒ 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 d „  Z d „  Z d „  Z d „  Z RS(   R   R<   t   bodysÜ   
    <html>
    <body>
    <div id="id">marta</div>
    <p>paragraph</p>
    <a href="http://www.scrapy.org">homepage</a>
    <img src="/images/logo.png" width="244" height="65" alt="Scrapy">
    </body>
    </html>
    c         C   s    t  ƒ  } |  j | j d  ƒ d  S(   N(   R   R&   t   selectorRE   (   R'   t   l(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_constructorÇ  s    	c         C   s   t  ƒ  } |  j t | j d d ƒ |  j t | j d d ƒ |  j t | j d ƒ |  j t | j d d ƒ |  j t | j d d ƒ |  j t | j d ƒ d  S(   NR   s	   //a/@hrefR   s   #name::text(	   R   R†   t   RuntimeErrort	   add_xpatht   replace_xpatht	   get_xpatht   add_csst   replace_csst   get_css(   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_constructor_errorsË  s    	c         C   sd   t  d d ƒ } t d | ƒ } |  j | j | k ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   textu*   <html><body><div>marta</div></body></html>R   R   s   //div/text()u   Marta(   R
   R   R•   R   R¡   R&   R=   (   R'   t   selRž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_constructor_with_selectorÔ  s
    c         C   sd   t  d d ƒ } t d | ƒ } |  j | j | k ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR¨   u*   <html><body><div>marta</div></body></html>R   R   s	   div::textu   Marta(   R
   R   R•   R   R¤   R&   R=   (   R'   R©   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt"   test_constructor_with_selector_cssÜ  s
    c         C   sR   t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   Nt   responseR   s   //div/text()u   Marta(   R   R¬   R•   R   R¡   R&   R=   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_constructor_with_responseä  s    c         C   sÜ   t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d d g ƒ | j d d	 ƒ |  j | j d ƒ d d
 g ƒ d  S(   NR¬   R   s	   div::textu   MartaR   s   a::attr(href)u   http://www.scrapy.orgs   //div/text()s
   //img/@srcu   /images/logo.png(   R   R¬   R•   R   R¤   R&   R=   R¡   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt"   test_constructor_with_response_cssë  s    c         C   sH   t  d |  j ƒ } | j d d d d ƒ|  j | j d ƒ d g ƒ d  S(   NR¬   R   s   //div/text()R5   t   mau   Ma(   R   R¬   R¡   R&   R=   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_add_xpath_reü  s    c         C   s³   t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d d g ƒ |  j | j d ƒ d d g ƒ d  S(   NR¬   R   s   //div/text()u   Martas
   //p/text()u	   Paragrapht   Marta(   R   R¬   R•   R   R¡   R&   R=   R¢   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_xpath  s    c         C   s›   t  d |  j ƒ } |  j | j d ƒ d g ƒ |  j | j d t ƒ  ƒ d ƒ |  j | j d t ƒ  d d ƒd ƒ |  j | j d d g ƒ d d g ƒ d  S(	   NR¬   s
   //p/text()u	   paragraphR5   t   pau   pas   //div/text()R‚   (   R   R¬   R&   R£   R   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_get_xpath  s
    %c         C   s†   t  d |  j ƒ } | j d  d t ƒ  d „  ƒ |  j | j d ƒ d g ƒ | j d  d t ƒ  d „  ƒ |  j | j d ƒ d g ƒ d  S(	   NR¬   s   //div/text()c         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR     s    R   u   Martas
   //p/text()c         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR     s    u	   Paragraph(   R   R¬   R¡   RE   R   R&   R=   R¢   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_xpath_multi_fields  s
    c         C   s„   t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d d d ƒ|  j | j d ƒ d g ƒ d  S(   NR¬   R   s   //div/text()u   MartaR5   R¯   u   Ma(   R   R¬   R•   R   R¡   R&   R=   R¢   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_xpath_re  s    c         C   sz   t  d |  j ƒ } | j d d d d ƒ|  j | j d ƒ d g ƒ | j d d d d	 ƒ|  j | j d ƒ d
 g ƒ d  S(   NR¬   R   s	   div::textR5   R¯   u   MaR   s   a::attr(href)s   http://(.+)u   www.scrapy.org(   R   R¬   R¤   R&   R=   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_add_css_re#  s
    c         C   s  t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d d g ƒ |  j | j d ƒ d d g ƒ | j d d	 d
 d ƒ|  j | j d ƒ d g ƒ | j d d ƒ |  j | j d ƒ d g ƒ d  S(   NR¬   R   s	   div::textu   Martas   p::textu	   ParagraphR±   R   s   a::attr(href)R5   s   http://(.+)u   www.scrapy.orgs   img::attr(src)u   /images/logo.png(   R   R¬   R•   R   R¤   R&   R=   R¥   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_css+  s    c         C   sÀ   t  d |  j ƒ } |  j | j d ƒ d g ƒ |  j | j d t ƒ  ƒ d ƒ |  j | j d t ƒ  d d ƒd ƒ |  j | j d d g ƒ d d g ƒ |  j | j d	 d
 g ƒ d d g ƒ d  S(   NR¬   s   p::textu	   paragraphR5   R³   u   pas	   div::textR‚   s   a::attr(href)s   img::attr(src)u   http://www.scrapy.orgu   /images/logo.png(   R   R¬   R&   R¦   R   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_get_css;  s    %%c         C   sö   t  d |  j ƒ } | j d  d t ƒ  d „  ƒ |  j | j d ƒ d g ƒ | j d  d t ƒ  d „  ƒ |  j | j d ƒ d g ƒ | j d  d	 t ƒ  d
 „  ƒ |  j | j d ƒ d g ƒ | j d  d t ƒ  d „  ƒ |  j | j d ƒ d g ƒ d  S(   NR¬   s	   div::textc         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   G  s    R   u   Martas   p::textc         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   I  s    u	   Paragraphs   a::attr(href)c         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   L  s    R   u   http://www.scrapy.orgs   img::attr(src)c         S   s   i |  d 6S(   NR   (    (   RC   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR   N  s    u   /images/logo.png(   R   R¬   R¤   RE   R   R&   R=   R¥   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_css_multi_fieldsE  s    c         C   s„   t  d |  j ƒ } |  j | j ƒ | j d d ƒ |  j | j d ƒ d g ƒ | j d d d d ƒ|  j | j d ƒ d g ƒ d  S(   NR¬   R   s   a::attr(href)u   http://www.scrapy.orgR5   s   http://www\.(.+)u
   scrapy.org(   R   R¬   R•   R   R¤   R&   R=   R¥   (   R'   Rž   (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_replace_css_reQ  s    (   R   R   R   R¬   RŸ   R§   Rª   R«   R­   R®   R°   R²   R´   Rµ   R¶   R·   R¸   R¹   Rº   R»   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR›   »  s$   																	
	t   SelectJmesTestCasec           B   sä   e  Z i d  i i d d 6d 6d f d 6d i i d d 6d 6d f d 6d i i d d 6d 6i d d 6f d 6d  i i d d 6d 6d f d 6d	 i i i d
 d 6i d d 6g d 6d 6d
 d g f d 6d d d g d f d 6Z d „  Z RS(   s   foo.bart   bazt   barRŽ   t   simples   foo.bar.bazt   invalidt	   top_levelt   double_vs_single_quote_strings   foo.bar[*].namet   oneR   t   twot   dicts   [1]i   i   t   listc      	   C   se   x^ |  j  D]S } |  j  | \ } } } t | ƒ | ƒ } |  j | | d d j | | | ƒ ƒq
 Wd  S(   Nt   msgs   test "{}" got {} expected {}(   t   test_list_equalsR   R&   t   format(   R'   Rž   t   exprt	   test_listt   expectedt   test(    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   test_outputh  s    N(   R   R   RE   RÈ   RÎ   (    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyR¼   Z  s   %%t   __main__(!   t   unittestt	   functoolsR    t   scrapy.loaderR   t   scrapy.loader.processorsR   R   R   R   R   R   t   scrapy.itemR   R	   t   scrapy.selectorR
   t   scrapy.httpR   R   R   R   R   R   RE   R    t   TestCaseR!   R‘   R›   R¼   R   t   main(    (    (    s5   /home/travis/build/scrapy/scrapy/tests/test_loader.pyt   <module>   s&   .ÿ q"Ÿ