
    ;e                         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mZ ddl	m
Z
 ddlmZ ddlmZ  G d dej        ej        ej                  Zd	 Zed
k    r e e                       dS dS )z'Tests for distutils.command.build_clib.    N)run_unittestmissing_compiler_executablerequires_subprocess)
build_clib)DistutilsSetupError)supportc                        e Zd Z fdZ fdZd Zd Zd Zd Z e	j
        ej        dk    d           e            d	                         Z xZS )
BuildCLibTestCasec                     t                                                       t          t          j                  | _        d S N)supersetUpdict	sysconfig_CONFIG_VARS_backup_CONFIG_VARSself	__class__s    6/usr/lib/python3.11/distutils/tests/test_build_clib.pyr   zBuildCLibTestCase.setUp   s-    #'	(>#?#?       c                     t                                                       t          j                                         t          j                            | j                   d S r   )r   tearDownr   r   clearupdater   r   s    r   r   zBuildCLibTestCase.tearDown   sN    $$&&&%%d&>?????r   c                    |                                  \  }}t          |          }|                     t          |j        d           |                     t          |j        ddg           |                     t          |j        ddg           |                     t          |j        ddg           |                     t          |j        di fd	g           di fdd
difg}|                    |           d S )Nfoofoo1foo2)   r   )namer   )r!   r   )zanother/namer   r!   )anotherr   okgood)create_distr   assertRaisesr   check_library_list)r   pkg_dirdistcmdlibss        r   test_check_library_distz)BuildCLibTestCase.test_check_library_dist   s(   ((** 	-s/EuMMM 	-s/E!6*	, 	, 	,
 	-s/E&(89	; 	; 	; 	-s/E+35	6 	6 	6
 	-s/E"B<.0	1 	1 	1
 vf~67t$$$$$r   c                 T   |                                  \  }}t          |          }di fg|_        |                     t          |j                   dddifg|_        |                     t          |j                   ddddgifg|_        |                     |                                ddg           dddifg|_        |                     |                                ddg           dddifdddd	gifg|_        |                     |                                g d
           d S )Nr!   sourcesr    ab)r/   r0   name2cd)r/   r0   r2   r3   )r%   r   	librariesr&   r   get_source_filesassertEqualr   r(   r)   r*   s       r   test_get_source_filesz'BuildCLibTestCase.test_get_source_files:   sH   ((** !"-s/CDDD 9a.12-s/CDDD 9sCj"9:;--//#s<<< 9j"9:;--//#s<<< 9j"9:!ISz#:;=--//1E1E1EFFFFFr   c                 z   |                                  \  }}t          |          } G d d          } |            |_        dddifg}|                     t          |j        |           ddt                      ifg}|                    |           ddt                      ifg}|                    |           d S )Nc                       e Zd Zd ZeZdS )<BuildCLibTestCase.test_build_libraries.<locals>.FakeCompilerc                      d S r    )argskws     r   compilezDBuildCLibTestCase.test_build_libraries.<locals>.FakeCompiler.compileU   s    r   N)__name__
__module____qualname__r@   create_static_libr=   r   r   FakeCompilerr;   T   s%           'r   rE   r!   r.   notvalid)r%   r   compilerr&   r   build_librarieslisttuple)r   r(   r)   r*   rE   libs         r   test_build_librariesz&BuildCLibTestCase.test_build_librariesP   s    ((**	( 	( 	( 	( 	( 	( 	( 	(
 $|~~ J/01-s/BCHHHDFF+,-C   EGG,-.C     r   c                    |                                  \  }}t          |          }d|_        |                                 |                     |j        dg           d |_        |                                 |                     |j        g            d|j        _        |                     t          |j                   d S )Nzone-dirWONTWORK)	r%   r   include_dirsfinalize_optionsr6   distributionr4   r&   r   r7   s       r   test_finalize_optionsz'BuildCLibTestCase.test_finalize_optionse   s    ((**$)I;777)2...%/"-s/CDDDDDr   win32zcan't test on Windowsc                 $   |                                  \  }}t          |          }t          j                            |d          }|                     |d           dd|gifg|_        t          j                            |d          }t          j        |           ||_        ||_        t                      }|| 
                    d|z             |                                 |                     dt          j        |                     d S )Nzfoo.czint main(void) { return 1;}
r   r.   buildzThe %r command is not foundzlibfoo.a)r%   r   ospathjoin
write_filer4   mkdir
build_tempr   skipTestrunassertInlistdir)r   r(   r)   r*   foo_cr[   ccmds          r   test_runzBuildCLibTestCase.test_runt   s     ((**Wg..>???)eW!567W\\'733

## +,,MM7$>??? 				 	j"*Z"8"899999r   )rA   rB   rC   r   r   r,   r8   rL   rR   unittestskipIfsysplatformr   rb   __classcell__)r   s   @r   r
   r
      s        @ @ @ @ @@ @ @ @ @
% % %<G G G,! ! !*E E E X_S\W,.EFF: :  GF: : : : :r   r
   c                  X    t          j                                        t                    S r   )rc   
TestLoaderloadTestsFromTestCaser
   r=   r   r   
test_suiterk      s       667HIIIr   __main__)__doc__rc   rV   re   r   test.supportr   r   r   distutils.command.build_clibr   distutils.errorsr   distutils.testsr   TempdirManagerLoggingSilencerTestCaser
   rk   rA   r=   r   r   <module>ru      s!   - -  				 



              4 3 3 3 3 3 0 0 0 0 0 0 # # # # # #~: ~: ~: ~: ~:./ )~: ~: ~:@J J J zL r   