
    daf                     N   d Z ddlZddlZddlmZ ddlmZmZ ddlZ ej                         5   ej                  de        ed      Zddd       ddlZd Z G d d	ej                        Z G d
 dej                        Zedk(  r ej&                          yy# 1 sw Y   RxY w)z# Test suite for the code in msilib     N)import_module)TESTFNunlinkignoremsilibc                  l    t         dz   } t        j                  | t        j                  dddd      }|| fS )Nz.msizPython Testsproduct_codez1.0PSF)r   r   init_databaseschema)pathdbs     +/root/Python-3.12.4/Lib/test/test_msilib.pyr   r      s<    F?D			
B t8O    c                   B    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zy
)MsiDatabaseTestCasec                 d   t               \  }}g }|j                  d      }|j                  d        	 |j                         }|n!|j	                  |j                  d             4|j                          |j                          | j                  |g d       | j                  t        |       y )Nz$SELECT Property, Value FROM Property   )ProductNameProductCodeProductVersionManufacturerProductLanguage)
r   OpenViewExecuteFetchappend	GetStringCloseassertEqual
addCleanupr   )selfr   db_path
propertiesviewrecords         r   test_view_fetch_returns_nonez0MsiDatabaseTestCase.test_view_fetch_returns_none   s    #oG
{{ABTZZ\F~f..q12	 
 	



	
 	(r   c                 0   t               \  }}|j                  d      }|j                  d        |j                         }| j	                  |j                  d      d       |j                          |j                          | j                  t        |       y )Nu&   SELECT 'ß-розпад' FROM Propertyr   u   ß-розпад)	r   r   r   r   r    r   r   r!   r   )r"   r   r#   r%   r&   s        r   test_view_non_asciiz'MsiDatabaseTestCase.test_view_non_ascii1   so    #oG{{CDT))!,.?@



(r   c                    t               \  }}	 |j                  d      }|j                  t        j                        }| j                  |d       |j                  t        j                  d       |j                  t        j                        }| j                  |d       |j                  t        j                  d       |j                  t        j                        }| j                  |d       |j                  t        j                  d       |j                  t        j                        }| j                  |d       d }d }t        j                  |       y # d }d }t        j                  |       w xY w)	Nc   s   Installation Database  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaas  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa)	r   GetSummaryInformationGetPropertyr   	PID_TITLEr    SetPropertyosr   )r"   r   r#   sum_infotitles        r   &test_summaryinfo_getproperty_issue1104z:MsiDatabaseTestCase.test_summaryinfo_getproperty_issue1104;   s-   #oG	//3H(()9)9:EU$<=  !1!19=(()9)9:EUJ/  !1!1:>(()9)9:EUK0  !1!1:>(()9)9:EUK0BHIIg BHIIgs   D5E E9c                     | j                  t        j                        5 }t        j                  dt        j                         d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nznon-existent.msizopen failed)assertRaisesr   MSIErrorOpenDatabaseMSIDBOPEN_READONLYr    str	exception)r"   cms     r   test_database_open_failedz-MsiDatabaseTestCase.test_database_open_failedR   s_    v/ 	O2 2F4M4MN	OR\\*M:	O 	Os   %A33A<c                 F   t         j                  j                  t        d      }| j	                  t
        j                        5 }t        j                  |t
        j                         d d d        | j                  t        j                        d       y # 1 sw Y   /xY w)Nztest.msizcreate failed)r3   r   joinr   r8   r   r9   r:   MSIDBOPEN_CREATEr    r<   r=   )r"   r#   r>   s      r   test_database_create_failedz/MsiDatabaseTestCase.test_database_create_failedW   sr    '',,vz2v/ 	B2)@)@A	BR\\*O<	B 	Bs   %BB c                     t               \  }}|j                  d      }| j                  |j                  t        j
                               |j                          | j                  t        |       y )Nr   )	r   r/   assertIsNoner0   r   PID_SECURITYr   r!   r   )r"   r   r#   summarys       r   test_get_property_vt_emptyz.MsiDatabaseTestCase.test_get_property_vt_empty]   sS    #oG**1-'--f.A.ABC

(r   c           	         t               \  }}| j                  t        |       | j                  |j                         | j                  t        j
                  j                         t	        j                  |dddd      }t	        j                  d      }t	        j                  ||d t        ddd      }|j                  d |d d       y )	Nr   Featurez	A featurePythonCAB	TARGETDIR	SourceDirkeyfile)r   r!   r   r   r   _directoriesclearrJ   rL   	Directoryr   start_component)r"   r   r#   featurecabdirs         r   &test_directory_start_component_keyfilez:MsiDatabaseTestCase.test_directory_start_component_keyfiled   s    #oG(!++112..Q	;Ijjr3fk*A/D'4;r   c                 ,   t               \  }}| j                  t        |       | j                  |j                         |j	                  d      }| j                  t        j                        5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   )	r   r!   r   r   r/   r8   r   r9   r0   )r"   r   r#   sis       r   "test_getproperty_uninitialized_varz6MsiDatabaseTestCase.test_getproperty_uninitialized_varo   sn    #oG(!%%a(v/ 	NN2	 	 	s   /B

Bc                 R   t         dz   }t         dz   }| j                  t        |       t        |d      5  	 d d d        | j                  t        |       t	        j
                  ||dfg       | j                  t        j                  j                  |             y # 1 sw Y   gxY w)Nz.txtz.cabwbztest.txt)
r   r!   r   openr   	FCICreate
assertTruer3   r   isfile)r"   filepathcabpaths      r   test_FCICreatez"MsiDatabaseTestCase.test_FCICreatew   s    F?6/)(D! 		(Hj#9":;w/0		 	s   BB&N)__name__
__module____qualname__r'   r)   r6   r?   rC   rH   rW   r[   rd    r   r   r   r      s/    )*).;
=)	<1r   r   c                   "    e Zd ZdZd Zd Zd Zy)Test_make_idzThe Identifier data type is a text string. Identifiers may contain the
    ASCII characters A-Z (a-z), digits, underscores (_), or periods (.).
    However, every identifier must begin with either a letter or an
    underscore.
    c                 v   | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       | j                  t        j                  d      d       y )Nshortnochangerequiredzone.dot_ar    r   make_idr"   s    r   test_is_no_change_requiredz'Test_make_id.test_is_no_change_required   s    NN7#W	.NN-.0B	DNN9%y	2NN3	&NN3	&r   c                     | j                  t        j                  d      d       | j                  t        j                  d      d       y )Nz9.shortz_9.shortz.shortz_.shortrp   rr   s    r   test_invalid_first_charz$Test_make_id.test_invalid_first_char   s:    NN9%z	3NN8$i	1r   c                     | j                  t        j                  d      d       | j                  t        j                  d      d       y )Nu   .sortz_.s_ortu
   .so?*+rtz
_.s_o___rtrp   rr   s    r   test_invalid_any_charz"Test_make_id.test_invalid_any_char   s:    NN;'	4NN>*L	:r   N)re   rf   rg   __doc__rs   ru   rw   rh   r   r   rj   rj      s    
&1:r   rj   __main__)rx   r3   unittesttest.support.import_helperr   test.support.os_helperr   r   warningscatch_warningssimplefilterDeprecationWarningr   msilib.schemar   TestCaser   rj   re   mainrh   r   r   <module>r      s    ) 	  4 1 X %H($678$F% 
e1(++ e1P :8$$  :F zHMMO }% %s   BB$