James Hawkins : msi: Test the MoveFiles standard action.
Alexandre Julliard
julliard at winehq.org
Thu Nov 1 07:39:45 CDT 2007
Module: wine
Branch: master
Commit: b9a29e221f4e5dada5ac664e30812ae40a65c6e4
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b9a29e221f4e5dada5ac664e30812ae40a65c6e4
Author: James Hawkins <truiken at gmail.com>
Date: Thu Nov 1 03:07:50 2007 -0500
msi: Test the MoveFiles standard action.
---
dlls/msi/tests/install.c | 140 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 140 insertions(+), 0 deletions(-)
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 52de3db..46cc1ec 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -109,6 +109,8 @@ static const CHAR install_exec_seq_dat[] = "Action\tCondition\tSequence\n"
"CostFinalize\t\t1000\n"
"CostInitialize\t\t800\n"
"FileCost\t\t900\n"
+ "ResolveSource\t\t950\n"
+ "MoveFiles\t\t1700\n"
"InstallFiles\t\t4000\n"
"InstallServices\t\t5000\n"
"InstallFinalize\t\t6600\n"
@@ -508,6 +510,27 @@ static const CHAR rem_remove_files_dat[] = "FileKey\tComponent_\tFileName\tDirPr
"block\thelium\tblock\tMSITESTDIR\t3\n"
"siriometer\tlithium\tsiriometer\tMSITESTDIR\t3\n";
+static const CHAR mov_move_file_dat[] = "FileKey\tComponent_\tSourceName\tDestName\tSourceFolder\tDestFolder\tOptions\n"
+ "s72\ts72\tS255\tS255\tS72\ts72\ti2\n"
+ "MoveFile\tFileKey\n"
+ "abkhazia\taugustus\tnonexistent\tdest\tSourceDir\tMSITESTDIR\t0\n"
+ "bahamas\taugustus\tnonexistent\tdest\tSourceDir\tMSITESTDIR\t1\n"
+ "cambodia\taugustus\tcameroon\tcanada\tSourceDir\tMSITESTDIR\t0\n"
+ "denmark\taugustus\tdjibouti\tdominica\tSourceDir\tMSITESTDIR\t1\n"
+ "ecuador\taugustus\tegypt\telsalvador\tNotAProp\tMSITESTDIR\t1\n"
+ "fiji\taugustus\tfinland\tfrance\tSourceDir\tNotAProp\t1\n"
+ "gabon\taugustus\tgambia\tgeorgia\tSOURCEFULL\tMSITESTDIR\t1\n"
+ "haiti\taugustus\thonduras\thungary\tSourceDir\tDESTFULL\t1\n"
+ "iceland\taugustus\tindia\tindonesia\tMSITESTDIR\tMSITESTDIR\t1\n"
+ "jamaica\taugustus\tjapan\tjordan\tFILEPATHBAD\tMSITESTDIR\t1\n"
+ "kazakhstan\taugustus\t\tkiribati\tFILEPATHGOOD\tMSITESTDIR\t1\n"
+ "laos\taugustus\tlatvia\tlebanon\tSourceDir\tMSITESTDIR\t1\n"
+ "namibia\taugustus\tnauru\tkiribati\tSourceDir\tMSITESTDIR\t1\n"
+ "wildcard\taugustus\tapp*\twildcard\tSourceDir\tMSITESTDIR\t1\n"
+ "single\taugustus\tf?o\tsingle\tSourceDir\tMSITESTDIR\t1\n"
+ "wildcardnodest\taugustus\tbudd*\t\tSourceDir\tMSITESTDIR\t1\n"
+ "singlenodest\taugustus\tb?r\t\tSourceDir\tMSITESTDIR\t1\n";
+
typedef struct _msi_table
{
const CHAR *filename;
@@ -757,6 +780,20 @@ static const msi_table rem_tables[] =
ADD_TABLE(rem_remove_files),
};
+static const msi_table mov_tables[] =
+{
+ ADD_TABLE(cwd_component),
+ ADD_TABLE(directory),
+ ADD_TABLE(rof_feature),
+ ADD_TABLE(ci2_feature_comp),
+ ADD_TABLE(ci2_file),
+ ADD_TABLE(install_exec_seq),
+ ADD_TABLE(rof_media),
+ ADD_TABLE(property),
+ ADD_TABLE(mov_move_file),
+ ADD_TABLE(registry),
+};
+
/* cabinet definitions */
/* make the max size large so there is only one cab file */
@@ -2896,6 +2933,108 @@ static void test_removefiles(void)
RemoveDirectory("msitest");
}
+static void test_movefiles(void)
+{
+ UINT r;
+ char props[MAX_PATH];
+
+ CreateDirectoryA("msitest", NULL);
+ create_file("msitest\\augustus", 100);
+ create_file("cameroon", 100);
+ create_file("djibouti", 100);
+ create_file("egypt", 100);
+ create_file("finland", 100);
+ create_file("gambai", 100);
+ create_file("honduras", 100);
+ create_file("msitest\\india", 100);
+ create_file("japan", 100);
+ create_file("kenya", 100);
+ CreateDirectoryA("latvia", NULL);
+ create_file("nauru", 100);
+ create_file("apple", 100);
+ create_file("application", 100);
+ create_file("ape", 100);
+ create_file("foo", 100);
+ create_file("fao", 100);
+ create_file("fbod", 100);
+ create_file("budding", 100);
+ create_file("buddy", 100);
+ create_file("bud", 100);
+ create_file("bar", 100);
+ create_file("bur", 100);
+ create_file("bird", 100);
+
+ create_database(msifile, mov_tables, sizeof(mov_tables) / sizeof(msi_table));
+
+ MsiSetInternalUI(INSTALLUILEVEL_FULL, NULL);
+ MsiEnableLog(INSTALLLOGMODE_VERBOSE | INSTALLLOGMODE_EXTRADEBUG, "log.txt", 0);
+
+ /* if the source or dest property is not a full path,
+ * windows tries to access it as a network resource
+ */
+
+ sprintf(props, "SOURCEFULL=\"%s\\\" DESTFULL=\"%s\\msitest\" "
+ "FILEPATHBAD=\"%s\\japan\" FILEPATHGOOD=\"%s\\kenya\"",
+ CURR_DIR, PROG_FILES_DIR, CURR_DIR, CURR_DIR);
+
+ r = MsiInstallProductA(msifile, props);
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+ ok(delete_pf("msitest\\augustus", TRUE), "File not installed\n");
+ ok(!delete_pf("msitest\\dest", TRUE), "File copied\n");
+ todo_wine ok(delete_pf("msitest\\canada", TRUE), "File not copied\n");
+ todo_wine ok(delete_pf("msitest\\dominica", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\elsalvador", TRUE), "File moved\n");
+ ok(!delete_pf("msitest\\france", TRUE), "File moved\n");
+ ok(!delete_pf("msitest\\georgia", TRUE), "File moved\n");
+ todo_wine ok(delete_pf("msitest\\hungary", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\indonesia", TRUE), "File moved\n");
+ ok(!delete_pf("msitest\\jordan", TRUE), "File moved\n");
+ todo_wine ok(delete_pf("msitest\\kiribati", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\lebanon", TRUE), "File moved\n");
+ ok(!delete_pf("msitest\\lebanon", FALSE), "Directory moved\n");
+ ok(!delete_pf("msitest\\apple", TRUE), "File should not exist\n");
+ todo_wine ok(delete_pf("msitest\\wildcard", TRUE), "File not moved\n");
+ todo_wine ok(delete_pf("msitest\\application", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\ape", TRUE), "File moved\n");
+ todo_wine ok(delete_pf("msitest\\foo", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\fao", TRUE), "File should not exist\n");
+ todo_wine ok(delete_pf("msitest\\single", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\fbod", TRUE), "File moved\n");
+ todo_wine ok(delete_pf("msitest\\budding", TRUE), "File not moved\n");
+ todo_wine ok(delete_pf("msitest\\buddy", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\bud", TRUE), "File moved\n");
+ todo_wine ok(delete_pf("msitest\\bar", TRUE), "File not moved\n");
+ todo_wine ok(delete_pf("msitest\\bur", TRUE), "File not moved\n");
+ ok(!delete_pf("msitest\\bird", TRUE), "File moved\n");
+ ok(delete_pf("msitest", FALSE), "File not installed\n");
+ ok(DeleteFileA("cameroon"), "File moved\n");
+ todo_wine ok(!DeleteFileA("djibouti"), "File not moved\n");
+ ok(DeleteFileA("egypt"), "File moved\n");
+ ok(DeleteFileA("finland"), "File moved\n");
+ ok(DeleteFileA("gambai"), "File moved\n");
+ todo_wine ok(!DeleteFileA("honduras"), "File not moved\n");
+ ok(DeleteFileA("msitest\\india"), "File moved\n");
+ ok(DeleteFileA("japan"), "File moved\n");
+ todo_wine ok(!DeleteFileA("kenya"), "File not moved\n");
+ ok(RemoveDirectoryA("latvia"), "Directory moved\n");
+ todo_wine ok(!DeleteFileA("nauru"), "File not moved\n");
+ todo_wine ok(!DeleteFileA("apple"), "File not moved\n");
+ todo_wine ok(!DeleteFileA("application"), "File not moved\n");
+ ok(DeleteFileA("ape"), "File moved\n");
+ todo_wine ok(!DeleteFileA("foo"), "File not moved\n");
+ todo_wine ok(!DeleteFileA("fao"), "File not moved\n");
+ ok(DeleteFileA("fbod"), "File moved\n");
+ todo_wine ok(!DeleteFileA("budding"), "File not moved\n");
+ todo_wine ok(!DeleteFileA("buddy"), "File not moved\n");
+ ok(DeleteFileA("bud"), "File moved\n");
+ todo_wine ok(!DeleteFileA("bar"), "File not moved\n");
+ todo_wine ok(!DeleteFileA("bur"), "File not moved\n");
+ ok(DeleteFileA("bird"), "File moved\n");
+
+ DeleteFile("msitest\\augustus");
+ RemoveDirectory("msitest");
+ DeleteFile(msifile);
+}
START_TEST(install)
{
DWORD len;
@@ -2935,6 +3074,7 @@ START_TEST(install)
test_admin();
test_adminprops();
test_removefiles();
+ test_movefiles();
SetCurrentDirectoryA(prev_path);
}
More information about the wine-cvs
mailing list