
    ϶vg                         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dS )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                             ej                     d          d             Zd Zd Zd Zd Zd Zd ZdS )TestFindPackagesc                 ^    t          j                    | _        |                                  d S N)tempfilemkdtempdist_dir_make_pkg_structureselfmethods     `/var/www/pixelcanvas.ch/venv/lib/python3.11/site-packages/setuptools/tests/test_find_packages.pysetup_methodzTestFindPackages.setup_method   s*     (**  """""    c                 8    t          j        | j                   d S r   )shutilrmtreer   r   s     r   teardown_methodz TestFindPackages.teardown_method   s    dm$$$$$r   c                    |                      d| j                  | _        |                     d| j                   |                      d| j                  | _        |                      d| j                   |                      d| j                  | _        |                     d| j                   |                      d| j                  | _        |                      d| j                  | _        |                     d	| j                   |                     d
| j                   |                     d| j                   dS )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   " FDM::It}---{{5$-88M4<000++gt|<<Hdo...;;x>>Xt/?@@GT^,,,M4#3444J.....r   Nc                 r    |r t           j                            ||          }t          j        |           |S r   )ospathjoinmkdir)r   r,   
parent_dirs      r   r#   zTestFindPackages._mkdir4   s1     	27<<
D11D
r   c                     |r t           j                            ||          }t          |d                                           |S )Nwb)r+   r,   r-   openclose)r   r,   dir_s      r   r%   zTestFindPackages._touch:   s@     	,7<<d++DT4   r   c                 x    |                      d| j                   t          | j                  }|ddgk    sJ d S )Nr"   r   
pkg.subpkgr%   r&   r   r   r   packagess     r   test_regular_packagez%TestFindPackages.test_regular_package@   sC    M4<000 //E<0000000r   c                 z    |                      d| j                   t          | j        d          }|dgk    sJ d S )Nr"   )zpkg.*excluder   r7   r8   s     r   test_excludezTestFindPackages.test_excludeE   sE    M4<000 
CCCE7""""""r   c                     |                      d| j                   |                      d| j                   t          | j        d          }|dgk    sJ dS )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   s^     	M4<000M4#3444 AAAL>))))))r   c                     |                      d| j                   |                     d| j                  }|                      d|           t	          | j        dg          }|dgk    sJ dS )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   sr     	M4<000++k4=99M7+++ FFFK=((((((r   c                 6   t          j        t          j                            | j        d                     |                     d| j                  }|                     d|           |                     d|           t          | j                  }d|vsJ d S )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]   s    bgll4=2EFFGGG;;{DL99M8,,,J))) //h......r   c                     |                      d| j                  }|                      d|          }|                     d|           t          | j                  }d|vsJ dS )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   sf    
 KK77	E955M=111 //(******r   zSymlink support required)reasonc                 &   |                      d| j                   t          j                            | j        d          }t          j        d|           t          j                            |          sJ t          | j                  }d|v sJ dS )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   s     	M4<000W\\$-88


5*%%%w}}Z((((( //!!!!!!r   c                 J    t          |          t          |          k    sJ d S r   )set)r   actualexpecteds      r   _assert_packagesz!TestFindPackages._assert_packages   s%    6{{c(mm++++++r   c                 h    t          | j        dgdg          }|                     |g d           d S )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   sJ    *MF86I5J
 
 
 	h(J(J(JKKKKKr   c                 d    t          | j        dg          }|                     |g d           d S )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XXh(R(R(RSSSSSr   c                 b    t          | j                  }g d}|                     ||           d S )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   s8    *4=99RRRh11111r   c                     |                      d| j                   t          | j        ddg          }|                     |g d           d S )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00*MF,?#@
 
 
 	h(J(J(JKKKKKr   c                     t          j        | j                   t          j        t          j                            | j        d                     t          | j                  }|                     |g d           d S )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   si    dm$$$bgll4=2EFFGGG*4=99h(J(J(JKKKK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	      sm       # # #% % %/ / /:      1 1 1
# # #
* * *) ) )/ / /	+ 	+ 	+ [1I1333<VWW" " XW", , ,L L LT T T2 2 2
L L LL L L 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                            de                                          d             ZdS )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 d S 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   sb    #'=#9  Xu%%%05c(mmDD>""c*;&<&<<<<<<<r   N)	ri   rj   rk   rx   rl   rm   parametrizekeysr   rp   r   r   rr   rr      s         KJJL!

  !;<N#

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

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

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