
    ,h                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 d dlmZ d dlZd dlmZ d dlmZ d dlmZmZmZ d dlmZ d	d
lmZmZ d	dlmZ  G d de      Zej>                  d        Z  G d d      Z! G d d      Z"y)    )annotationsN)Path)mock)path)errors)egg_infomanifest_makerwrite_entries)Distribution   )contextsenvironment)DALSc                      e Zd Zy)EnvironmentN)__name__
__module____qualname__     `/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/tests/test_egg_info.pyr   r      s    r   r   c               #    K   t        j                  d      5 t              } t        j                  t
        j                         d}t        fd|D              | _        t        t        t        j                  | j                  j                                      t        j                  | j                  d   dt         dj                   di | j                        ii       |  d d d        y # 1 sw Y   y xY ww)	Nzsetuptools-test.)prefix)homelibscriptsdatazegg-basec              3  b   K   | ]&  }|t         j                  j                  |      f ( y w)N)osr   join).0dirnameenv_dirs     r   	<genexpr>zenv.<locals>.<genexpr>"   s%     Ww'277<<#ABWs   ,/r   z.pydistutils.cfgzR
                [egg_info]
                egg-base = {egg-base}
                r   )r   tempdirr   r   chmodstatS_IRWXUdictpathslistmapmkdirvaluesr   buildr   format)envsubsr#   s     @r   r1   r1      s     			!3	4 '"
$,,';WRVWW	S399++-./

IIf"D  F( !YY(% 	
 		 	!  s   DCC6-	D6C?;Dc                     e Zd Z ed      Zd Zedd       Zd Zed        Z	d Z
d Zd Zd	 Zd
 Zd ZddZdej$                  d    dZdej$                  d    dZdZ G d d      Zej/                  ddddddddddd eee!      d"        Zd# Zd$ Zd% Zd& Zd' Zej>                  j/                  d( ed)      d*d+d,f ed-      d*d+df ed.      d*d+d,f ed)      d/d*d0d,f ej@                   ed1      d*d+d,d23      g      d4        Z!ej>                  j/                  d5 ed6      d7d8d9d:d;gg f ed<      d7d8d9d:d;gg f ed=      d7d8d9d:gd;gf ed>      d7d8d9g d:d;gf ed?      d7d8d9d;gd:gf ed@      d*dAd:gdBgf ed.      d*d+dCgg f edD      d/d*d0dCgg f ed6      dEd7d8dFd:d;gg f ej@                  dGd7dHdIdJd8dKdLdMg dNdOgdP3       ej@                   edQ      d7dRdSd:gdTgdU3       ej@                   edV      d7dAd:gg dW3       ej@                   edX      d7dYdCdZid[dCd\gd]gd^3      g      d_        Z"ej>                  j/                  d5 ed`      d7d8d9g d:d;gf eda      d7d8d9g d:d;gf edb      d7dcd8ddg deg f edf      d7dcd8ddg deg f edg      d7dcd8ddd:d;gdhgf edb      d*didhgd:d;gf edj      dkd7dcd8dlg deg f ej@                   edm      d7dRdSd:gdTgdU3       ej@                   edn      d7dIdJdod:dpgdqgdr3      g	      ds        Z#dt Z$du Z%dv Z&dw Z'dx Z(dy Z)dz Z*d{ Z+d| Z,d} Z-ddZ.d Z/y~)TestEggInfoz
        from setuptools import setup

        setup(
            name='foo',
            py_modules=['hello'],
            entry_points={'console_scripts': ['hi = hello.run']},
            zip_safe=False,
        )
        c                Z    t        j                  | j                  t        d      d       y )NzO
                def run():
                    print('hello')
                )setup.pyzhello.py)r   r/   setup_scriptr   )selfs    r   _create_projectzTestEggInfo._create_project?   s)    

))
 	r   c                    | d   j                  d      d   }t        t        |j                  d      d d       \  }}||fS )Nr    r   .   )splitr,   int)pkg_info_linesversion_strmajorminors       r   _extract_mv_versionzTestEggInfo._extract_mv_versionJ   sH    $Q'--c2153 1 1# 6r :;ue|r   c                |   t         j                  j                  |j                  d   d      }t	               }t        |      }|j                          |j                  |       t        |dd      5 }|j                         }ddd       dv sJ d|v sJ d	|v sJ d
}| j                  ||       y# 1 sw Y   0xY w)z
        When the egg_info section is empty or not present, running
        save_version_info should add the settings to the setup.cfg
        in a deterministic order.
        r   	setup.cfgrutf-8encodingN
