B
    u9aþ  ã               @   sP   d dl mZmZmZ d dlZd dlZeƒ ZG dd„ dejƒZ	e
dkrLe ¡  dS )é    )ÚverboseÚrun_doctestÚEnvironmentVarGuardNc               @   sd   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )ÚGetoptTestsc             C   s   t ƒ | _d| jkr| jd= d S )NÚPOSIXLY_CORRECT)r   Úenv)Úself© r	   ú!/usr/lib/python3.7/test_getopt.pyÚsetUp   s    
zGetoptTests.setUpc             C   s   | j  ¡  | ` d S )N)r   Ú__exit__)r   r	   r	   r
   ÚtearDown   s    
zGetoptTests.tearDownc             O   s   | j tjf|ž|Ž d S )N)ÚassertRaisesÚgetoptÚGetoptError)r   ÚargsÚkwargsr	   r	   r
   ÚassertError   s    zGetoptTests.assertErrorc             C   s8   |   t dd¡¡ |  t dd¡¡ |  tjdd¡ d S )NÚaza:Úb)Ú
assertTruer   Zshort_has_argÚassertFalser   )r   r	   r	   r
   Útest_short_has_arg   s    zGetoptTests.test_short_has_argc             C   s²   t  ddg¡\}}|  |¡ |  |d¡ t  ddg¡\}}|  |¡ |  |d¡ t  ddg¡\}}|  |¡ |  |d¡ |  t jddg¡ |  t jdg ¡ |  t jdddg¡ d S )NÚabczabc=ÚabcdÚdefZabcde)r   Zlong_has_argsr   ÚassertEqualr   r   )r   Zhas_argÚoptionr	   r	   r
   Útest_long_has_args   s    


zGetoptTests.test_long_has_argsc             C   sì   t  g ddg ¡\}}|  |dg¡ |  |g ¡ t  g ddg ¡\}}|  |dg¡ |  |g ¡ t  g dddg¡\}}|  |dg¡ |  |g ¡ t  g ddddg¡\}}|  |dg¡ |  |dg¡ |  t jg ddg ¡ |  t jg ddg ¡ d S )Nr   )z-aÚ Za1za:)z-aÚ1r    Ú2)r   Z	do_shortsr   r   )r   Úoptsr   r	   r	   r
   Útest_do_shorts.   s    zGetoptTests.test_do_shortsc             C   s&  t  g ddgg ¡\}}|  |dg¡ |  |g ¡ t  g ddgg ¡\}}|  |dg¡ |  |g ¡ t  g ddgg ¡\}}|  |dg¡ |  |g ¡ t  g dddd	gg ¡\}}|  |dg¡ |  |g ¡ t  g d
ddgg ¡\}}|  |dg¡ |  |g ¡ |  t jg ddgg ¡ |  t jg ddgg ¡ d S )Nr   )z--abcr   zabc=1zabc=)z--abcr    zabcd=)z--abcdr    Zabr   zfoo=42zfoo-barzfoo=)z--fooZ42)r   Zdo_longsr   r   )r   r"   r   r	   r	   r
   Útest_do_longsF   s"    zGetoptTests.test_do_longsc             C   sv   dddddddddddd	g}t   |d
ddg¡\}}|  |dddddddg¡ |  |dd	g¡ |  t j |d
ddg¡ d S )Nz-ar    z-bz	--alpha=2z--betaÚ3r   Úarg1Zarg2za:bzalpha=Zbeta)z-ar    )z-br   )z--alphar!   )z--betar   )z-ar%   )z-ar   Úalpha)r   r   r   )r   Úcmdliner"   r   r	   r	   r
   Útest_getopta   s    
zGetoptTests.test_getoptc             C   s  ddddddg}t  |ddd	g¡\}}|  |dg¡ |  |d
dddg¡ t  ddddgdg ¡\}}|  |dg¡ |  |d
dg¡ t  |ddd	g¡\}}|  |d
g¡ |  |dddddg¡ d| jd< t  |ddd	g¡\}}|  |d
g¡ |  |dddddg¡ d S )Nz-ar&   z-br    z--alphaz--beta=2zab:r'   zbeta=)z-ar   )z-br    )z--alphar   )z--betar!   ú-)z-br*   z+ab:r   )r   Z
gnu_getoptr   r   )r   r(   r"   r   r	   r	   r
   Útest_gnu_getoptr   s    


zGetoptTests.test_gnu_getoptc             C   s&   d}dd l }| d|¡}t|tƒ d S )NaÚ  
        Examples from the Library Reference:  Doc/lib/libgetopt.tex

        An example using only Unix style options:


        >>> import getopt
        >>> args = '-a -b -cfoo -d bar a1 a2'.split()
        >>> args
        ['-a', '-b', '-cfoo', '-d', 'bar', 'a1', 'a2']
        >>> optlist, args = getopt.getopt(args, 'abc:d:')
        >>> optlist
        [('-a', ''), ('-b', ''), ('-c', 'foo'), ('-d', 'bar')]
        >>> args
        ['a1', 'a2']

        Using long option names is equally easy:


        >>> s = '--condition=foo --testing --output-file abc.def -x a1 a2'
        >>> args = s.split()
        >>> args
        ['--condition=foo', '--testing', '--output-file', 'abc.def', '-x', 'a1', 'a2']
        >>> optlist, args = getopt.getopt(args, 'x', [
        ...     'condition=', 'output-file=', 'testing'])
        >>> optlist
        [('--condition', 'foo'), ('--testing', ''), ('--output-file', 'abc.def'), ('-x', '')]
        >>> args
        ['a1', 'a2']
        r   Z
libreftest)ÚtypesÚ
ModuleTyper   r   )r   Úsr,   Úmr	   r	   r
   Útest_libref_examplesŒ   s    z GetoptTests.test_libref_examplesc             C   sf   t   dgddg¡\}}|  |dg¡ t   dgddg¡\}}|  |dg¡ |  t jt j dgddg¡ d S )Nz--help=r   zhelp=)z--helpr   z--help=x)z--helpÚxÚhelp)r   r   r   r   )r   ZlongoptsZ	shortoptsr	   r	   r
   Útest_issue4629°   s
    zGetoptTests.test_issue4629N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r#   r$   r)   r+   r0   r3   r	   r	   r	   r
   r      s   $r   Ú__main__)Ztest.supportr   r   r   Zunittestr   ÚobjectÚsentinelZTestCaser   r4   Úmainr	   r	   r	   r
   Ú<module>   s    -