Hans Leidekker : msi: Add a test for properties updated by a patch.

Alexandre Julliard julliard at winehq.org
Tue May 25 12:06:10 CDT 2010


Module: wine
Branch: master
Commit: c2ce56146991ad2786458101d4e11bd6522b703e
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c2ce56146991ad2786458101d4e11bd6522b703e

Author: Hans Leidekker <hans at codeweavers.com>
Date:   Tue May 25 12:18:47 2010 +0200

msi: Add a test for properties updated by a patch.

---

 dlls/msi/tests/patch.c |   65 ++++++++++++++++++++++++++++++++++++++++++++---
 1 files changed, 60 insertions(+), 5 deletions(-)

diff --git a/dlls/msi/tests/patch.c b/dlls/msi/tests/patch.c
index 56af5f8..4de2fd0 100644
--- a/dlls/msi/tests/patch.c
+++ b/dlls/msi/tests/patch.c
@@ -54,7 +54,8 @@ static const char property_dat[] =
     "UpgradeCode\t{A2E3D643-4E2C-477F-A309-F76F552D5F43}\n"
     "ProductLanguage\t1033\n"
     "ProductName\tmsitest\n"
-    "ProductVersion\t1.1.1\n";
+    "ProductVersion\t1.1.1\n"
+    "PATCHNEWSUMMARYSUBJECT\tInstaller Database\n";
 
 static const char media_dat[] =
     "DiskId\tLastSequence\tDiskPrompt\tCabinet\tVolumeLabel\tSource\n"
@@ -708,6 +709,48 @@ static void test_simple_patch( void )
                             "InstallSource", install_source, &size );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
 
+    strcpy( path, CURR_DIR );
+    strcat( path, "\\" );
+    strcat( path, msifile );
+
+    r = MsiOpenPackageA( path, &hpackage );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    hdb = MsiGetActiveDatabase( hpackage );
+    ok( hdb, "failed to get database handle\n" );
+
+    query = "SELECT * FROM `Property` where `Property` = 'PATCHNEWPACKAGECODE'";
+    r = MsiDatabaseOpenView( hdb, query, &hview );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewExecute( hview, 0 );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewFetch( hview, &hrec );
+    ok( r == ERROR_NO_MORE_ITEMS, "expected ERROR_NO_MORE_ITEMS, got %u\n", r );
+
+    MsiCloseHandle( hrec );
+    MsiViewClose( hview );
+    MsiCloseHandle( hview );
+
+    query = "SELECT * FROM `Property` WHERE `Property` = 'PATCHNEWSUMMARYSUBJECT' "
+            "AND `Value` = 'Installer Database'";
+    r = MsiDatabaseOpenView( hdb, query, &hview );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewExecute( hview, 0 );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewFetch( hview, &hrec );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    MsiCloseHandle( hrec );
+    MsiViewClose( hview );
+    MsiCloseHandle( hview );
+
+    MsiCloseHandle( hdb );
+    MsiCloseHandle( hpackage );
+
     r = MsiApplyPatchA( mspfile, NULL, INSTALLTYPE_DEFAULT, NULL );
     ok( r == ERROR_SUCCESS || broken( r == ERROR_PATCH_PACKAGE_INVALID ), /* version 2.0 */
         "expected ERROR_SUCCESS, got %u\n", r );
@@ -721,10 +764,6 @@ static void test_simple_patch( void )
     size = get_pf_file_size( "msitest\\patch.txt" );
     ok( size == 1002, "expected 1002, got %u\n", size );
 
-    strcpy( path, CURR_DIR );
-    strcat( path, "\\" );
-    strcat( path, msifile );
-
     /* show that MsiOpenPackage applies registered patches */
     r = MsiOpenPackageA( path, &hpackage );
     ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
@@ -745,6 +784,22 @@ static void test_simple_patch( void )
     MsiCloseHandle( hrec );
     MsiViewClose( hview );
     MsiCloseHandle( hview );
+
+    query = "SELECT * FROM `Property` WHERE `Property` = 'PATCHNEWSUMMARYSUBJECT' "
+            "AND `Value` = 'Installation Database'";
+    r = MsiDatabaseOpenView( hdb, query, &hview );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewExecute( hview, 0 );
+    ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    r = MsiViewFetch( hview, &hrec );
+    todo_wine ok( r == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", r );
+
+    MsiCloseHandle( hrec );
+    MsiViewClose( hview );
+    MsiCloseHandle( hview );
+
     MsiCloseHandle( hdb );
     MsiCloseHandle( hpackage );
 




More information about the wine-cvs mailing list