[egg_info]tag_build =tag_date = 0	tag_buildtag_date)r   r   r    r*   r   r   initialize_optionssave_version_infoopenread_validate_content_order	r8   
tmpdir_cwdr1   	setup_cfgdisteifcontentexpected_orders	            r   +test_egg_info_save_version_info_setup_emptyz7TestEggInfo.test_egg_info_save_version_info_setup_emptyP   s     GGLL6!2K@	~d^

Y')S73 	qffhG	 w&&''((

 	$$Wn=	 	s   2B22B;c                    dj                  |      }t        j                  t        j                  z  }t        j                  || |      sJ y)zY
        Assert that the strings in expected appear in content
        in order.
        z.*N)r    re	MULTILINEDOTALLsearch)r\   expectedpatternflagss       r   rU   z#TestEggInfo._validate_content_orderj   s:     ))H%ryy(yy'5111r   c                   t         j                  j                  |j                  d   d      }t        j                  |t        d      i       t               }t        |      }|j                          |j                  |       t        |dd      5 }|j                         }ddd       dv sJ d	|v sJ d
|v sJ d}| j                  ||       y# 1 sw Y   0xY w)z
        When running save_version_info on an existing setup.cfg
        with the 'default' values present from a previous run,
        the file should remain unchanged.
        r   rF   zU
            [egg_info]
            tag_build =
            tag_date = 0
            rG   rH   rI   NrK   rL   rM   rN   )r   r   r    r*   r/   r   r   r   rQ   rR   rS   rT   rU   rV   s	            r   .test_egg_info_save_version_info_setup_defaultsz:TestEggInfo.test_egg_info_save_version_info_setup_defaultst   s     GGLL6!2K@	

t
 	 ~d^

Y')S73 	qffhG	 w&&''((

 	$$Wn=	 	s   CCc                    | j                          | j                  ||       t        j                  d      }g d}t	        |      |k(  sJ y )Nfoo.egg-info)PKG-INFOSOURCES.txtzdependency_links.txtentry_points.txtznot-zip-safeztop_level.txt)r9   _run_egg_info_commandr   listdirsorted)r8   rW   r1   actualrd   s        r   test_expected_files_producedz(TestEggInfo.test_expected_files_produced   sG    "":s3N+
 f~)))r   c                   t               }t        |      }t        j                  dt	        d            }t        j                  dd       }|5  |5  dd l}d}t        j                  |j                  j                  |      5  |j                          d d d        d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)	Nzos.utimeTEST)side_effectz+setuptools.command.egg_info.egg_info.mkpath)
return_valr   z,Cannot update time stamp of directory 'None'match)r   r   r   patchOSErrordistutils.errorspytestraisesr   DistutilsFileErrorrun)	r8   rW   r1   rY   rZ   utime_patchmkpath_patch	distutilsmsgs	            r   test_handling_utime_errorz%TestEggInfo.test_handling_utime_error   s    ~d^jjIzz9d
  	, 	#ACy//BB#N 		 	 	 		 	 	 	s<   C2B:B.B:C.B73B::C	?CCc                   t        d      }t        d      }t        j                  ||d       t        j                  t
              5 }| j                  ||       d d d        dj                  j                  d   v sJ y # 1 sw Y   'xY w)Nzp
            [metadata]
            name=foo
            version=0.0.1
            license=file:MIT
            zK
            from setuptools import setup

            setup()
            r6   rF   
ValueErrorr   )	r   r   r/   r|   r}   AssertionErrorrn   valueargs)r8   rW   r1   setup_configr7   excs         r   test_license_is_a_stringz$TestEggInfo.test_license_is_a_string   s    
 
 	

$%
 	 ]]>* 	8c&&z37	8
 syy~~a0000	8 	8s   BB
c                    | j                          | j                  ||       t        j                  j	                  d      }t        j                  d       | j                  ||       t        j                  j	                  d      }||k7  sJ y)z9Ensure timestamps are updated when the command is re-run.rj   gMbP?N)r9   rn   r   r   getmtimetimesleep)r8   rW   r1   timestamp_atimestamp_bs        r   test_rebuiltzTestEggInfo.test_rebuilt   sr    "":s3gg&&~6 	

5"":s3gg&&~6k)))r   c                   | j                          t        j                  t        d      ddid       | j	                  ||       t
        j                  j                  dd      }t
        j                  j                  |d      }t        |d	      5 }d
