ó
fñüWc           @` s­  d  d l  m Z m Z m Z m Z d  d l Z d  d l Z d  d l Z d  d l Z d  d l	 m
 Z
 m Z e j j d  e j j e j j e j j e ƒ d ƒ ƒ ƒ d  d l m Z m Z d  d l m Z m Z m Z d  d l m Z m Z d  d l m Z m Z m Z m Z m  Z  e j! d	 d
 f k r6d  d l" Z" n d  d l# Z" d Z$ d e% 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    (   t   absolute_importt   divisiont   print_functiont   unicode_literalsN(   t   TemporaryFilet   mkdtempu   ..(   t   ArgumentParsert   SUPPRESS(   t   autocompletet   CompletionFindert
   split_line(   t   FilesCompletert   DirectoriesCompleter(   t   USING_PYTHON2t   strt   sys_encodingt
   ensure_strt   ensure_bytesi   i   u   t   TempDirc           B` s2   e  Z d  Z d d d d „ Z d „  Z d „  Z RS(   u  
    Temporary directory for testing FilesCompletion

    Usage:

        with TempDir(prefix="temp_fc") as t:
            print("tempdir", t)
            # you are not chdir-ed to the temporary directory
            # everything created here will be deleted
    u    u   tmpdirc         C` s1   t  d | d | d | ƒ |  _ t j ƒ  |  _ d  S(   Nt   suffixt   prefixt   dir(   R   t   tmp_dirt   ost   getcwdt   old_dir(   t   selfR   R   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   __init__'   s    c         C` s   t  j |  j ƒ |  j S(   N(   R   t   chdirR   (   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt	   __enter__+   s    c         G` s$   t  j |  j ƒ t j |  j ƒ d  S(   N(   R   R   R   t   shutilt   rmtreeR   (   R   t   err(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   __exit__/   s    N(   t   __name__t
   __module__t   __doc__t   NoneR   R   R!   (    (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR      s   
	t   TestArgcompletec           B` s  e  Z d  „  Z d „  Z 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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C` s+   d t  j d <d t  j d <t t  j d <d  S(   Nu   yesu   _ARGCOMPLETEu
   _ARC_DEBUGu   IFS(   R   t   environt   IFS(   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   setUp5   s    c         C` s   d  S(   N(    (   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   tearDown:   s    c         K` sÓ   t  | ƒ } | d  k r6 t t | j t ƒ ƒ ƒ } n  t ƒ  Ž } t rT t | ƒ n | t	 j
 d <| t	 j
 d <d t	 j
 d <|  j t t | d | d t j | | j d ƒ | j ƒ  j t ƒ j t ƒ SWd  QXd  S(   Nu	   COMP_LINEu
   COMP_POINTu   "'@><=;|&(:u   _ARGCOMPLETE_COMP_WORDBREAKSt   output_streamt   exit_methodi    (   R   R%   R   t   lent   encodeR   R   R   R   R   R'   t   assertRaisest
   SystemExitR   t   syst   exitt   seekt   readt   decodet   splitR(   (   R   t   parsert   commandt   pointt   kwargst   t(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   run_completer=   s    c         C` s  t  ƒ  } | j d ƒ | j d ƒ |  j | d ƒ } |  j t | ƒ t d d d d g ƒ ƒ |  j | d ƒ } |  j t | ƒ t d d d d g ƒ ƒ |  j | d d t ƒ} |  j t | ƒ t d g ƒ ƒ |  j | d d t ƒ} |  j t | ƒ t d d d d g ƒ ƒ d  S(	   Nu   --foou   --baru   prog u   -hu   --helpu   prog -t   always_complete_optionsu    (   R   t   add_argumentR<   t   assertEqualst   sett   False(   R   t   pt   completions(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_basic_completionK   s    	((c         C` s   d „  } d d d d g f d d g f d d	 d
 g f d d	 d
 g f d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ q^ Wd  S(   Nc          S` s&   t  ƒ  }  |  j d d d d g ƒ|  S(   Nu   --shipt   choicesu	   submarinet	   speedboat(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   make_parser]   s    	u   prog u   --shipu   -hu   --helpu
   prog --shiu   --ship u   prog --ship u	   submarineu	   speedboatu   prog --ship su   prog --ship suu
   submarine (   t   assertEqualR@   R<   (   R   RG   t   expected_outputst   cmdt   output(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_choices\   s    	c      	   C` s¯   d „  } d d d d d d d d	 d
 g f d d d g f d d g f d d d g f d d	 d
 g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qp Wd  S(   Nc          S` s8   t  ƒ  }  |  j d d t d d d d d d d	 g ƒ|  S(
   Nu   xt   typeRE   i   i   i   i   i   i*   (   R   R>   t   int(   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   n   s    	+u   prog u   4u   8u   15u   16u   23u   42u   -hu   --helpu   prog 1u   prog 2u   23 u   prog 4u   prog 4 (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_non_str_choicesm   s    	!c         C` sâ   d „  } d d d d g f d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ q4 Wd d d d d g f d d	 g f f } xE | D]= \ } } |  j  t |  j | ƒ  | d
 t ƒƒ t | ƒ ƒ q Wd  S(   Nc          S` s-   t  ƒ  }  |  j d ƒ |  j d d t ƒ|  S(   Nu   --foou   --bart   help(   R   R>   R   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG      s    	u   prog u   --foou   -hu   --helpu   prog --bu    u   --baru   --bar t   print_suppressed(   RH   R@   R<   t   True(   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_suppress_args~   s    	/c         C` s¦   d „  } d d d d d g f d d g f d	 d
 d d d g f d d g f d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qg Wd  S(   Nc          S` s?   t  ƒ  }  |  j d d d d g ƒ|  j d d d d g ƒ|  S(   Nu   varRE   u   busu   caru   valueu   orangeu   apple(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   –   s    	u   prog u   busu   caru   -hu   --helpu   prog buu   bus u	   prog bus u   appleu   orangeu   prog bus applu   apple u   prog bus apple (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_action_activation•   s    	c         C` s  d „  } d d d d d d g f d d	 g f d
 d d d d d g f d d d d g f d d g f d d d d d d g f d d g f d d d d g f d d d g f d d d g f f
 } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qÄ Wd  S(   Nc          S` s‚   t  ƒ  }  |  j d d d d d d d g ƒ|  j d d	 d
 d ƒ } | j d ƒ } | j d d d d g ƒ| j d d d ƒ|  S(   Nu   namet   nargsi   RE   u   au   bu   ct   titleu   subcommandst   metavaru
   subcommandu   buildu   varu   busu   caru	   --profilei   (   R   R>   t   add_subparserst
   add_parser(   R7   t
   subparserst   subparser_build(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   ¨   s    	"u   prog u   au   bu   cu   -hu   --helpu   prog bu   b u   prog b u	   prog c b u   buildu   prog c b buu   build u   prog c b build u   busu   caru	   --profileu   prog c b build cau   car u   prog c b build car u   prog build car u   prog a build car (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt%   test_action_activation_with_subparser§   s    	
c         ` sß   d „  ‰  ‡  f d †  } d d d g f d d d g f d	 d
 d d d d g f d d
 d d g f d d d g f d d d g f d d d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ q  Wd  S(   Nc         [` s
   d d g S(   Nu   http://url1u   http://url2(    (   R   t   parsed_argsR:   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   c_urlÂ   s    c       
   ` sG   t  ƒ  }  ˆ  |  j d ƒ _ |  j d d d d d d d d	 d
 g ƒ|  S(   Nu   --urlu   --emailRU   i   RE   u   a@b.cu   a@b.du   ab@c.du   bcd@e.fu   bce@f.g(   R   R>   t	   completer(   R7   (   R^   (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   Å   s    	(u   prog --url u   http\://url1u   http\://url2u   prog --url "u   "http://url1u   "http://url2u!   prog --url "http://url1" --email u   a\@b.cu   a\@b.du   ab\@c.du   bcd\@e.fu   bce\@f.gu"   prog --url "http://url1" --email au$   prog --url "http://url1" --email "a@u   "a@b.cu   "a@b.du4   prog --url "http://url1" --email "a@b.c" "a@b.d" "a@u:   prog --url "http://url1" --email "a@b.c" "a@b.d" "ab@c.d" u   --urlu   --emailu   -hu   --help(   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (   R^   s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_completersÁ   s    	c         ` s¬   d „  ‰ d „  ‰  ‡  ‡ f d †  } d d d d d d	 g f d
 d d d d d	 g f d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qm Wd  S(   Nc         [` s
   | j  g S(   N(   t   arg1(   R   R]   R:   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   c_depends_on_positional_arg1Ù   s    c         [` s
   | j  g S(   N(   t   arg5(   R   R]   R:   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   c_depends_on_optional_arg5Ü   s    c          ` sx   t  ƒ  }  |  j ƒ  } | j d ƒ } | j d ƒ ˆ | j d ƒ _ ˆ  | j d ƒ _ ˆ  | j d ƒ _ | j d ƒ |  S(   Nu
   subcommandu   arg1u   arg2u   arg3u   --arg4u   --arg5(   R   RX   RY   R>   R_   (   R7   RZ   t	   subparser(   Rd   Rb   (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   ß   s    	u   prog subcommand val1 u   val1u   --arg4u   --arg5u   -hu   --helpu&   prog subcommand val1 val2 --arg5 val5 u   val5u.   prog subcommand val1 val2 --arg5 val6 --arg4 vu   val6 (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (   Rd   Rb   s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_subparser_completersØ   s    		c         C` sÊ   t  d d d d ƒ ¯ t ƒ  } t j t j j d d ƒ ƒ |  j | d ƒ d g ƒ t j t j j d	 d ƒ ƒ t d
 d ƒ  } | j d ƒ Wd  QX|  j t	 | d ƒ ƒ t	 d d d
 g ƒ ƒ Wd  QXd  S(   NR   u   test_dir_fcR   u   .u   abcdefÐ¶u   klmu   au	   abcdefÐ¶/u   abcahau   abcxyzu   wu   testu   abcaha/(
   R   R   R   t   makedirst   patht   joinRH   t   opent   writeR@   (   R   t   fct   fp(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_file_completionó   s    	c         C` s  d „  } t  d d d d ƒ í t j t j j d d ƒ ƒ t j t j j d d ƒ ƒ t d	 d
 ƒ 9 } t d d
 ƒ ! } | j d ƒ | j d ƒ Wd  QXWd  QXd d	 d d g f d d g f f } x? | D]7 \ } } |  j t |  j	 | ƒ  | ƒ ƒ t | ƒ ƒ qÌ WWd  QXd  S(   Nc          S` sE   t  ƒ  }  |  j d d t j d ƒ ƒ|  j d d t j d ƒ ƒ|  S(   Nu   --rRM   u   ru   --wu   w(   R   R>   t   argparset   FileType(   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   ÿ   s    	R   u   test_dir_fc2R   u   .u   abcdefÐ¶u   klmu   abcahau   abcxyzu   wu   abcdefÐ¶/klm/testu   testu   prog subcommand --r u	   abcdefÐ¶/u   abcaha/u"   prog subcommand --w abcdefÐ¶/klm/tu   abcdefÐ¶/klm/test (
   R   R   Rg   Rh   Ri   Rj   Rk   RH   R@   R<   (   R   RG   t   fht   fh2RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt(   test_filescompleter_filetype_integrationþ   s    	 c         ` sí  t  ƒ  ‰  ‡  f d †  } t d d d d ƒ ºt j t j j d d ƒ ƒ t j t j j d d ƒ ƒ t j t j j d d	 ƒ ƒ t j t j j d
 d ƒ ƒ t d d ƒ 9 } t d d ƒ ! } | j d ƒ | j d ƒ Wd  QXWd  QX|  j | d ƒ t	 d d g ƒ ƒ |  j | d ƒ t	 d d g ƒ ƒ |  j | d ƒ t	 d g ƒ ƒ |  j | d ƒ t	 d d g ƒ ƒ |  j | d ƒ t	 d g ƒ ƒ |  j | d ƒ t	 d g ƒ ƒ |  j | d ƒ t	 g  ƒ ƒ |  j | d ƒ t	 g  ƒ ƒ Wd  QXd  S(   Nc         ` s   t  ˆ  |  ƒ ƒ S(   N(   R@   (   R   (   R_   (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   c  s    R   u   test_dirR   u   .u   abcu   bazu   abbu   fazu   defu   abc1u   wu   def1u   A testu   Another testu   au   abb/u   abc/u   abu   abc/baz/u   abc/faz/u   du   def/u   def/baz/u   eu   def/k(
   R   R   R   Rg   Rh   Ri   Rj   Rk   RH   R@   (   R   Rt   t   fp1t   fp2(    (   R_   s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_directory_completion  s(    	""""c         C` sj  d „  } d d d d d d g f d d	 g f d
 d d d d d d g f d d d d d d d g f d d d g f d d d g f d d d d d g f f } xÇ | D]¿ \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ |  j  t |  j | ƒ  | d d g ƒƒ t | ƒ t d g ƒ ƒ |  j  t |  j | ƒ  | d d d g ƒƒ t | ƒ t d d g ƒ ƒ q£ Wd  S(   Nc          S` s‚   t  ƒ  }  |  j d d t ƒ|  j ƒ  } | j d ƒ } | j d d d d d d	 g ƒ| j d
 ƒ } | j d d d d g ƒ|  S(   Nu   --ageRM   u   eggsu   typeRE   u	   on a boatu   with a goatu   in the rainu
   on a trainu   spamu   hamu   iberico(   R   R>   RN   RX   RY   (   R7   t   subt   eggst   spam(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   .  s    	u   prog u   --helpu   eggsu   -hu   spamu   --ageu   prog --age 1 eggsu   eggs u   prog --age 2 eggs u
   on a trainu   with a goatu	   on a boatu   in the rainu
   prog eggs u   prog eggs "on au   "on a trainu
   "on a boatu   prog eggs on\ au
   prog spam u   ibericou   hamt   exclude(   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_subparsers-  s    	+A*c         C` s”   d „  } d d d d g f d d d d	 g f d
 d d	 g f d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qU Wd  S(   Nc          S` sS   t  r t n t }  t ƒ  } | j |  d ƒ d |  d ƒ |  d ƒ |  d ƒ g ƒ| S(   Nu   --ÐºÐ½Ð¸Ð³Ð°RE   u    Ð¢Ñ€ÑƒÐ´Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð±Ð¾Ð³Ð¾Ð¼u(   ÐŸÐ°Ñ€ÐµÐ½ÑŒ Ð¸Ð· Ð¿Ñ€ÐµÐ¸ÑÐ¿Ð¾Ð´Ð½ÐµÐ¹u=   ÐŸÐ¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸Ðº Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚ÑÑ Ð² ÑÑƒÐ±Ð±Ð¾Ñ‚Ñƒ(   R   R   R   R   R>   (   t   _strR7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   I  s    			u   prog u   --ÐºÐ½Ð¸Ð³Ð°u   -hu   --helpu   prog --ÐºÐ½Ð¸Ð³Ð° u    Ð¢Ñ€ÑƒÐ´Ð½Ð¾ Ð±Ñ‹Ñ‚ÑŒ Ð±Ð¾Ð³Ð¾Ð¼u(   ÐŸÐ°Ñ€ÐµÐ½ÑŒ Ð¸Ð· Ð¿Ñ€ÐµÐ¸ÑÐ¿Ð¾Ð´Ð½ÐµÐ¹u=   ÐŸÐ¾Ð½ÐµÐ´ÐµÐ»ÑŒÐ½Ð¸Ðº Ð½Ð°Ñ‡Ð¸Ð½Ð°ÐµÑ‚ÑÑ Ð² ÑÑƒÐ±Ð±Ð¾Ñ‚Ñƒu   prog --ÐºÐ½Ð¸Ð³Ð° ÐŸu   prog --ÐºÐ½Ð¸Ð³Ð° ÐŸÑƒu    (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_non_asciiH  s    	c         C` s£   d „  } d d d g f d d g f d d d g f d d g f d	 d d g f f } xH | D]@ \ } } |  j  t |  j | ƒ  | d
 d „  ƒƒ t | ƒ ƒ q[ Wd  S(   Nc          S` s?   t  ƒ  }  |  j d d d d g ƒ|  j d d d d g ƒ|  S(   Nu   varRE   u   busu   caru   valueu   orangeu   apple(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   a  s    	u   prog u   -hu   --helpu   prog buu    u	   prog bus u   prog bus applu   prog bus apple t	   validatorc         S` s   t  S(   N(   RA   (   t   xt   y(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   <lambda>q  s    (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_custom_validator`  s    	!c      
   C` s  d „  } d „  d „  d „  f } d d d g | d f d d	 d
 d d g | d f d d g | d f d d d d d g | d f d d g | d f d d g | d f d d d g | d f f } xH | D]@ \ } } } |  j  t |  j | ƒ  | d | ƒƒ t | ƒ ƒ qË Wd  S(   Nc          S` s?   t  ƒ  }  |  j d d d d g ƒ|  j d d d d g ƒ|  S(   Nu   varRE   u   busu   caru   valueu   orangeu   apple(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   v  s    	c         S` s   t  S(   N(   RA   (   R€   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR‚   }  s    c         S` s   t  S(   N(   RR   (   R€   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR‚   ~  s    c         S` s   |  j  | ƒ S(   N(   t
   startswith(   R€   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR‚     s    u   prog u   -hu   --helpi    u   busu   cari   u   prog buu   bus u	   prog bus u   appleu   orangeu   prog bus applu   apple i   u   prog bus capplu    u   prog bus pple R   (   RH   R@   R<   (   R   RG   t
   validatorsRI   RJ   RK   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_different_validatorsu  s    	c         C` s½   d „  } t  ƒ  } | j d d d d d d g ƒ| j d d d	 d
 g ƒt | ƒ } |  j | | d ƒ d d d d d d g ƒ |  j | | d ƒ d d g ƒ |  j | | d ƒ g  ƒ d  S(   Nc         S` sP   g  } xC t  d ƒ D]5 } |  j | | ƒ } | d  k r; Pn  | j | ƒ q W| S(   Ni'  (   t   ranget   rl_completeR%   t   append(   R_   t   textRC   t   it
   completion(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   get_readline_completions  s    u   roverRE   u	   sojourneru   spiritu   opportunityu	   curiosityu   antennau   low gainu	   high gainu    u   -hu   --helpu   su   x(   R   R>   R	   RH   (   R   R   R7   R_   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_readline_entry_point  s    			c         C` sî  t  ƒ  } | j d d d d d d g d d ƒ| j d	 d d
 d g d d ƒ| j ƒ  } | j d ƒ } | j d d d d ƒ| j d d d d ƒ| j ƒ  } | j d d d ƒ| j d d d ƒt | ƒ } | j d d ƒ | j ƒ  } |  j d | j d d ƒ ƒ |  j d | j d d ƒ ƒ |  j d | j d
 d ƒ ƒ | j d d ƒ | j ƒ  } |  j d | j d d ƒ ƒ |  j d | j d d ƒ ƒ | j d d ƒ | j ƒ  } |  j d | j d d ƒ ƒ |  j d | j d d ƒ ƒ d  S(   Nu   roverRE   u	   sojourneru   spiritu   opportunityu	   curiosityRP   u   help for rover u   antennau   low gainu	   high gainu   help for antennau   listu   -ou   --ohu   tttu   -cu   --chu   cccu   catu   list catu   dogu   list dogu    i    u   opportunity "low gain" list u   -o --ohu   opportunity low\ gain list --(	   R   R>   RX   RY   R	   Rˆ   t   get_display_completionsRH   t   get(   R   R7   Rx   RB   t   sub2R_   t   disp(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_display_completions¢  s4    	c         C` s'  d „  } d d d d d g f d d d	 d d g f d
 d g f d d d	 d d d d g f d d d	 d d d d g f d d g f d d d	 d d d d d g f d d d	 d d d d d g f d d d	 d d d d d g f f	 } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qè Wd  S(   Nc          S` st   t  ƒ  }  |  j d d d d g ƒ|  j d d d d g d d	 ƒ|  j d
 d d d g ƒ|  j d d d g ƒ|  S(   Nu   h1RE   u   cu   du   varu   busu   carRU   u   +u   valueu   orangeu   appleu   end(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   Ã  s    	u   prog u   cu   du   -hu   --helpu   prog c u   busu   caru	   prog c buu   bus u   prog c bus u   appleu   orangeu   prog c bus car u   prog c bus applu   apple u   prog c bus apple u   endu   prog c bus car apple u   prog c bus car apple end (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_nargs_one_or_moreÂ  s    		$c         C` s©   d „  } d d d d d g f d d d d d g f d d d d d g f d	 d d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qj Wd  S(
   Nc          S` sE   t  ƒ  }  |  j d d d g d d d d ƒ|  j d d d g ƒ|  S(   Nu   fooRE   RU   u   *t   defaultu   bar(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   Ü  s    	"u   prog u   foou   baru   -hu   --helpu	   prog foo u   prog foo bar u   prog foo foo bar (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_nargs_zero_or_moreÛ  s    	c         C` s£   d „  } d d d d d g f d d d d d g f d d d g f d	 d d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qd Wd  S(
   Nc          S` s?   t  ƒ  }  |  j d d d g d d ƒ|  j d d d g ƒ|  S(   Nu   fooRE   RU   u   ?u   bar(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   î  s    	u   prog u   foou   baru   -hu   --helpu	   prog foo u   prog foo bar u	   prog bar (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_nargs_optionalí  s    	c         C` s=  d „  } d d d d d d d g } d	 | f d
 d d g f d d d g f d | f d d d g | f d | f d d d g | f d d d g | f d d d g f d d d g | f d d d g f d d d g f d d  g f d! d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qþ Wd  S("   Nc          S` s«   t  ƒ  }  |  j d d d d g d d ƒ|  j d d d d	 g d d
 ƒ|  j d d d d g d d ƒ|  j d d d d g d d ƒ|  j d d d d g d t j ƒ|  S(   Nu   --fooRE   u   foo1u   foo2RU   i   u   --baru   bar1u   bar2u   ?u   --bazu   baz1u   baz2u   *u   --quxu   qux1u   qux2u   +u   --foobaru   posu   --opt(   R   R>   Ro   t	   REMAINDER(   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   ÿ  s    	"u   --foou   --baru   --bazu   --quxu   --foobaru   -hu   --helpu   prog u   prog --foo u   foo1u   foo2u   prog --foo foo1 u   prog --foo foo1 foo2 u   prog --bar u   bar1u   bar2u   prog --bar bar1 u   prog --baz u   baz1u   baz2u   prog --baz baz1 u   prog --qux u   qux1u   qux2u   prog --qux qux1 u   prog --foobar u   posu   --optu   prog --foobar pos u   prog --foobar --u   --opt u   prog --foobar --opt (   RH   R@   R<   (   R   RG   t   optionsRI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_optional_nargsþ  s$    					c         C` s·   d „  } d d d g } d d d g | f d d d g | f d	 d d g f d
 d d g f d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qx Wd  S(   Nc          S` sH   t  ƒ  }  |  j d d d d g ƒ|  j d d d d g d t j ƒ|  S(	   Nu   --fooRE   u   foo1u   foo2u	   remainderu   posu   --optRU   (   R   R>   Ro   R˜   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   $  s    	"u   --foou   -hu   --helpu   prog u   posu   --optu   prog --foo foo1 u	   prog pos u   prog -- u   prog -- --opt (   RH   R@   R<   (   R   RG   R™   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_positional_remainder#  s    	c         C` sH   t  d t ƒ } | j d d d g ƒ|  j |  j | d ƒ d g ƒ d  S(   Nt   add_helpu   --fooRE   u   --baru   prog --foo --u   --foo (   R   RA   R>   RH   R<   (   R   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_skipped_completer7  s    c   
      C` sa  d „  } d j  ƒ  } d j  ƒ  } d i | d 6| d 6| | t 6d g t 6f d i d	 g d 6d	 g d 6d	 g t 6d	 g t 6f d
 i d d g d 6d d g d 6d d g t 6d d g t 6f d i d g d 6d g d 6d g t 6d g t 6f f } xh | D]` \ } } xQ | j ƒ  D]C \ } } |  j | ƒ  | d | ƒ}	 |  j t |	 ƒ t | ƒ ƒ qWqù Wd  S(   Nc          S` sd   t  ƒ  }  |  j d ƒ |  j d d ƒ |  j d d ƒ |  j d ƒ |  j d d ƒ |  j d	 ƒ |  S(
   Nu   --foou   -bu   --baru   --bazu   --xyzu   -tu   -zu   --zzzu   -x(   R   R>   (   R7   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   =  s    	u*   --foo --bar --baz --xyz --zzz --help -x -tu    -b -t -x -z -h --foo --baz --xyzu   prog u   longu   shortu    u
   prog --foou   --foo u   prog --bu   --baru   --bazu
   prog -z -xu   -x R=   (   R6   RR   RA   t   itemsR<   RH   R@   (
   R   RG   t	   long_optst
   short_optsRI   RJ   t   outputsR=   RK   t   result(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt"   test_optional_long_short_filtering<  s    	
,1=7c         C` s—   d „  } d d d d g f d d d d g f d d d g f d d d g f f } x? | D]7 \ } } |  j  t |  j | ƒ  | ƒ ƒ t | ƒ ƒ qX Wd  S(	   Nc          S` sX   t  d t ƒ }  |  j d d d ƒ|  j ƒ  } | j d d d ƒ| j d d d ƒ|  S(   NRœ   u   --foot   actionu
   store_trueu   --baru   --no-bar(   R   RA   R>   t   add_mutually_exclusive_group(   R7   t   group(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyRG   U  s    u   prog u   --foou   --baru   --no-baru   prog --foo u   prog --bar u   prog --foo --no-bar (   RH   R@   R<   (   R   RG   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_exclusiveT  s    		N(   R"   R#   R)   R*   R%   R<   RD   RL   RO   RS   RT   R\   R`   Rf   Rn   Rs   Rw   R|   R~   Rƒ   R†   RŽ   R“   R”   R–   R—   Rš   R›   R   R£   R§   (    (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR&   4   s8   																			 				%			t   TestArgcompleteREPLc           B` sS   e  Z d  „  Z d „  Z d d „ Z d „  Z d „  Z d „  Z e	 j
 d „  ƒ Z RS(   c         C` s   d  S(   N(    (   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR)   i  s    c         C` s   d  S(   N(    (   R   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR*   l  s    c         K` sN   t  | ƒ \ } } } }	 }
 |	 j d t j d ƒ | j |	 | | |
 ƒ } | S(   Ni    (   R
   t   insertR1   t   argvt   _get_completions(   R   R7   R_   R8   R9   R:   t   cword_prequotet   cword_prefixt   cword_suffixt
   comp_wordst   first_colon_posRC   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR<   o  s
    c         C` s´   t  ƒ  } | j d ƒ | j d ƒ t | d t ƒ} |  j | | d ƒ } t | ƒ t d d d d g ƒ k st t ‚ |  j | | d ƒ } t | ƒ t d d d g ƒ k s° t ‚ d  S(   Nu   --foou   --barR=   u   prog u   -hu   --helpu   prog --(   R   R>   R	   RR   R<   R@   t   AssertionError(   R   RB   Rt   RC   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_repl_multiple_completey  s    	*c         C` s¢   t  ƒ  } | j d ƒ | j d ƒ t | d t ƒ} |  j | | d ƒ } t | ƒ t d d d d g ƒ k st t ‚ | j d d g ƒ } | j d k sž t ‚ d  S(   Nu   --foou   --barR=   u   prog u   -hu   --helpu   spam(	   R   R>   R	   RR   R<   R@   R±   t
   parse_argst   foo(   R   RB   Rt   RC   t   args(    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_repl_parse_after_complete†  s    	*c         C` s`  t  ƒ  } | j d ƒ | j d ƒ | j ƒ  } | j d ƒ | j d ƒ | j d ƒ } d „  } | j d ƒ | j ƒ  } | j d ƒ } | j d	 | ƒ t | d
 t ƒ} d d d d d d d d g f d d g f d d d g f d d d d d g f d d g f d d d g f f } x? | D]7 \ }	 }
 |  j t |  j	 | | |	 ƒ ƒ t |
 ƒ ƒ q!Wd  S(   Nu   --foou   --baru   listu   setu   showc           S` s   d  S(   N(    (    (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   abc  s    u   --testu   deptht   funcR=   u    u   -hu   --helpu   liu   list u   su   show u   show du   depth u   show depth (
   R   R>   RX   RY   t   set_defaultsR	   RR   RH   R@   R<   (   R   RB   t   st   showR·   t   sst   deRt   RI   RJ   RK   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   test_repl_subcommand“  s*    		c         C` sÿ   t  ƒ  } | j d d d d d g ƒ| j d d d d g ƒt | d	 t ƒ} |  j t |  j | | d
 ƒ ƒ t d d d d d g ƒ ƒ |  j t |  j | | d ƒ ƒ t d d d d g ƒ ƒ |  j t |  j | | d
 ƒ ƒ t d d d d d g ƒ ƒ d  S(   Nu   fooRE   u   aau   bbu   ccu   baru   du   eR=   u    u   -hu   --helpu   aa (   R   R>   R	   RR   RH   R@   R<   (   R   RB   Rt   (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt&   test_repl_reuse_parser_with_positional³  s    	N(   R"   R#   R)   R*   R%   R<   R²   R¶   R¾   t   unittestt   expectedFailureR¿   (    (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyR¨   h  s   		
			 u   __main__(,   t
   __future__R    R   R   R   R   R1   R   Ro   t   tempfileR   R   Rh   R©   t   abspathRi   t   dirnamet   __file__R   R   t   argcompleteR   R	   R
   t   argcomplete.completersR   R   t   argcomplete.compatR   R   R   R   R   t   version_infoRÀ   t	   unittest2R(   t   objectR   t   TestCaseR&   R¨   R"   t   main(    (    (    s0   /Users/kislyuk/projects/argcomplete/test/test.pyt   <module>   s$   "0:(ÿ ÿ 6\