o
    °ó®g   ã                   @   s\   d dl mZmZ d dlmZ d dlZd dlZeƒ ZG dd„ dej	ƒZ
edkr,e ¡  dS 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 d S )NÚPOSIXLY_CORRECT)r   Úenv©Úself© r
   úF/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/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_argZ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_longsG   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$   r/   Úarg1Úarg2za:bzalpha=Úbeta)r%   )r.   r$   )ú--alphar'   ©r/   r$   )r#   r0   r"   r5   r1   r2   Úalpha)r   r    r   ©r	   Zcmdliner)   r   r
   r
   r   Útest_getoptb   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#   r1   r.   r&   r4   ú--beta=2zab:r6   zbeta=r1   )r"   )r.   r&   )r4   r$   )r/   r'   )r#   ú-r.   r:   r:   r"   )r.   r:   z+ab:)r1   r.   r&   r4   r9   r&   r   )r   Z
gnu_getoptr    r   r7   r
   r
   r   Útest_gnu_getopts   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)rA   Ú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-   r8   r;   r@   rD   r
   r
   r
   r   r      s    $r   Ú__main__)Ztest.supportr   r   Ztest.support.os_helperr   Zunittestr   ÚobjectÚsentinelZTestCaser   rE   Úmainr
   r
   r
   r   Ú<module>   s    -ÿ