|j                         j                  d      v sJ 	 d d d        y # 1 sw Y   y xY w)Nz:
                recursive-include docs *.rst
            z	usage.rstzRun 'hi')MANIFEST.indocsr<   rj   rl   rH   rI   zdocs/usage.rst

r9   r   r/   r   rn   r   r    rS   rT   r>   )r8   rW   r1   egg_info_dirsources_txtr[   s         r   test_manifest_template_is_readz*TestEggInfo.test_manifest_template_is_read   s    

 Z	
 		 	"":s3ww||C8ggll<?+0 	<A#qvvx~~d';;;;	< 	< 	<s   $CC
Fc                d    t        d      |rdn|z  }|r|nd}t        j                  ||d       y )Nzi
            from setuptools import setup

            setup(name='foo', zip_safe=False, %s)
             r   )r   r   r/   )r8   requiresuse_setup_cfgr7   r   s        r   _setup_script_with_requiresz'TestEggInfo._setup_script_with_requires   sA    
 !Rh0 $1xb

$%
 	r   zpython_version<'r   'zpython_version < ""z<=>++c                      e Zd Zed        Zy)TestEggInfo.RequiresTestHelperc                    g }g }| D ]>  }|j                         j                  dd      }|j                  d      j                  d      }t        |      dkD  r)|d   j	                         }t        j                  |      }ni }|d   j	                         }	|D 
cg c]  }
 t        |
      j                  d	i | c}
\  }}}|	|df|	dz   |dffD ]r  \  }}}|j                  |       d	}|j                  d
      r|dd  }t        j                  j                  }|j                  t        j                  |||||             t A t        j                  j                  d||      S c c}
w )Nz

   r   r   r   F_in_setup_cfgTr   z@xfail
   )marks)r   r   expected_requiresinstall_cmd_kwargs)ids)lstripr>   poplenstripastliteral_evalr   r0   append
