o
    HXîh¤  ã                   @   s‚   	 d dl Z d dlZd dlmZ d dlmZmZ edƒZd dlZdd„ Z	G dd„ dej
ƒZG d	d
„ d
ej
ƒZedkr?e ¡  dS dS )é    N)Úimport_module)ÚTESTFNÚunlinkÚmsilibc                  C   s&   t d } t | tjdddd¡}|| fS )Nz.msizPython TestsZproduct_codez1.0ZPSF)r   r   Úinit_databaseZschema)ÚpathÚdb© r	   ú:/opt/python-3.10.19/usr/lib/python3.10/test/test_msilib.pyr   
   s   úr   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚMsiDatabaseTestCasec                 C   sx   t ƒ \}}g }| d¡}| d ¡ 	 | ¡ }|d u rn	| | d¡¡ q| ¡  | ¡  |  |g d¢¡ |  t	|¡ d S )Nz$SELECT Property, Value FROM PropertyTé   )ZProductNameZProductCodeZProductVersionZManufacturerZProductLanguage)
r   ÚOpenViewÚExecuteÚFetchÚappendÚ	GetStringÚCloseÚassertEqualÚ
addCleanupr   )Úselfr   Údb_pathZ
propertiesÚviewÚrecordr	   r	   r
   Útest_view_fetch_returns_none   s"   


üþz0MsiDatabaseTestCase.test_view_fetch_returns_nonec                 C   sX   t ƒ \}}| d¡}| d ¡ | ¡ }|  | d¡d¡ | ¡  | ¡  |  t|¡ d S )Nu&   SELECT 'ÃŸ-Ñ€Ð¾Ð·Ð¿Ð°Ð´' FROM Propertyr   u   ÃŸ-Ñ€Ð¾Ð·Ð¿Ð°Ð´)	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r	   r	   r
   Útest_view_non_ascii.   s   


z'MsiDatabaseTestCase.test_view_non_asciic              	   C   sÌ   t ƒ \}}zV| d¡}| tj¡}|  |d¡ | tjd¡ | tj¡}|  |d¡ | tjd¡ | tj¡}|  |d¡ | tjd¡ | tj¡}|  |d¡ W d }d }t |¡ d S d }d }t |¡ w )	Néc   s   Installation DatabaseAç  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasç  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaAé  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasé  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)	r   ÚGetSummaryInformationÚGetPropertyr   Z	PID_TITLEr   ZSetPropertyÚosr   )r   r   r   Zsum_infoÚtitler	   r	   r
   Ú&test_summaryinfo_getproperty_issue11048   s(   

þz:MsiDatabaseTestCase.test_summaryinfo_getproperty_issue1104c                 C   sP   |   tj¡}t dtj¡ W d   ƒ n1 sw   Y  |  t|jƒd¡ d S )Nznon-existent.msizopen failed)ÚassertRaisesr   ÚMSIErrorÚOpenDatabaseZMSIDBOPEN_READONLYr   ÚstrÚ	exception)r   Úcmr	   r	   r
   Útest_database_open_failedO   s   ÿz-MsiDatabaseTestCase.test_database_open_failedc                 C   s^   t j td¡}|  tj¡}t |tj¡ W d   ƒ n1 sw   Y  |  	t
|jƒd¡ d S )Nztest.msizcreate failed)r   r   Újoinr   r!   r   r"   r#   ZMSIDBOPEN_CREATEr   r$   r%   )r   r   r&   r	   r	   r
   Útest_database_create_failedT   s
   ÿz/MsiDatabaseTestCase.test_database_create_failedc                 C   s>   t ƒ \}}| d¡}|  | tj¡¡ | ¡  |  t|¡ d S )Nr   )	r   r   ZassertIsNoner   r   ZPID_SECURITYr   r   r   )r   r   r   Zsummaryr	   r	   r
   Útest_get_property_vt_emptyZ   s
   

z.MsiDatabaseTestCase.test_get_property_vt_emptyc              	   C   sv   t ƒ \}}|  t|¡ |  |j¡ |  tjj¡ t |dddd¡}t d¡}t 	||d t
ddd¡}| d |d d¡ d S )	Nr   ÚFeaturez	A featureÚPythonÚCABZ	TARGETDIRZ	SourceDirZkeyfile)r   r   r   r   r   Z_directoriesÚclearr+   r-   Z	Directoryr   Zstart_component)r   r   r   ZfeatureZcabÚdirr	   r	   r
   Ú&test_directory_start_component_keyfilea   s   

ÿz:MsiDatabaseTestCase.test_directory_start_component_keyfilec                 C   sh   t ƒ \}}|  t|¡ |  |j¡ | d¡}|  tj¡ | d¡ W d   ƒ d S 1 s-w   Y  d S )Nr   éÿÿÿÿ)	r   r   r   r   r   r!   r   r"   r   )r   r   r   Úsir	   r	   r
   Ú"test_getproperty_uninitialized_varl   s   

"ÿz6MsiDatabaseTestCase.test_getproperty_uninitialized_varc                 C   sz   t d }t d }|  t|¡ t|dƒ W d   ƒ n1 sw   Y  |  t|¡ t ||dfg¡ |  tj 	|¡¡ d S )Nz.txtz.cabÚwbztest.txt)
r   r   r   Úopenr   Z	FCICreateZ
assertTruer   r   Úisfile)r   ÚfilepathZcabpathr	   r	   r
   Útest_FCICreatet   s   ÿz"MsiDatabaseTestCase.test_FCICreateN)Ú__name__Ú
__module__Ú__qualname__r   r   r    r'   r)   r*   r0   r3   r8   r	   r	   r	   r
   r      s    
r   c                   @   s&   e Zd Z	 dd„ Zdd„ Zdd„ ZdS )ÚTest_make_idc                 C   s^   |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ |   t d¡d¡ d S )NZshortZnochangerequiredzone.dotÚ_Úa©r   r   Zmake_id©r   r	   r	   r
   Útest_is_no_change_required‡   s   
ÿ
ÿ
ÿ
ÿ
ÿz'Test_make_id.test_is_no_change_requiredc                 C   ó(   |   t d¡d¡ |   t d¡d¡ d S )Nz9.shortz_9.shortz.shortz_.shortr?   r@   r	   r	   r
   Útest_invalid_first_char•   ó   
ÿ
ÿz$Test_make_id.test_invalid_first_charc                 C   rB   )Nu   .sÂ‚ortz_.s_ortu
   .sÂ‚o?*+rtz
_.s_o___rtr?   r@   r	   r	   r
   Útest_invalid_any_char›   rD   z"Test_make_id.test_invalid_any_charN)r9   r:   r;   rA   rC   rE   r	   r	   r	   r
   r<      s
    r<   Ú__main__)r   ZunittestZtest.support.import_helperr   Ztest.support.os_helperr   r   r   Zmsilib.schemar   ZTestCaser   r<   r9   Úmainr	   r	   r	   r
   Ú<module>   s    h#ÿ