[PATCH 4/5] msi/tests: Test deferral of CreateFolders and RemoveFolders.
Hans Leidekker
hans at codeweavers.com
Mon May 14 03:56:00 CDT 2018
On Mon, 2018-05-14 at 00:29 -0500, Zebediah Figura wrote:
> diff --git a/dlls/msi/tests/custom.c b/dlls/msi/tests/custom.c
> index ff1be9b..aeee98e 100644
> --- a/dlls/msi/tests/custom.c
> +++ b/dlls/msi/tests/custom.c
> @@ -24,10 +24,13 @@
> #include <windef.h>
> #include <winbase.h>
> #define COBJMACROS
> +#include <shlobj.h>
> #include <msxml.h>
> #include <msi.h>
> #include <msiquery.h>
>
> +static int todo_level, todo_do_loop;
> +
> static void ok_(MSIHANDLE hinst, int todo, const char *file, int line, int condition, const char *msg, ...)
> {
> static char buffer[2000];
> @@ -47,8 +50,30 @@ static void ok_(MSIHANDLE hinst, int todo, const char *file, int line, int condi
> MsiProcessMessage(hinst, INSTALLMESSAGE_USER, record);
> MsiCloseHandle(record);
> }
> -#define ok(hinst, condition, ...) ok_(hinst, 0, __FILE__, __LINE__, condition, __VA_ARGS__)
> -#define todo_wine_ok(hinst, condition, ...) ok_(hinst, 1, __FILE__, __LINE__, condition, __VA_ARGS__)
> +
> +static void winetest_start_todo( int is_todo )
> +{
> + todo_level = (todo_level << 1) | (is_todo != 0);
> + todo_do_loop=1;
> +}
> +
> +static int winetest_loop_todo(void)
> +{
> + int do_loop=todo_do_loop;
> + todo_do_loop=0;
> + return do_loop;
> +}
> +
> +static void winetest_end_todo(void)
> +{
> + todo_level >>= 1;
> +}
> +
> +#define ok(hinst, condition, ...) ok_(hinst, todo_level, __FILE__, __LINE__, condition, __VA_ARGS__)
> +#define todo_wine_if(is_todo) for (winetest_start_todo(is_todo); \
> + winetest_loop_todo(); \
> + winetest_end_todo())
> +#define todo_wine todo_wine_if(1)
>
> static const char *dbgstr_w(WCHAR *str)
> {
> @@ -886,7 +911,8 @@ static void test_costs(MSIHANDLE hinst)
> cost = 0xdead;
> r = MsiGetFeatureCostA(hinst, NULL, MSICOSTTREE_CHILDREN, INSTALLSTATE_LOCAL, &cost);
> ok(hinst, r == ERROR_INVALID_PARAMETER, "got %u\n", r);
> - todo_wine_ok(hinst, !cost, "got %d\n", cost);
> + todo_wine
> + ok(hinst, !cost, "got %d\n", cost);
>
> r = MsiGetFeatureCostA(hinst, "One", MSICOSTTREE_CHILDREN, INSTALLSTATE_LOCAL, NULL);
> ok(hinst, r == RPC_X_NULL_REF_POINTER, "got %u\n", r);
> @@ -894,7 +920,8 @@ static void test_costs(MSIHANDLE hinst)
> cost = 0xdead;
> r = MsiGetFeatureCostA(hinst, "One", MSICOSTTREE_CHILDREN, INSTALLSTATE_LOCAL, &cost);
> ok(hinst, !r, "got %u\n", r);
> - todo_wine_ok(hinst, cost == 8, "got %d\n", cost);
> + todo_wine
> + ok(hinst, cost == 8, "got %d\n", cost);
>
> sz = cost = temp = 0xdead;
> r = MsiEnumComponentCostsA(hinst, "One", 0, INSTALLSTATE_LOCAL, NULL, &sz, &cost, &temp);
> @@ -946,7 +973,8 @@ static void test_costs(MSIHANDLE hinst)
> r = MsiEnumComponentCostsA(hinst, "One", 0, INSTALLSTATE_LOCAL, buffer, &sz, &cost, &temp);
> ok(hinst, r == ERROR_MORE_DATA, "got %u\n", r);
> ok(hinst, !strcmp(buffer, "q"), "got \"%s\"\n", buffer);
> - todo_wine_ok(hinst, sz == 4, "got size %u\n", sz);
> + todo_wine
> + ok(hinst, sz == 4, "got size %u\n", sz);
> ok(hinst, cost == 8, "got cost %d\n", cost);
> ok(hinst, !temp, "got temp %d\n", temp);
>
> @@ -954,15 +982,19 @@ static void test_costs(MSIHANDLE hinst)
> strcpy(buffer,"x");
> r = MsiEnumComponentCostsA(hinst, "One", 0, INSTALLSTATE_LOCAL, buffer, &sz, &cost, &temp);
> ok(hinst, r == ERROR_MORE_DATA, "got %u\n", r);
> - todo_wine_ok(hinst, !buffer[0], "got \"%s\"\n", buffer);
> - todo_wine_ok(hinst, sz == 4, "got size %u\n", sz);
> + todo_wine {
> + ok(hinst, !buffer[0], "got \"%s\"\n", buffer);
> + ok(hinst, sz == 4, "got size %u\n", sz);
> + }
>
> sz = 2;
> strcpy(buffer,"x");
> r = MsiEnumComponentCostsA(hinst, "One", 0, INSTALLSTATE_LOCAL, buffer, &sz, &cost, &temp);
> ok(hinst, r == ERROR_MORE_DATA, "got %u\n", r);
> - todo_wine_ok(hinst, !strcmp(buffer, "C"), "got \"%s\"\n", buffer);
> - todo_wine_ok(hinst, sz == 4, "got size %u\n", sz);
> + todo_wine {
> + ok(hinst, !strcmp(buffer, "C"), "got \"%s\"\n", buffer);
> + ok(hinst, sz == 4, "got size %u\n", sz);
> + }
>
> sz = 3;
> strcpy(buffer,"x");
> @@ -1021,7 +1053,8 @@ UINT WINAPI main_test(MSIHANDLE hinst)
>
> /* Test MsiGetDatabaseState() */
> res = MsiGetDatabaseState(hinst);
> - todo_wine_ok(hinst, res == MSIDBSTATE_ERROR, "expected MSIDBSTATE_ERROR, got %u\n", res);
> + todo_wine
> + ok(hinst, res == MSIDBSTATE_ERROR, "expected MSIDBSTATE_ERROR, got %u\n", res);
>
> test_props(hinst);
> test_db(hinst);
> @@ -1101,7 +1134,8 @@ UINT WINAPI da_deferred(MSIHANDLE hinst)
> len = sizeof(prop);
> r = MsiGetPropertyA(hinst, "TESTPATH", prop, &len);
> ok(hinst, r == ERROR_SUCCESS, "got %u\n", r);
> - todo_wine_ok(hinst, !prop[0], "got %s\n", prop);
> + todo_wine
> + ok(hinst, !prop[0], "got %s\n", prop);
>
> /* Test modes */
> ok(hinst, MsiGetMode(hinst, MSIRUNMODE_SCHEDULED), "should be scheduled\n");
> @@ -1113,3 +1147,34 @@ UINT WINAPI da_deferred(MSIHANDLE hinst)
>
> return ERROR_SUCCESS;
> }
> +
> +static BOOL pf_exists(const char *file)
> +{
> + char path[MAX_PATH];
> +
> + if (FAILED(SHGetFolderPathA(NULL, CSIDL_PROGRAM_FILESX86, NULL, 0, path)))
> + SHGetFolderPathA(NULL, CSIDL_PROGRAM_FILES, NULL, 0, path);
> + strcat(path, "\\");
> + strcat(path, file);
> + return GetFileAttributesA(path) != INVALID_FILE_ATTRIBUTES;
> +}
This fails to build:
custom.c: In function ‘test_props’:
custom.c:196:5: warning: implicit declaration of function ‘todo_wine_ok’ [-Wimplicit-function-declaration]
todo_wine_ok(hinst, sz == 6, "got size %u\n", sz);
More information about the wine-devel
mailing list