î
É Xz  ã               @   s¾   d  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 Z	 d d l m
 Z
 m Z d d „  Z Gd d „  d e j ƒ Z e d k rº e j ƒ  n  d S)	zdevelop tests
é    N)ÚDirectorySandboxÚSandboxViolationc              C   sC   t  j j d ƒ s d Sy t d ƒ }  Wn t k
 r> d SYn Xd S)zp
    Run this to determine if the local machine has win32com, and if it
    does, include additional tests.
    Úwin32FÚwin32comT)ÚsysÚplatformÚ
startswithÚ
__import__ÚImportError)Úmod© r   úO/home/ubuntu/projects/ifolica/build/setuptools/setuptools/tests/test_sandbox.pyÚhas_win32com   s    	r   c               @   sp   e  Z d  Z d d „  Z d d „  Z d d „  Z d d „  Z e e ƒ Z e ƒ  r` d	 d
 „  Z	 n  d d „  Z
 d S)ÚTestSandboxc             C   s   t  j ƒ  |  _ d  S)N)ÚtempfileÚmkdtempÚdir)Úselfr   r   r   ÚsetUp   s    zTestSandbox.setUpc             C   s   t  j |  j ƒ d  S)N)ÚshutilÚrmtreer   )r   r   r   r   ÚtearDown    s    zTestSandbox.tearDownc             C   s?   t  j d k  r d  St |  j ƒ } | j |  j t j ƒ ƒ d  S)Nz2.4)r   Úversionr   r   ÚrunÚ_file_writerÚosÚdevnull)r   Úsandboxr   r   r   Útest_devnull#   s    zTestSandbox.test_devnullc                s   ‡  f d d †  } | S)Nc                 s*   t  ˆ  d ƒ }  |  j d ƒ |  j ƒ  d  S)NÚwZxxx)ÚopenÚwriteÚclose)Úf)Úpathr   r   Údo_write*   s    z*TestSandbox._file_writer.<locals>.do_writer   )r$   r%   r   )r$   r   r   )   s    zTestSandbox._file_writerc             C   s£   d d l  } | j } t j j | d ƒ } t |  j ƒ } z@ y | j |  j | ƒ ƒ Wn t	 k
 rw |  j
 d ƒ Yn XWd t j j | ƒ rž t j | ƒ n  Xd S)zm
            win32com should not be prevented from caching COM interfaces
            in gen_py.
            r   NZ
test_writez4Could not create gen_py file due to SandboxViolation)r   Z__gen_path__r   r$   Újoinr   r   r   r   r   ZfailÚexistsÚremove)r   r   Zgen_pyÚtargetr   r   r   r   Útest_win32com3   s    	 zTestSandbox.test_win32comc             C   sS   t  j t d ƒ } t j d ƒ } t j j | t | ƒ ƒ | j	 d k sO t
 ‚ d S)zT
        It should be possible to execute a setup.py with a Byte Order Mark
        zscript-with-bom.pyÚ	namespaceZpassedN)Úpkg_resourcesÚresource_filenameÚ__name__ÚtypesÚ
ModuleTypeÚ
setuptoolsr   ÚexecfileÚvarsÚresultÚAssertionError)r   r)   r+   r   r   r   Útest_setup_py_with_BOMD   s
    		z"TestSandbox.test_setup_py_with_BOMN)r.   Ú
__module__Ú__qualname__r   r   r   r   Ústaticmethodr   r*   r6   r   r   r   r   r      s   	r   Ú__main__)Ú__doc__r   r   r   Zunittestr   r/   r,   Zsetuptools.sandboxr1   r   r   r   ZTestCaser   r.   Úmainr   r   r   r   Ú<module>   s   3