
    ,h                     ~    d Z ddlZddlZddlZddlZddlmZmZ ddlm	Z	 ddl
mZ  G d d      Z G d	 d
      Zd Zy)z%Tests for automatic package discovery    N)find_namespace_packagesfind_packages)FlatLayoutPackageFinder   )	os_helperc                       e Zd Zd Zd Zd ZddZddZd Zd Z	d	 Z
d
 Zd Zd Zej                  j!                   ej$                          d      d        Zd Zd Zd Zd Zd Zd Zy)TestFindPackagesc                 V    t        j                         | _        | j                          y N)tempfilemkdtempdist_dir_make_pkg_structureselfmethods     e/var/www/html/Resume-Scraper/venv/lib/python3.12/site-packages/setuptools/tests/test_find_packages.pysetup_methodzTestFindPackages.setup_method   s     ((*  "    c                 B    t        j                  | j                         y r   )shutilrmtreer   r   s     r   teardown_methodz TestFindPackages.teardown_method   s    dmm$r   c                    | j                  d| j                        | _        | j                  d| j                         | j                  d| j                        | _        | j                  d| j                         | j                  d| j                        | _        | j                  d| j
                         | j                  d| j                        | _        | j                  d| j                        | _        | j                  d	| j                         | j                  d
| j                         | j                  d| j                         y)aG  Make basic package structure.

        dist/
            docs/
                conf.py
            pkg/
                __pycache__/
                nspkg/
                    mod.py
                subpkg/
                    assets/
                        asset
                    __init__.py
            setup.py

        docszconf.pypkg__pycache__nspkgzmod.pysubpkgassetsasset__init__.pyzsetup.pyN)_mkdirr   docs_dir_touchpkg_dir