startswithr|   markxfailparamparametrize)	test_listformat_dictidlist	argvaluestesttest_paramsname_kwargsvalr   nameasetup_py_requiressetup_cfg_requiresr   id_r   use_cfgr   s                     r   r   z*TestEggInfo.RequiresTestHelper.parametrize  s   FI! "kkm11&!<)ooa066t<{#a'%a...0C),)9)9#)>&)+&"1~++-;FL67NDGNN1[1LH!#57H ,e4O+-?F/ *C7 MM#&E**:6#+AB< & 1 1$$$#-."'< ;;**  + 	 	+Ls   "E+N)r   r   r   staticmethodr   r   r   r   RequiresTestHelperr     s    	*	 
*	r   r   z
        install_requires_deterministic

        install_requires=["wheel>=0.5", "pytest"]

        [options]
        install_requires =
            wheel>=0.5
            pytest

        wheel>=0.5
        pytest
        z
        install_requires_ordered

        install_requires=["pytest>=3.0.2,!=10.9999"]

        [options]
        install_requires =
            pytest>=3.0.2,!=10.9999

        pytest!=10.9999,>=3.0.2
        z
        install_requires_with_marker

        install_requires=["barbazquux;{mismatch_marker}"],

        [options]
        install_requires =
            barbazquux; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux
        z
        install_requires_with_extra
        {'cmd': ['egg_info']}

        install_requires=["barbazquux [test]"],

        [options]
        install_requires =
            barbazquux [test]

        barbazquux[test]
        a  
        install_requires_with_extra_and_marker

        install_requires=["barbazquux [test]; {mismatch_marker}"],

        [options]
        install_requires =
            barbazquux [test]; {mismatch_marker}

        [:{mismatch_marker_alternate}]
        barbazquux[test]
        z
        setup_requires_with_markers

        setup_requires=["barbazquux;{mismatch_marker}"],

        [options]
        setup_requires =
            barbazquux; {mismatch_marker}

        z
        extras_require_with_extra
        {'cmd': ['egg_info']}

        extras_require={{"extra": ["barbazquux [test]"]}},

        [options.extras_require]
        extra = barbazquux [test]

        [extra]
        barbazquux[test]
        aF  
        extras_require_with_extra_and_marker_in_req

        extras_require={{"extra": ["barbazquux [test]; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux [test]; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux[test]
        z
        extras_require_with_marker

        extras_require={{":{mismatch_marker}": ["barbazquux"]}},

        @xfail
        [options.extras_require]
        :{mismatch_marker} = barbazquux

        [:{mismatch_marker}]
        barbazquux
        a(  
        extras_require_with_marker_in_req

        extras_require={{"extra": ["barbazquux; {mismatch_marker}"]}},

        [options.extras_require]
        extra =
            barbazquux; {mismatch_marker}

        [extra]

        [extra:{mismatch_marker_alternate}]
        barbazquux
        z
        extras_require_with_empty_section

        extras_require={{"empty": []}},

        [options.extras_require]
        empty =

        [empty]
        )invalid_markermismatch_markermismatch_marker_alternatec                ,   | j                  ||        | j                  ||fi | t        j                  j	                  dd      }t        j                  j	                  |d      }t        j                  j                  |      r't        |d      5 }	|	j                         }
d d d        nd}

j                         |k(  sJ t        j                  t        j                  j	                  |j                  d   d            g k(  sJ y # 1 sw Y   dxY w)	Nr<   rj   zrequires.txtrH   rI   r   r   barbazquux*)r   rn   r   r   r    existsrS   rT   r   globr*   )r8   rW   r1   r   r   r   r   r   requires_txtfpinstall_requiress              r   test_requireszTestEggInfo.test_requires9  s    | 	((=A""":sI6HIww||C8ww||L.A77>>,'lW5 -#%779 - -  "&&(,===yycii&6FG2MMM- -s   D

Dc                    d}| j                  |       t        j                  t              5  | j	                  ||       ddd       y# 1 sw Y   yxY w)z
        Packages that pass unordered install_requires sequences
        should be rejected as they produce non-deterministic
        builds. See #458.
        z0install_requires={"fake-factory==0.5.2", "pytz"}N)r   r|   r}   r   rn   )r8   rW   r1   reqs       r   *test_install_requires_unordered_disallowedz6TestEggInfo.test_install_requires_unordered_disallowed  sI     A((-]]>* 	8&&z37	8 	8 	8s   A		Ac                l   d}|j                  | j                        }| j                  |       t        j                  t
              5  | j                  ||       d d d        t        j                  t        j                  j                  |j                  d   d            g k(  sJ y # 1 sw Y   OxY w)Nz/extras_require={{":{marker}": ["barbazquux"]}},markerr   r   r0   r   r   r|   r}   r   rn   r   r   r   r    r*   r8   rW   r1   tmplr   s        r   'test_extras_require_with_invalid_markerz3TestEggInfo.test_extras_require_with_invalid_marker  s    @kk!4!4k5((-]]>* 	8&&z37	8yycii&6FG2MMM	8 	8   	B**B3c                l   d}|j                  | j                        }| j                  |       t        j                  t
              5  | j                  ||       d d d        t        j                  t        j                  j                  |j                  d   d            g k(  sJ y # 1 sw Y   OxY w)Nz5extras_require={{"extra": ["barbazquux; {marker}"]}},r   r   r   r   r   s        r   .test_extras_require_with_invalid_marker_in_reqz:TestEggInfo.test_extras_require_with_invalid_marker_in_req  s    Fkk!4!4k5((-]]>* 	8&&z37	8yycii&6FG2MMM	8 	8r   c           	     P   | j                  d       t        j                  j                         j	                  |j
                  d         }t        j                  dgt        j                  j                  |j
                  d   t        |      g      d|       t        j                  j                  dd	      }t        t        j                  j                  |d
      d      5 }|j                         j                  d      }d d d        dv sJ d|v sJ y # 1 sw Y   xY w)Nz*extras_require={"foobar": ["barbazquux"]},r   HOMEr   r   r   cmdpypathdata_streamr1   r<   rj   rk   rH   rI   r   zProvides-Extra: foobarMetadata-Version: 2.4r   r   environcopyupdater*   r   run_setup_pypathsepr    strr   rS   rT   r>   r8   rW   r1   r   r   r   r@   s          r   test_provides_extrazTestEggInfo.test_provides_extra  s    (()UV**//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87K 	3rWWY__T2N	3'>99&.888	3 	3s   ' DD%c           	     &   | j                  d       t        j                  j                         j	                  |j
                  d         }t        j                  dgt        j                  j                  |j
                  d   t        |      g      d|       t        j                  j                  dd	      }t        t        j                  j                  |d
      d      5 }|j                         }d d d        dvsJ y # 1 sw Y   xY w)Nz0install_requires=["spam ; python_version<'3.6'"]r   r   r   r   r   r   r<   rj   rk   rH   rI   zProvides-Extra:)r   r   r   r   r   r*   r   r   r   r    r   r   rS   rT   )r8   rW   r1   r   r   r   pkg_info_texts          r   test_doesnt_provides_extraz&TestEggInfo.test_doesnt_provides_extra  s    ((B	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87K 	&rGGIM	& 555	& 	&s   'DD)fileslicense_in_sourcesz}
                              [metadata]
                              license_file = LICENSE
                              zTest license)rF   LICENSETz
                              [metadata]
                              license_file = INVALID_LICENSE
                              z
                              zexclude LICENSE)rF   r   r   z
                              [metadata]
                              license_file = LICEN[CS]E*
                              glob_pattern)idc           	        | j                          t        j                  |       t        j                  dgt
        j                  j                  |j                  d   t        |      g             t
        j                  j                  dd      }t        |d      j                  d      }|rd	|v sJ y d	|vsJ d
