a
    äzeþ  ã                   @   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v r| jd= d S )NÚPOSIXLY_CORRECT)r   Úenv©Úself© r
   ú&/usr/lib/python3.9/test/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g|¢R i |¤Ž d S r   )Ú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Úaú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Úabcú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   ©ú-aÚ Za1r   ©r$   Ú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g d¢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   )ú--abcr%   zabc=1r   )r,   r'   zabcd=)z--abcdr'   )Úabr   r   zfoo=42zfoo-barzfoo=)z--fooZ42)r   Zdo_longsr    r   r)   r
   r
   r   Útest_do_longsF   s"    zGetoptTests.test_do_longsc                 C   sX   g d¢}t   |dddg¡\}}|  |g d¢¡ |  |ddg¡ |  t j |dddg¡ d S )	N)r$   r'   ú-bz	--alpha=2ú--betar$   Ú3r$   r%   r0   Úarg1Úarg2za:bzalpha=Úbeta)r&   )r/   r%   )ú--alphar(   ©r0   r%   )r$   r1   r#   r6   r2   r3   Úalpha)r   r    r   ©r	   Zcmdliner*   r   r
   r
   r   Útest_getopta   s
    zGetoptTests.test_getoptc                 C   sæ   g d¢}t  |dddg¡\}}|  |dg¡ |  |g d¢¡ t  g d¢dg ¡\}}|  |dg¡ |  |d	d
g¡ t  |dddg¡\}}|  |d	g¡ |  |g d¢¡ d| jd< t  |dddg¡\}}|  |d	g¡ |  |g d¢¡ d S )N)r$   r2   r/   r'   r5   ú--beta=2zab:r7   zbeta=r2   )r#   )r/   r'   )r5   r%   )r0   r(   )r$   ú-r/   r;   r;   r#   )r/   r;   z+ab:)r2   r/   r'   r5   r:   r'   r   )r   Z
gnu_getoptr    r   r8   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=)ú--helpr%   z--help=x)rB   Ú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.   r9   r<   rA   rE   r
   r
   r
   r   r      s   $r   Ú__main__)Ztest.supportr   r   r   Zunittestr   ÚobjectÚsentinelZTestCaser   rF   Úmainr
   r
   r
   r   Ú<module>   s    -