ns_pkg_dirsub_pkg_dir	asset_dir)r   s    r   r   z$TestFindPackages._make_pkg_structure   s    " FDMM:It}}-{{5$--8M4<<0++gt||<Hdoo.;;x>Xt/?/?@GT^^,M4#3#34J.r   Nc                 t    |r t         j                  j                  ||      }t        j                  |       |S r   )ospathjoinmkdir)r   r,   
parent_dirs      r   r#   zTestFindPackages._mkdir4   s)    77<<
D1D
r   c                 ~    |r t         j                  j                  ||      }t        |d      j	                          |S )Nwb)r+   r,   r-   openclose)r   r,   dir_s      r   r%   zTestFindPackages._touch:   s1    77<<d+DT4 r   c                 x    | j                  d| j                         t        | j                        }|ddgk(  sJ y )Nr"   r   
pkg.subpkgr%   r&   r   r   r   packagess     r   test_regular_packagez%TestFindPackages.test_regular_package@   s5    M4<<0 /E<0000r   c                 z    | j                  d| j                         t        | j                  d      }|dgk(  sJ y )Nr"   )zpkg.*excluder   r7   r8   s     r   test_excludezTestFindPackages.test_excludeE   s4    M4<<0 
CE7"""r   c                     | j                  d| j                         | j                  d| j                         t        | j                  d      }|dgk(  sJ y)zW
        Excluding a parent package should not exclude child packages as well.
        r"   )r   r<   r6   N)r%   r&   r(   r   r   r8   s     r   test_exclude_recursivez'TestFindPackages.test_exclude_recursiveJ   sJ     	M4<<0M4#3#34 AL>)))r   c                     | j                  d| j                         | j                  d| j                        }| j                  d|       t	        | j                  dg      }|dgk(  sJ y)zM
        If include is specified, other packages should be excluded.
        r"   	other_pkg)includeN)r%   r&   r#   r   r   )r   alt_dirr9   s      r   test_include_excludes_otherz,TestFindPackages.test_include_excludes_otherS   sZ     	M4<<0++k4==9M7+ FK=(((r   c                 4   t        j                  t        j                  j	                  | j
                  d             | j                  d| j                        }| j                  d|       | j                  d|       t        | j
                        }d|vsJ y )Npkg/subpkg/assetsz	some.datar"   zfile.datzpkg.some.data)
r   r   r+   r,   r-   r   r#   r&   r%   r   )r   data_dirr9   s      r   test_dir_with_dot_is_skippedz-TestFindPackages.test_dir_with_dot_is_skipped]   sn    bggll4==2EFG;;{DLL9M8,J) /h...r   c                     | j                  d| j                        }| j                  d|      }| j                  d|       t        | j                        }d|vsJ y)zk
        Ensure that a package in a non-package such as build/pkg/__init__.py
        is excluded.
        buildr   r"   z	build.pkgN)r#   r   r%   r   )r   	build_dirbuild_pkg_dirr9   s       r   ,test_dir_with_packages_in_subdir_is_excludedz=TestFindPackages.test_dir_with_packages_in_subdir_is_excludede   sR    
 KK7	E95M=1 /(***r   zSymlink support required)reasonc                 4   | j                  d| j                         t        j                  j	                  | j
                  d      }t        j                  d|       t        j                  j                  |      sJ t        | j
                        }d|v sJ y)z
        A symbolically-linked directory should be treated like any other
        directory when matched as a package.

        Create a link from lpkg -> pkg.
        r"   lpkgr   N)	r%   r&   r+   r,   r-   r   symlinkisdirr   )r   
linked_pkgr9   s      r   $test_symlinked_packages_are_includedz5TestFindPackages.test_symlinked_packages_are_includedp   sk     	M4<<0WW\\$--8



5*%ww}}Z(( /!!!r   c                 6    t        |      t        |      k(  sJ y r   )set)r   actualexpecteds      r   _assert_packagesz!TestFindPackages._assert_packages   s    6{c(m+++r   c                 `    t        | j                  dgdg      }| j                  |g d       y )Nzpkg*pkg.subpkg.assets)rC   r=   r   	pkg.nspkgr6   r   r   rZ   r8   s     r   test_pep420_ns_packagez'TestFindPackages.test_pep420_ns_package   s0    *MMF86I5J
 	h(JKr   c                 \    t        | j                  dg      }| j                  |g d       y )Nr\   r<   )r   r   r^   r6   r_   r8   s     r   "test_pep420_ns_package_no_includesz3TestFindPackages.test_pep420_ns_package_no_includes   s'    *4==CVBWXh(RSr   c                 Z    t        | j                        }g d}| j                  ||       y )N)r   r   r^   r6   r\   r_   )r   r9   rY   s      r   .test_pep420_ns_package_no_includes_or_excludesz?TestFindPackages.test_pep420_ns_package_no_includes_or_excludes   s%    *4==9Rh1r   c                     | j                  d| j                         t        | j                  ddg      }| j	                  |g d       y )Nr"   r   r\   r<   r]   )r%   r&   r   r   rZ   r8   s     r   3test_regular_package_with_nested_pep420_ns_packageszDTestFindPackages.test_regular_package_with_nested_pep420_ns_packages   s@    M4<<0*MMF,?#@
 	h(JKr   c                    t        j                  | j                         t        j                  t        j                  j                  | j                  d             t        | j                        }| j                  |g d       y )NrG   r]   )	r   r   r$   r+   r,   r-   r   r   rZ   r8   s     r   *test_pep420_ns_package_no_non_package_dirsz;TestFindPackages.test_pep420_ns_package_no_non_package_dirs   sQ    dmm$bggll4==2EFG*4==9h(JKr   r   )__name__
__module____qualname__r   r   r   r#   r%   r:   r>   r@   rE   rI   rN   pytestmarkskipifr   can_symlinkrU   rZ   r`   rb   rd   rf   rh    r   r   r	   r	      s    #%/:1
#
*)/	+ [[1I1133<VW" X",LT2
LLr   r	   c            	           e Zd Zg dddgfddgddgfg dg fg ddgfg d	dgfg d
g dfg dg dfdZej
                  j                  dej                               d        Zy)TestFlatLayoutPackageFinder)z.pkg/__init__.pypkg/__init__.pyzpkg/nested/file.txtr   z
pkg.nestedz_pkg/__init__.pyzpkg/_private/__init__.pyzpkg._private)zinvalid-pkg/__init__.pyzother.pkg/__init__.pyzyet,another/file.py)rs   zdocs/conf.pyzdocs/readme.rst)rs   ztests/test_pkg.pyztests/__init__.py)rs   zexamples/__init__.pyzexamples/file.pyzexample/other_file.pyzpkg/example/__init__.pyzpkg/examples/__init__.py)r   zpkg.exampleszpkg.example)zhtmlcov/index.htmlrs   ztasks/__init__.pyztasks/subpackage/__init__.pyzfabfile/__init__.pyzfabfile/subpackage/__init__.pyzpkg/tasks/__init__.pyzpkg/fabfile/__init__.py)r   z	pkg.taskszpkg.fabfile)zhidden-folderszprivate-packageszinvalid-namer   testsexamplesztool-specificexamplec                     | j                   |   \  }}t        ||       t        j                  t	        |            }t        |      t        |      k(  sJ y r   )EXAMPLESensure_filesr   findstrrW   )r   tmp_pathrv   filesexpected_packagesfound_packagess         r   &test_unwanted_directories_not_includedzBTestFlatLayoutPackageFinder.test_unwanted_directories_not_included   sM    #'==#9  Xu%055c(mD>"c*;&<<<<r   N)	ri   rj   rk   rx   rl   rm   parametrizekeysr   rp   r   r   rr   rr      s     KL!

  !;<N#

 X
 H%QIG

 3

 0
=,H\ [[Y8= 9=r   rr   c                 v    |D ]4  }| |z  }|j                   j                  dd       |j                          6 y )NT)parentsexist_ok)parentr.   touch)	root_pathr}   filer,   s       r   ry   ry      s;     4$6

r   )__doc__r+   r   r   rl   
setuptoolsr   r   setuptools.discoveryr   compat.py39r   r	   rr   ry   rp   r   r   <module>r      s<    + 	    = 8 "ML ML`4= 4=nr   