Dmitry Timoshkov : kernel32/tests: Avoid intermittent test failures.

Alexandre Julliard julliard at wine.codeweavers.com
Mon Aug 24 07:37:15 CDT 2015


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

Author: Dmitry Timoshkov <dmitry at baikal.ru>
Date:   Sun Aug 23 14:12:52 2015 +0800

kernel32/tests: Avoid intermittent test failures.

---

 dlls/kernel32/tests/thread.c | 25 +++++++++++++++++++++----
 1 file changed, 21 insertions(+), 4 deletions(-)

diff --git a/dlls/kernel32/tests/thread.c b/dlls/kernel32/tests/thread.c
index 0d1f4a6..2e1614c 100644
--- a/dlls/kernel32/tests/thread.c
+++ b/dlls/kernel32/tests/thread.c
@@ -1716,7 +1716,7 @@ static void test_thread_info(void)
         /* FIXME: Add remaining classes */
     };
     HANDLE thread;
-    ULONG i, status, ret_len, size;
+    ULONG i, status, ret_len;
 
     if (!pOpenThread)
     {
@@ -1739,8 +1739,19 @@ static void test_thread_info(void)
 
     for (i = 0; i < sizeof(info_size)/sizeof(info_size[0]); i++)
     {
-        size = info_size[i];
-        if (!size) size = sizeof(buf);
+        memset(buf, 0, sizeof(buf));
+
+#ifdef __i386__
+        if (i == ThreadDescriptorTableEntry)
+        {
+            CONTEXT ctx;
+            THREAD_DESCRIPTOR_INFORMATION *tdi = (void *)buf;
+
+            ctx.ContextFlags = CONTEXT_SEGMENTS;
+            GetThreadContext(GetCurrentThread(), &ctx);
+            tdi->Selector = ctx.SegDs;
+        }
+#endif
         ret_len = 0;
         status = pNtQueryInformationThread(thread, i, buf, info_size[i], &ret_len);
         if (status == STATUS_NOT_IMPLEMENTED) continue;
@@ -1755,12 +1766,18 @@ static void test_thread_info(void)
             ok(status == STATUS_SUCCESS, "for info %u expected STATUS_SUCCESS, got %08x (ret_len %u)\n", i, status, ret_len);
             break;
 
+#ifdef __i386__
+        case ThreadDescriptorTableEntry:
+            ok(status == STATUS_SUCCESS || broken(status == STATUS_ACCESS_DENIED) /* testbot VM is broken */,
+               "for info %u expected STATUS_SUCCESS, got %08x (ret_len %u)\n", i, status, ret_len);
+            break;
+#endif
+
         case ThreadTimes:
 todo_wine
             ok(status == STATUS_SUCCESS, "for info %u expected STATUS_SUCCESS, got %08x (ret_len %u)\n", i, status, ret_len);
             break;
 
-        case ThreadDescriptorTableEntry:
         case ThreadAffinityMask:
         case ThreadQuerySetWin32StartAddress:
 todo_wine




More information about the wine-cvs mailing list