Rob Shearman : ole32: Enable local server test and make it work with Win9x COM implementation.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Mar 9 15:47:45 CST 2007


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

Author: Rob Shearman <rob at codeweavers.com>
Date:   Fri Mar  9 17:40:40 2007 +0000

ole32: Enable local server test and make it work with Win9x COM implementation.

---

 dlls/ole32/tests/marshal.c |   22 ++++++++++------------
 1 files changed, 10 insertions(+), 12 deletions(-)

diff --git a/dlls/ole32/tests/marshal.c b/dlls/ole32/tests/marshal.c
index 308d848..f06475d 100644
--- a/dlls/ole32/tests/marshal.c
+++ b/dlls/ole32/tests/marshal.c
@@ -2178,7 +2178,7 @@ static const IClassFactoryVtbl TestClassFactoryOOP_Vtbl =
 static IClassFactory TestOOP_ClassFactory = { &TestClassFactoryOOP_Vtbl };
 
 /* tests functions commonly used by out of process COM servers */
-static void test_out_of_process_com(void)
+static void test_local_server(void)
 {
     static const CLSID CLSID_WineOOPTest = {
         0x5201163f,
@@ -2204,10 +2204,9 @@ static void test_out_of_process_com(void)
      * class in the registry */
     hr = CoGetClassObject(&CLSID_WineOOPTest, CLSCTX_INPROC_SERVER,
         NULL, &IID_IClassFactory, (LPVOID*)&cf);
-    todo_wine {
-    ok(hr == REGDB_E_CLASSNOTREG,
+    ok(hr == REGDB_E_CLASSNOTREG || /* NT */
+       hr == S_OK /* Win9x */,
         "CoGetClassObject should have returned REGDB_E_CLASSNOTREG instead of 0x%08x\n", hr);
-    }
 
     /* Resume the object suspended above ... */
     hr = CoResumeClassObjects();
@@ -2224,27 +2223,27 @@ static void test_out_of_process_com(void)
     ok_no_locks();
 
     hr = IClassFactory_LockServer(cf, TRUE);
-    trace("IClassFactory_LockServer returned 0x%08x\n", hr);
+    ok_ole_success(hr, IClassFactory_LockServer);
 
     ok_more_than_one_lock();
     
     IClassFactory_LockServer(cf, FALSE);
+    ok_ole_success(hr, IClassFactory_LockServer);
 
     ok_no_locks();
 
     IClassFactory_Release(cf);
 
     /* wait for shutdown signal */
-    ret = WaitForSingleObject(heventShutdown, 5000);
-    todo_wine { ok(ret != WAIT_TIMEOUT, "Server didn't shut down or machine is under very heavy load\n"); }
+    ret = WaitForSingleObject(heventShutdown, 0);
+    todo_wine { ok(ret != WAIT_TIMEOUT, "Server didn't shut down\n"); }
 
     /* try to connect again after SCM has suspended registered class objects */
     hr = CoGetClassObject(&CLSID_WineOOPTest, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, NULL,
         &IID_IClassFactory, (LPVOID*)&cf);
-    todo_wine {
-    ok(hr == CO_E_SERVER_STOPPING,
+    ok(hr == CO_E_SERVER_STOPPING || /* NT */
+       hr == S_OK /* Win9x */,
         "CoGetClassObject should have returned CO_E_SERVER_STOPPING instead of 0x%08x\n", hr);
-    }
 
     hr = CoRevokeClassObject(cookie);
     ok_ole_success(hr, CoRevokeClassObject);
@@ -2582,8 +2581,7 @@ START_TEST(marshal)
     test_inproc_handler();
     test_handler_marshaling();
 
-    /* doesn't pass with Win9x COM DLLs (even though Essential COM says it should) */
-    if (0) test_out_of_process_com();
+    test_local_server();
 
     test_globalinterfacetable();
 




More information about the wine-cvs mailing list