|vsJ y )Nr   r   r   r   r<   rj   rl   rH   rI   r   INVALID_LICENSE)r9   r   r/   r   r   r   r   r    r*   r   r   	read_text)r8   rW   r1   r   r   r   sources_texts          r   test_setup_cfg_license_filez'TestEggInfo.test_setup_cfg_license_file!  s    D 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT,,,L00$L888r   )r   incl_licensesexcl_licensesz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              ABC licenseXYZ license)rF   LICENSE-ABCLICENSE-XYZr  r  z
                              [metadata]
                              license_files = LICENSE-ABC, LICENSE-XYZ
                              z
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                              zv
                              [metadata]
                              license_files =
                              z
                              [metadata]
                              license_files = LICENSE-XYZ
                              z
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  INVALID_LICENSE
                              )rF   r  r   r   z~
                              [metadata]
                              license_files = LICENSE
                              zexclude LICENSE-XYZ)rF   r   r  r  r   zABC copyingz
ABC noticezABC authorsLicensezInvalid license)rF   r  COPYING-ABC
NOTICE-ABCAUTHORS-ABCLICENCE-XYZr   INVALID-LICENSE)r  r  r	  r
  r  r   r  default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE*
                              z
XYZ notice)rF   r  
NOTICE-XYZr  no_default_glob_patternsz
                              [metadata]
                              license_files =
                                  LICENSE-ABC
                                  LICENSE*
                              files_only_added_oncez
                              [metadata]
                              license_files = **/LICENSE
                              zDon't includeVendor license)rF   r   LICENSE-OTHERvendorzvendor/LICENSEr  recursive_globc           	     4   | j                          t        j                  |       t        j                  dgt
        j                  j                  |j                  d   t        |      g             t
        j                  j                  dd      }t        |d      j                  d      }|j                         D cg c]  }|j                          }	}|D ]  }
|	j                  |
      d	k(  rJ  |D ]  }
|	j                  |
      d
k(  rJ  y c c}w Nr   r   r   r<   rj   rl   rH   rI   r   r   r9   r   r/   r   r   r   r   r    r*   r   r   r   
splitlinesr   countr8   rW   r1   r   r  r  r   r   linesources_lineslfs              r   test_setup_cfg_license_filesz(TestEggInfo.test_setup_cfg_license_filesu  s    d 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT2>2I2I2KL$LL 	0B &&r*a//	0   	0B &&r*a//	0 M   Dz
                              [metadata]
                              license_file =
                              license_files =
                              z
                              [metadata]
                              license_file =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                              a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              zPQR license)rF   r  LICENSE-PQRr  )r  r   r  a9  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-ABC
                                  LICENSE-XYZ
                                  LICENSE-PQR
                              z
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                  LICENSE-XYZ
                              r   )rF   r   a  
                              [metadata]
                              license_file = LICENSE-ABC
                              license_files =
                                LICENSE-PQR
                                LICENSE-XYZ
                              z'exclude LICENSE-ABC
exclude LICENSE-PQR)rF   r   r  r   r  z~
                              [metadata]
                              license_file = LICENSE*
                              z
                              [metadata]
                              license_file = LICENSE*
                              license_files =
                                NOTICE*
                              )rF   r  r	  r
  r	  r
  combined_glob_patterrnsc           	     4   | j                          t        j                  |       t        j                  dgt
        j                  j                  |j                  d   t        |      g             t
        j                  j                  dd      }t        |d      j                  d      }|j                         D cg c]  }|j                          }	}|D ]  }
|	j                  |
      d	k(  rJ  |D ]  }
|	j                  |
      d
