ó
ìŠ'Gc           @   s½  d  d l  Z  d  d l Z d  d l m Z m Z m Z d e  j f d „  ƒ  YZ yd  d l	 m
 Z
 m Z e Z e r± y2 d  d l Z e j d ƒ d d k r£ e Z n  Wq± q± Xn  e ryD e
 d d	 g d
 e d e ƒZ e j ƒ  e j d k rú e Z n  Wqe k
 rqXn  e r.e j d ƒ e ` n  y d  d l Z Wn  e j d ƒ e ` e ` n XWnT e k
 r¸e j d ƒ x7 e e ƒ D]% Z e j d ƒ rŒe e e ƒ qŒqŒWn Xd S(   iÿÿÿÿN(   t   shellt   configt   loggert   FilterTestsc           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 RS(   c         C   sÄ   d } d } t  j | t | ƒ j ƒ  d d ƒ} t j j j | ƒ } g  | j d ƒ D] } | j	 d ƒ ^ qU } |  j
 d | d ƒ |  j
 d	 | d
 ƒ |  j
 d | d ƒ |  j
 d | d ƒ d  S(   Ns   tests/data/filter/coral_cdn.xmls   coral_cdn_filter.pyt   modet   filtert   imgt   srcs(   http://example.com.nyud.net:8080/foo.pngi    s-   http://example.com.1234.nyud.net:8080/foo.pngi   s,   http://u:p@example.com.nyud.net:8080/foo.pngi   s1   http://u:p@example.com.1234.nyud.net:8080/foo.pngi   (   R    t   runt   opent   readt   xmlt   domt   minidomt   parseStringt   getElementsByTagNamet   getAttributet   assertEqual(   t   selft   testfileR   t   outputR   R   t   imgsrcs(    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_coral_cdn   s    $+c         C   s   t  j d ƒ |  j ƒ  d  S(   Ns$   tests/data/filter/excerpt-images.ini(   R   t   loadt   verify_images(   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_excerpt_images1   s    c         C   s   t  j d ƒ |  j ƒ  d  S(   Ns%   tests/data/filter/excerpt-images2.ini(   R   R   R   (   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_excerpt_images2   s    c   
      C   sõ   d } t  | ƒ j ƒ  } x, t j ƒ  D] } t j | | d d ƒ} q% Wt j j j	 | ƒ } | j
 d ƒ d } | j
 d ƒ } g  | D] } | j d ƒ ^ q… } g  | D] } | j j ^ q§ }	 |  j d d	 d
 g | ƒ |  j d d d g |	 ƒ d  S(   Ns$   tests/data/filter/excerpt-images.xmlR   R   s   planet:excerpti    t   at   hreft   innert   outer1t   outer2t   bars   <img>(   R	   R
   R   t   filtersR    R   R   R   R   R   R   R   t	   lastChildt	   nodeValueR   (
   R   R   R   R   R   t   excerptt   anchorsR   t   hrefst   texts(    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyR      s    "c         C   s¡   d } t  j d ƒ t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q2 Wt j j	 j
 | ƒ } | j d ƒ d } |  j d d d	 | j j j ƒ d  S(
   Ns)   tests/data/filter/excerpt-lorem-ipsum.xmls)   tests/data/filter/excerpt-lorem-ipsum.iniR   R   s   planet:excerpti    u)   Lorem ipsum dolor sit amet, consectetuer u7   adipiscing elit. Nullam velit. Vivamus tincidunt, erat u   in â€¦(   R   R   R	   R
   R!   R    R   R   R   R   R   R   R   t
   firstChildR#   (   R   R   R   R   R   R$   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_excerpt_lorem_ipsum+   s    c         C   s·   d } t  j d ƒ t  j j d d d ƒ t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} qH Wt	 j
 j j | ƒ } | j d ƒ d	 } |  j d
 d d | j j j ƒ d  S(   Ns)   tests/data/filter/excerpt-lorem-ipsum.xmls)   tests/data/filter/excerpt-lorem-ipsum.inis
   excerpt.pyt   targets   atom:summaryR   R   t   summaryi    u)   Lorem ipsum dolor sit amet, consectetuer u7   adipiscing elit. Nullam velit. Vivamus tincidunt, erat u   in â€¦(   R   R   t   parsert   setR	   R
   R!   R    R   R   R   R   R   R   R   R(   R#   (   R   R   R   R   R   R$   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt    test_excerpt_lorem_ipsum_summary9   s    c         C   s™   d } t  j d ƒ t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q2 Wt j j	 j
 | ƒ } | j d ƒ d } |  j d | j j j ƒ d  S(   Ns#   tests/data/filter/stripAd-yahoo.xmls#   tests/data/filter/stripAd-yahoo.iniR   R   t   contenti    u   before--after(   R   R   R	   R
   R!   R    R   R   R   R   R   R   R   R(   R#   (   R   R   R   R   R   R$   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_stripAd_yahooH   s    	c         C   s   t  j d ƒ |  j ƒ  d  S(   Ns"   tests/data/filter/xpath-sifter.ini(   R   R   t   verify_xpath(   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_xpath_filter1U   s    c         C   s   t  j d ƒ |  j ƒ  d  S(   Ns#   tests/data/filter/xpath-sifter2.ini(   R   R   R1   (   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_xpath_filter2Y   s    c         C   s²   d } t  | ƒ j ƒ  } x, t j ƒ  D] } t j | | d d ƒ} q% W|  j d | ƒ d } t  | ƒ j ƒ  } x, t j ƒ  D] } t j | | d d ƒ} q| W|  j d | ƒ d  S(   Ns"   tests/data/filter/category-one.xmlR   R   t    s"   tests/data/filter/category-two.xml(   R	   R
   R   R!   R    R   R   t   assertNotEqual(   R   R   R   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyR1   ]   s    c         C   s¿   t  j d ƒ d } t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q2 W|  j d | ƒ d } t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q‰ W|  j d | ƒ d  S(   Ns#   tests/data/filter/regexp-sifter.inis"   tests/data/filter/category-one.xmlR   R   R4   s"   tests/data/filter/category-two.xml(	   R   R   R	   R
   R!   R    R   R   R5   (   R   R   R   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_regexp_filtern   s    c         C   s¿   t  j d ƒ d } t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q2 W|  j d | ƒ d } t | ƒ j ƒ  } x, t  j ƒ  D] } t j | | d d ƒ} q‰ W|  j d | ƒ d  S(   Ns$   tests/data/filter/regexp-sifter2.inis"   tests/data/filter/category-one.xmlR   R   R4   s"   tests/data/filter/category-two.xml(	   R   R   R	   R
   R!   R    R   R5   R   (   R   R   R   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_regexp_filter2   s    c         C   sl   d } d } t  j | t | ƒ j ƒ  d d ƒ} |  j | j d ƒ d k  ƒ |  j | j d ƒ d k ƒ d  S(   Ns   tests/data/filter/index.htmls(   xhtml2html.plugin?quote_attr_values=TrueR   R   s   />i    s	   </script>(   R    R   R	   R
   t
   assertTruet   find(   R   R   R   R   (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   test_xhtml2html_filter”   s
    $(   t   __name__t
   __module__R   R   R   R   R)   R.   R0   R2   R3   R1   R6   R7   R:   (    (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyR      s   												(   t   Popent   PIPEs   sed --versioni    t   seds	   --versiont   stdoutt   stderrs0   sed is not available => can't test stripAd_yahoos3   libxml2 is not available => can't test xpath_sifters5   Popen is not available => can't test standard filterst   test_(   t   unittestt   xml.dom.minidomR   t   planetR    R   R   t   TestCaseR   t
   subprocessR=   R>   t   Truet   _no_sedt   commandst   getstatusoutputt   FalseR?   t   communicatet
   returncodet   WindowsErrort   warnR0   t   libxml2R2   R3   t   ImportErrort   dirt   methodt
   startswitht   delattr(    (    (    sC   /home/sa3ruby/intertwingly.net/code/venus-bzr/tests/test_filters.pyt   <module>   sD   • 
 	 