James Hawkins : msi: Allow more customization of install test files.

Alexandre Julliard julliard at wine.codeweavers.com
Tue Oct 24 04:55:31 CDT 2006


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

Author: James Hawkins <truiken at gmail.com>
Date:   Mon Oct 23 18:11:24 2006 -0700

msi: Allow more customization of install test files.

---

 dlls/msi/tests/install.c |   54 ++++++++++++++++++++++++++++-----------------
 1 files changed, 33 insertions(+), 21 deletions(-)

diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index bd22916..2d845c4 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -336,25 +336,28 @@ static INT_PTR get_open_info(char *pszNa
     return (INT_PTR)handle;
 }
 
-static void add_file(HFCI hfci, char *file)
+static void add_file(HFCI hfci, const char *file, TCOMP compress)
 {
     char path[MAX_PATH];
+    char filename[MAX_PATH];
     BOOL res;
 
     lstrcpyA(path, CURR_DIR);
     lstrcatA(path, "\\");
     lstrcatA(path, file);
 
-    res = FCIAddFile(hfci, path, file, FALSE, get_next_cabinet, progress,
-                     get_open_info, tcompTYPE_MSZIP);
+    lstrcpyA(filename, file);
+
+    res = FCIAddFile(hfci, path, filename, FALSE, get_next_cabinet, progress,
+                     get_open_info, compress);
     ok(res, "Expected FCIAddFile to succeed\n");
 }
 
-static void set_cab_parameters(PCCAB pCabParams, const CHAR *name)
+static void set_cab_parameters(PCCAB pCabParams, const CHAR *name, DWORD max_size)
 {
     ZeroMemory(pCabParams, sizeof(CCAB));
 
-    pCabParams->cb = MEDIA_SIZE;
+    pCabParams->cb = max_size;
     pCabParams->cbFolderThresh = FOLDER_THRESHOLD;
     pCabParams->setID = 0xbeef;
     lstrcpyA(pCabParams->szCabPath, CURR_DIR);
@@ -362,16 +365,15 @@ static void set_cab_parameters(PCCAB pCa
     lstrcpyA(pCabParams->szCab, name);
 }
 
-static void create_cab_file(const CHAR *name)
+static void create_cab_file(const CHAR *name, DWORD max_size, const CHAR *files)
 {
     CCAB cabParams;
+    LPCSTR ptr;
     HFCI hfci;
     ERF erf;
-    static CHAR four_txt[] = "four.txt",
-                five_txt[] = "five.txt";
     BOOL res;
 
-    set_cab_parameters(&cabParams, name);
+    set_cab_parameters(&cabParams, name, max_size);
 
     hfci = FCICreate(&erf, file_placed, mem_alloc, mem_free, fci_open,
                       fci_read, fci_write, fci_close, fci_seek, fci_delete,
@@ -379,8 +381,12 @@ static void create_cab_file(const CHAR *
 
     ok(hfci != NULL, "Failed to create an FCI context\n");
 
-    add_file(hfci, four_txt);
-    add_file(hfci, five_txt);
+    ptr = files;
+    while (*ptr)
+    {
+        add_file(hfci, ptr, tcompTYPE_MSZIP);
+        ptr += lstrlen(ptr) + 1;
+    }
 
     res = FCIFlushCabinet(hfci, FALSE, get_next_cabinet, progress);
     ok(res, "Failed to flush the cabinet\n");
@@ -406,15 +412,21 @@ static BOOL get_program_files_dir(LPSTR 
     return TRUE;
 }
 
-static void create_file(const CHAR *name)
+static void create_file(const CHAR *name, DWORD size)
 {
     HANDLE file;
-    DWORD written;
+    DWORD written, left;
 
     file = CreateFileA(name, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL);
     ok(file != INVALID_HANDLE_VALUE, "Failure to open file %s\n", name);
     WriteFile(file, name, strlen(name), &written, NULL);
     WriteFile(file, "\n", strlen("\n"), &written, NULL);
+
+    left = size - lstrlen(name) - 1;
+
+    SetFilePointer(file, left, NULL, FILE_CURRENT);
+    SetEndOfFile(file);
+    
     CloseHandle(file);
 }
 
@@ -423,18 +435,18 @@ static void create_test_files(void)
     get_program_files_dir(PROG_FILES_DIR);
 
     CreateDirectoryA("msitest", NULL);
-    create_file("msitest\\one.txt");
+    create_file("msitest\\one.txt", 100);
     CreateDirectoryA("msitest\\first", NULL);
-    create_file("msitest\\first\\two.txt");
+    create_file("msitest\\first\\two.txt", 100);
     CreateDirectoryA("msitest\\second", NULL);
-    create_file("msitest\\second\\three.txt");
+    create_file("msitest\\second\\three.txt", 100);
 
-    create_file("four.txt");
-    create_file("five.txt");
-    create_cab_file("msitest.cab");
+    create_file("four.txt", 100);
+    create_file("five.txt", 100);
+    create_cab_file("msitest.cab", MEDIA_SIZE, "four.txt\0five.txt\0");
 
-    create_file("msitest\\filename");
-    create_file("msitest\\service.exe");
+    create_file("msitest\\filename", 100);
+    create_file("msitest\\service.exe", 100);
 
     DeleteFileA("four.txt");
     DeleteFileA("five.txt");




More information about the wine-cvs mailing list