k(  rJ  y c c}w r  r  r  s              r   )test_setup_cfg_license_file_license_filesz5TestEggInfo.test_setup_cfg_license_file_license_filesY  s    L 	

5  ::??CIIe$4c*o#FG	
 ww||C8L-8BBGBT2>2I2I2KL$LL 	0B &&r*a//	0   	0B &&r*a//	0 Mr  c           	        | j                          t        j                  t        d      ddddddid       t	        j
                  d	gt        j                  j                  |j                  d
   t        |      g             t        j                  j                  dd      }t        t        j                  j                  |d      d      5 }|j                         j                  d      }ddd       D cg c]  }|j                  d      s| }}t        |      dk(  sJ d|d   k(  sJ d|dd v sJ d|dd v sJ d|d   v sJ y# 1 sw Y   `xY wc c}w )zCAll matched license files should have a corresponding License-File.z
                              [metadata]
                              license_files =
                                  NOTICE*
                                  LICENSE*
                                  **/LICENSE
                              r  r  includedznot includer   r  )rF   r  r  NOTICEIGNOREr  r   r   r   r<   rj   rk   rH   rI   r   NzLicense-File:   zLicense-File: NOTICEr   zLicense-File: LICENSE-ABCr   zLicense-File: LICENSE-XYZzLicense-File: vendor/LICENSEr   )r9   r   r/   r   r   r   r   r   r    r*   r   rS   rT   r>   r   r   )r8   rW   r1   r   r   r@   r  license_file_liness           r   test_license_file_attr_pkg_infoz+TestEggInfo.test_license_file_attr_pkg_info  s^   

" )( # "23
 	" 	  ::??CIIe$4c*o#FG	
 ww||C8"'',,|Z87K 	3rWWY__T2N	3 ,
t/OD
 
 %&!++%);A)>>>*.@.DDD*.@.DDD-1CA1FFFF	3 	3
