Dmitry Timoshkov : kernel32/tests: Add a test for loading manifest from resources.

Alexandre Julliard julliard at winehq.org
Fri Nov 12 16:16:04 CST 2021


Module: wine
Branch: master
Commit: 6e754202bffb64cd87108ec087970350f9f8cdf2
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=6e754202bffb64cd87108ec087970350f9f8cdf2

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Fri Nov 12 16:49:47 2021 +0300

kernel32/tests: Add a test for loading manifest from resources.

To confirm that 2d764e90dd2c624f7a2d863ab29bd418ed33d252 does the right thing.

Signed-off-by: Dmitry Timoshkov <dmitry at baikal.ru>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/tests/actctx.c           | 32 ++++++++++++++++++++++++++++++--
 dlls/kernel32/tests/resource.rc        |  2 ++
 dlls/kernel32/tests/wine_test.manifest |  4 ++++
 3 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/dlls/kernel32/tests/actctx.c b/dlls/kernel32/tests/actctx.c
index 163ea405222..adf2549bece 100644
--- a/dlls/kernel32/tests/actctx.c
+++ b/dlls/kernel32/tests/actctx.c
@@ -694,7 +694,7 @@ static void test_detailed_info(HANDLE handle, const detailed_info_t *exinfo, int
         ok_(__FILE__, line)(detailed_info->lpRootManifestPath != NULL, "detailed_info->lpRootManifestPath == NULL\n");
         if(detailed_info->lpRootManifestPath)
             ok_(__FILE__, line)(!lstrcmpiW(detailed_info->lpRootManifestPath, exinfo->root_manifest_path),
-               "unexpected detailed_info->lpRootManifestPath\n");
+               "unexpected detailed_info->lpRootManifestPath %s\n", wine_dbgstr_w(detailed_info->lpRootManifestPath));
     }else {
         ok_(__FILE__, line)(detailed_info->lpRootManifestPath == NULL, "detailed_info->lpRootManifestPath != NULL\n");
     }
@@ -2683,7 +2683,8 @@ todo_wine
     SetLastError(0xdeadbeef);
     handle = CreateActCtxA(&actctx);
     ok(handle == INVALID_HANDLE_VALUE, "got handle %p\n", handle);
-    ok(GetLastError() == ERROR_RESOURCE_TYPE_NOT_FOUND, "got error %d\n", GetLastError());
+todo_wine
+    ok(GetLastError() == ERROR_RESOURCE_NAME_NOT_FOUND, "got error %d\n", GetLastError());
 
     /* load manifest from lpAssemblyDirectory directory */
     write_manifest("testdir.manifest", manifest1);
@@ -3548,6 +3549,32 @@ static void run_child_process_two_dll(int run)
     CloseHandle(pi.hProcess);
 }
 
+static const detailed_info_t detailed_info3 =
+{
+    1, 1, 1, ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE, exe_path,
+    ACTIVATION_CONTEXT_PATH_TYPE_NONE, ACTIVATION_CONTEXT_PATH_TYPE_WIN32_FILE,
+    app_dir,
+};
+
+static void test_manifest_in_module(void)
+{
+    ACTCTXW ctx;
+    HANDLE handle;
+
+    memset(&ctx, 0, sizeof(ctx));
+    ctx.cbSize = sizeof(ctx);
+    ctx.dwFlags = ACTCTX_FLAG_HMODULE_VALID | ACTCTX_FLAG_RESOURCE_NAME_VALID;
+    ctx.lpResourceName = (LPWSTR)124;
+    ctx.hModule = GetModuleHandleW(NULL);
+    handle = CreateActCtxW(&ctx);
+    ok(handle != 0, "CreateActCtx error %u\n", GetLastError());
+
+    test_basic_info(handle, __LINE__);
+    test_detailed_info(handle, &detailed_info3, __LINE__);
+
+    ReleaseActCtx(handle);
+}
+
 START_TEST(actctx)
 {
     int argc;
@@ -3574,6 +3601,7 @@ START_TEST(actctx)
         return;
     }
 
+    test_manifest_in_module();
     test_actctx();
     test_create_fail();
     test_CreateActCtx();
diff --git a/dlls/kernel32/tests/resource.rc b/dlls/kernel32/tests/resource.rc
index f40a87819ea..58902e7a015 100644
--- a/dlls/kernel32/tests/resource.rc
+++ b/dlls/kernel32/tests/resource.rc
@@ -24,3 +24,5 @@
 {
     MENUITEM "foo", 1
 }
+
+124 24 wine_test.manifest
diff --git a/dlls/kernel32/tests/wine_test.manifest b/dlls/kernel32/tests/wine_test.manifest
new file mode 100644
index 00000000000..de77de3e201
--- /dev/null
+++ b/dlls/kernel32/tests/wine_test.manifest
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
+  <assemblyIdentity version="1.0.0.0" name="Wine.Test"/>
+</assembly>




More information about the wine-cvs mailing list