James Hawkins : msi: Add tests for opening an empty package.

Alexandre Julliard julliard at winehq.org
Fri Aug 29 07:30:39 CDT 2008


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

Author: James Hawkins <jhawkins at codeweavers.com>
Date:   Thu Aug 28 21:21:22 2008 -0500

msi: Add tests for opening an empty package.

---

 dlls/msi/tests/package.c |  160 ++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 160 insertions(+), 0 deletions(-)

diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c
index ec299ea..3775cbd 100644
--- a/dlls/msi/tests/package.c
+++ b/dlls/msi/tests/package.c
@@ -7869,6 +7869,165 @@ static void test_access(void)
     DeleteFileA(msifile);
 }
 
+static void test_emptypackage(void)
+{
+    MSIHANDLE hpkg, hdb, hsuminfo;
+    MSIHANDLE hview, hrec;
+    MSICONDITION condition;
+    CHAR buffer[MAX_PATH];
+    DWORD size;
+    UINT r;
+
+    r = MsiOpenPackageA("", &hpkg);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    hdb = MsiGetActiveDatabase(hpkg);
+    todo_wine
+    {
+        ok(hdb != 0, "Expected a valid database handle\n");
+    }
+
+    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Tables`", &hview);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+    r = MsiViewExecute(hview, 0);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    r = MsiViewFetch(hview, &hrec);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    size = MAX_PATH;
+    r = MsiRecordGetString(hrec, 1, buffer, &size);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(buffer, "_Property"),
+           "Expected \"_Property\", got \"%s\"\n", buffer);
+    }
+
+    MsiCloseHandle(hrec);
+
+    r = MsiViewFetch(hview, &hrec);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    size = MAX_PATH;
+    r = MsiRecordGetString(hrec, 1, buffer, &size);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+        ok(!lstrcmpA(buffer, "#_FolderCache"),
+           "Expected \"_Property\", got \"%s\"\n", buffer);
+    }
+
+    MsiCloseHandle(hrec);
+    MsiViewClose(hview);
+    MsiCloseHandle(hview);
+
+    condition = MsiDatabaseIsTablePersistentA(hdb, "_Property");
+    todo_wine
+    {
+        ok(condition == MSICONDITION_FALSE,
+           "Expected MSICONDITION_FALSE, got %d\n", condition);
+    }
+
+    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Property`", &hview);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+    r = MsiViewExecute(hview, 0);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    /* _Property table is not empty */
+    r = MsiViewFetch(hview, &hrec);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    MsiCloseHandle(hrec);
+    MsiViewClose(hview);
+    MsiCloseHandle(hview);
+
+    condition = MsiDatabaseIsTablePersistentA(hdb, "#_FolderCache");
+    todo_wine
+    {
+        ok(condition == MSICONDITION_FALSE,
+           "Expected MSICONDITION_FALSE, got %d\n", condition);
+    }
+
+    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `#_FolderCache`", &hview);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+    r = MsiViewExecute(hview, 0);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    /* #_FolderCache is not empty */
+    r = MsiViewFetch(hview, &hrec);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    MsiCloseHandle(hrec);
+    MsiViewClose(hview);
+    MsiCloseHandle(hview);
+
+    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Streams`", &hview);
+    todo_wine
+    {
+        ok(r == ERROR_BAD_QUERY_SYNTAX,
+           "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+    }
+
+    r = MsiDatabaseOpenView(hdb, "SELECT * FROM `_Storages`", &hview);
+    todo_wine
+    {
+        ok(r == ERROR_BAD_QUERY_SYNTAX,
+           "Expected ERROR_BAD_QUERY_SYNTAX, got %d\n", r);
+    }
+
+    r = MsiGetSummaryInformationA(hdb, NULL, 0, &hsuminfo);
+    todo_wine
+    {
+        ok(r == ERROR_INSTALL_PACKAGE_INVALID,
+           "Expected ERROR_INSTALL_PACKAGE_INVALID, got %d\n", r);
+    }
+
+    MsiCloseHandle(hsuminfo);
+
+    r = MsiDatabaseCommit(hdb);
+    todo_wine
+    {
+        ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %d\n", r);
+    }
+
+    MsiCloseHandle(hdb);
+    MsiCloseHandle(hpkg);
+}
+
 START_TEST(package)
 {
     GetCurrentDirectoryA(MAX_PATH, CURR_DIR);
@@ -7895,4 +8054,5 @@ START_TEST(package)
     test_shortlongsource();
     test_sourcedir();
     test_access();
+    test_emptypackage();
 }




More information about the wine-cvs mailing list