s    E<EEEc           	        | j                  d       t        j                  dgt        j                  j                  |j                  d   t        |      g      d       t        j                  j                  dd      }t        t        j                  j                  |d      d	
      5 }|j                         j                  d      }ddd       | j                        dk(  sJ y# 1 sw Y    xY w)z5Make sure latest metadata version is used by default.r   r   r   r   r   r   r   r<   rj   rk   rH   rI   r   N)r=   r(  )r   r   r   r   r   r    r*   r   r   rS   rT   r>   rD   r8   rW   r1   r   r   r@   s         r   test_metadata_versionz!TestEggInfo.test_metadata_version8  s    ((,  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87K 	3rWWY__T2N	3 ''76AAA	3 	3s   + C**C3c           	     T   | j                  d       t        j                  j                         j	                  |j
                  d         }t        j                  dgt        j                  j                  |j
                  d   t        |      g      d|       t        j                  j                  dd	      }t        t        j                  j                  |d
      d      5 }|j                         j                  d      }d d d        d}|v sJ d|v sJ y # 1 sw Y   xY w)Nz.long_description_content_type='text/markdown',r   r   r   r   r   r   r<   rj   rk   rH   rI   r   z'Description-Content-Type: text/markdownr   r   r8   rW   r1   r   r   r   r@   expected_lines           r   "test_long_description_content_typez.TestEggInfo.test_long_description_content_typeF  s     	((@	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87K 	3rWWY__T2N	3A..&.888		3 	3s   ' DD'c           	         | j                  d       t        j                  dgt        j                  j                  |j                  d   t        |      g      d       t        j                  j                  dd      }t        t        j                  j                  |d      d	
      5 }|j                         j                  d      }d d d        dv sJ d|d   k(  sJ ||j                  d      d  }d|v sJ d|v sJ y # 1 sw Y   :xY w)Nzqlong_description='This is a long description\nover multiple lines',long_description_content_type='text/markdown',r   r   r   r,  r<   rj   rk   rH   rI   r   r   r   zThis is a long descriptionzover multiple lines)r   r   r   r   r   r    r*   r   r   rS   rT   r>   index)r8   rW   r1   r   r   r@   long_desc_liness          r   test_long_descriptionz!TestEggInfo.test_long_descriptiona  s    
 	((=	
 	  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87K 	3rWWY__T2N	3&.88^B'''()=)=b)A)CD+>>$777	3 	3s   + DDc           	        | j                  d       t        j                  j                         j	                  |j
                  d         }t        j                  dgt        j                  j                  |j
                  d   t        |      g      d|       t        j                  j                  dd	      }t        t        j                  j                  |d
      d      5 }|j                         j                  d      }d d d        d}|v sJ d}||v sJ | j                  |      dk\  sJ y # 1 sw Y   0xY w)Nzproject_urls={
                'Link One': 'https://example.com/one/',
                'Link Two': 'https://example.com/two/',
                },r   r   r   r   r   r   r<   rj   rk   rH   rI   r   z/Project-URL: Link One, https://example.com/one/z/Project-URL: Link Two, https://example.com/two/r   r=   r   r   r   r   r   r*   r   r   r   r    r   r   rS   rT   r>   rD   r0  s           r   test_project_urlszTestEggInfo.test_project_urlsx  s    	((	
 **//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87K 	3rWWY__T2N	3I..I..''76AAA	3 	3s   ' D66D?c           	        | j                  d       t        j                  dgt        j                  j                  |j                  d   t        |      g      d       t        j                  j                  dd      }t        t        j                  j                  |d      d	
      5 }|j                         j                  d      }ddd       dv sJ y# 1 sw Y   xY w)zTest single line license.zlicense='MIT',r   r   r   r,  r<   rj   rk   rH   rI   r   NzLicense: MITr   r   r   r   r   r    r*   r   r   rS   rT   r>   r-  s         r   test_licensezTestEggInfo.test_license  s    (()9:  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87K 	3rWWY__T2N	3///	3 	3s   + CC#c           	        | j                  d       t        j                  dgt        j                  j                  |j                  d   t        |      g      d       t        j                  j                  dd      }t        t        j                  j                  |d      d	
      5 }|j                         j                  d      }ddd       dv sJ d|v sJ ddj                  |      v sJ y# 1 sw Y   +xY w)z:Test license is escaped correctly if longer than one line.z<license='This is a long license text \nover multiple lines',r   r   r   r,  r<   rj   rk   rH   rI   r   Nz%License: This is a long license text z        over multiple linesztext 
        over multipler=  r-  s         r   test_license_escapezTestEggInfo.test_license_escape  s    ((K	
 	  ::??CIIe$4c*o#FG	

 ww||C8"'',,|Z87K 	3rWWY__T2N	3 7.HH,>>->1JJJJ	3 	3s   + C55C>c           	     p   | j                  d       t        j                  j                         j	                  |j
                  d         }t        j                  dgt        j                  j                  |j
                  d   t        |      g      d|       t        j                  j                  dd	      }t        t        j                  j                  |d
      d      5 }|j                         j                  d      }d d d        dv sJ | j                  |      dk\  sJ y # 1 sw Y   &xY w)Nzpython_requires='>=2.7.12',r   r   r   r   r   r   r<   rj   rk   rH   rI   r   zRequires-Python: >=2.7.12r9  r:  r   s          r   test_python_requires_egg_infoz)TestEggInfo.test_python_requires_egg_info  s    (()JK**//#**6" + 
 	  ::??CIIe$4c*o#FG		
 ww||C8"'',,|Z87K 	3rWWY__T2N	3*n<<''76AAA	3 	3s   ' D,,D5c                H    ddg}|D ]  }t        j                  |      rJ  y )Nz:standard file not found: should have one of foo.py, bar.pyz"standard file 'setup.py' not found)r	   _should_suppress_warning)r8   fixturesr   s      r   'test_manifest_maker_warning_suppressionz3TestEggInfo.test_manifest_maker_warning_suppression  s3    H0

  	@C!::3??	@r   c                   | j                          t        ddd      }d|_        t        |      }|j	                          |j                          d|j                  j                  v sJ t        |j                  dz   d      5 }|j                         j                  d	      }d|v sJ 	 d d d        y # 1 sw Y   y xY w)
Nfoo0.0.1r   versionznon_setup.pyr6   z/SOURCES.txtrH   rI   r   )r9   r   script_namer   finalize_optionsr   filelistr   rS   rT   r>   )r8   rW   rY   egg_info_instancer[   sourcess         r   test_egg_info_includes_setup_pyz+TestEggInfo.test_egg_info_includes_setup_py  s    Uw?@)$TN**,.77====#,,~=P 	)TUffhnnT*G(((	) 	) 	)s   &B55B>Nc           	     J   t         j                  j                         j                  |j                  d         }|dg}t        j                  |t         j                  j                  |j                  d   t        |      g      d|      \  }}|rJ |       |r||v sJ y y )Nr   r   r   r   r   r   )
r   r   r   r   r*   r   r   r   r    r   )r8   rW   r1   r   outputr   coder   s           r   rn   z!TestEggInfo._run_egg_info_command  s    **//#**6" + 
 ;C !--::??CIIe$4c*o#FG	

d T>!> r   c                   | j                          t        j                  dt        d      i       | j	                  ||       t
        j                  j                  dd      }t        t
        j                  j                  |d      d      5 }|j                         j                  d      }d d d        d	v sJ y # 1 sw Y   xY w)
NrF   z
                              [egg_info]
                              tag_build = dev
                              tag_date = 0
                              tag_svn_revision = 0
                              r<   rj   rk   rH   rI   r   zVersion: 0.0.0.dev0r   r-  s         r   test_egg_info_tag_only_oncez'TestEggInfo.test_egg_info_tag_only_once  s    

"	
 		 	"":s3ww||C8"'',,|Z87K 	3rWWY__T2N	3$666	3 	3s    B==C)r@   z	list[str]returnztuple[int, int])F)NN)0r   r   r   r   r7   r9   r   rD   r^   rU   rh   rr   r   r   r   r   r   sysversion_infor   r   r   r   r   r   r   r   r   r   r   r|   r   r   r   r  r#  r*  r.  r2  r7  r;  r>  r@  rB  rF  rQ  rn   rV  r   r   r   r4   r4   1   s   		L	  
>4 2 2!>F* 1B*<$ ))9)9!)<(=Q?O"4S5E5Ea5H4I KN, ,\ ##	
												 &'";g $ TjNkTjN*	8NN9"6$ [[' "&""  .  "&""  .  "&""  . 	 "&"" $5-	  FLL!%""  . !a=	
@B9C@B9& [[3 "&"" $1#0 .$ "&"" $1#0	 .  "&"" $1#0
 " "&"" $1#0	 .  "&"" $1#0	   "&"" $2
 "#" "&""  . 
 "&"" $5-	   "&"" $9#0#0 .!$ FLL!##0#0".#0#0('8	 ##*+. FLL!%"" $1".
 -  FLL!%"" $1
 *  FLL!%""  -%4(*:;
 ,- !#wK	
N^0_N^0* [[3 "&"" $1#0
 ." "&"" $1#0 .& "&"" $1#0#0 >!( "&"	" $1#0#0  >%, "&"" $1#0#0 .!( "&"" $2 .& "&"" $N#0#0#0  >%( FLL!%"" $1".	 - FLL!%"" $1".#0 -,![_	
bF0GbF0*%GNB968.B@0K$B"@)"&7r   r4   c                      e Zd Zd Zd Zy)TestWriteEntriesc                `   t        ddd      }ddi|_        |j                  d      }d}t        j                  t
        j                  t        f|      5 }t        |dd	       d
|j                  j                  d   v sJ dt        |j                        v sJ 	 d d d        y # 1 sw Y   y xY w)NrH  rI  rJ  zfoo = invalid-identifier:foor   z,(Invalid object reference|Problems to parse)rw   entry_pointsrm   z#ensure entry-point follows the specr   zinvalid-identifier)r   r]  get_command_objr|   r}   r   OptionErrorr   r
   r   r   r   )r8   rW   r1   rY   r   expected_msgexs          r   test_invalid_entry_pointz)TestWriteEntries.test_invalid_entry_point  s    Uw?@"$BC"":.F]]F..
;<P 	9TV#~/AB8BHHMM!<LLL'3rxx=888	9 	9 	9s   AB$$B-c                    t        ddd      }ddgd|_        |j                  d      }t        |dd	       t	        d	      j                  d
      }d|v sJ d|v sJ y )NrH  rI  rJ  zfoo = bar:bazzfaa = bor:boz)abcdefr   r]  rm   rH   rI   z[abc]
foo = bar:baz
z[def]
faa = bor:boz
)r   r]  r^  r
   r   r   )r8   rW   r1   rY   r   r\   s         r   test_valid_entry_pointz'TestWriteEntries.test_valid_entry_point  su    Uw?@"#$
 "":.c>+=>)*44g4F'722'7222r   N)r   r   r   rb  rf  r   r   r   r[  r[    s    9
3r   r[  )#
__future__r   r   r   r   r`   r'   rX  r   pathlibr   unittestr   r|   jaracor   
setuptoolsr   setuptools.command.egg_infor   r	   r
   setuptools.distr   r   r   r   textwrapr   r   r   fixturer1   r4   r[  r   r   r   <module>rp     sv    " 
  	 	  
       O O ( # 	# 	  (Q7 Q7h&3 3r   