diff --git a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt index b7c0649e2..f933d20c3 100644 --- a/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryA/CMakeLists.txt @@ -24,7 +24,7 @@ if(MSVC) set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS}) endif() -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") diff --git a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt index c1cc32a2f..3562c8894 100644 --- a/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt +++ b/winpr/libwinpr/library/test/TestLibraryB/CMakeLists.txt @@ -24,7 +24,7 @@ if(MSVC) set(${MODULE_PREFIX}_SRCS ${${MODULE_PREFIX}_SRCS}) endif() -add_library(${MODULE_NAME} ${${MODULE_PREFIX}_SRCS}) +add_library(${MODULE_NAME} SHARED ${${MODULE_PREFIX}_SRCS}) set_target_properties(${MODULE_NAME} PROPERTIES PREFIX "") diff --git a/winpr/libwinpr/nt/test/TestNtCreateFile.c b/winpr/libwinpr/nt/test/TestNtCreateFile.c index 2097177eb..8394ce4e4 100644 --- a/winpr/libwinpr/nt/test/TestNtCreateFile.c +++ b/winpr/libwinpr/nt/test/TestNtCreateFile.c @@ -20,14 +20,7 @@ int TestNtCreateFile(int argc, char* argv[]) ACCESS_MASK DesiredAccess = 0; OBJECT_ATTRIBUTES attributes; IO_STATUS_BLOCK ioStatusBlock; - - int eFailure = -1; - int eSuccess = 0; - -#ifndef _WIN32 - printf("Note: %s result may currently only be trusted on Win32\n", __FUNCTION__); - eFailure = eSuccess; -#endif + int result = -1; _RtlInitAnsiString(&aString, TESTFILE); @@ -35,7 +28,7 @@ int TestNtCreateFile(int argc, char* argv[]) if (ntstatus != STATUS_SUCCESS) { printf("_RtlAnsiStringToUnicodeString failure: 0x%08X\n", ntstatus); - return eFailure; + goto out; } handle = NULL; @@ -53,7 +46,7 @@ int TestNtCreateFile(int argc, char* argv[]) if (ntstatus != STATUS_SUCCESS) { printf("_NtCreateFile failure: 0x%08X\n", ntstatus); - return eFailure; + goto out; } _RtlFreeUnicodeString(&uString); @@ -63,8 +56,27 @@ int TestNtCreateFile(int argc, char* argv[]) if (ntstatus != STATUS_SUCCESS) { printf("_NtClose failure: 0x%08X\n", ntstatus); - return eFailure; + goto out; } - return eSuccess; + result = 0; + +out: + +#ifndef _WIN32 + if (result == 0) + { + printf("%s: Error, this test is currently expected not to succeed on this platform.\n", + __FUNCTION__); + result = -1; + } + else + { + printf("%s: This test is currently expected to fail on this platform.\n", + __FUNCTION__); + result = 0; + } +#endif + + return result; } diff --git a/winpr/libwinpr/pipe/test/TestPipeCreateNamedPipeOverlapped.c b/winpr/libwinpr/pipe/test/TestPipeCreateNamedPipeOverlapped.c index 2ce09b2dc..80898c936 100644 --- a/winpr/libwinpr/pipe/test/TestPipeCreateNamedPipeOverlapped.c +++ b/winpr/libwinpr/pipe/test/TestPipeCreateNamedPipeOverlapped.c @@ -338,13 +338,7 @@ int TestPipeCreateNamedPipeOverlapped(int argc, char* argv[]) { HANDLE ClientThread; HANDLE ServerThread; - int eFailure = -1; - int eSuccess = 0; - -#ifndef _WIN32 - printf("Note: %s result may currently only be trusted on Win32\n", __FUNCTION__); - eFailure = eSuccess; -#endif + int result = -1; FillMemory(SERVER_MESSAGE, PIPE_BUFFER_SIZE, 0xAA); FillMemory(CLIENT_MESSAGE, PIPE_BUFFER_SIZE, 0xBB); @@ -352,24 +346,51 @@ int TestPipeCreateNamedPipeOverlapped(int argc, char* argv[]) if (!(serverReadyEvent = CreateEvent(NULL, TRUE, FALSE, NULL))) { printf("CreateEvent failed: %d\n", GetLastError()); - return eFailure; + goto out; } if (!(ClientThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_client_thread, NULL, 0, NULL))) { printf("CreateThread (client) failed: %d\n", GetLastError()); - return eFailure; + goto out; } if (!(ServerThread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE) named_pipe_server_thread, NULL, 0, NULL))) { printf("CreateThread (server) failed: %d\n", GetLastError()); - return eFailure; + goto out; } - WaitForSingleObject(ClientThread, INFINITE); - WaitForSingleObject(ServerThread, INFINITE); + if (WAIT_OBJECT_0 != WaitForSingleObject(ClientThread, INFINITE)) + { + printf("%s: Failed to wait for client thread: %u\n", + __FUNCTION__, GetLastError()); + goto out; + } + if (WAIT_OBJECT_0 != WaitForSingleObject(ServerThread, INFINITE)) + { + printf("%s: Failed to wait for server thread: %u\n", + __FUNCTION__, GetLastError()); + goto out; + } if (bClientSuccess && bServerSuccess) - return eSuccess; + result = 0; - return eFailure; +out: + +#ifndef _WIN32 + if (result == 0) + { + printf("%s: Error, this test is currently expected not to succeed on this platform.\n", + __FUNCTION__); + result = -1; + } + else + { + printf("%s: This test is currently expected to fail on this platform.\n", + __FUNCTION__); + result = 0; + } +#endif + + return result; } diff --git a/winpr/libwinpr/synch/test/TestSynchWaitableTimer.c b/winpr/libwinpr/synch/test/TestSynchWaitableTimer.c index fb8497c60..403931fb9 100644 --- a/winpr/libwinpr/synch/test/TestSynchWaitableTimer.c +++ b/winpr/libwinpr/synch/test/TestSynchWaitableTimer.c @@ -8,13 +8,14 @@ int TestSynchWaitableTimer(int argc, char* argv[]) HANDLE timer; LONG period; LARGE_INTEGER due; + int result = -1; timer = CreateWaitableTimer(NULL, FALSE, NULL); if (!timer) { printf("CreateWaitableTimer failure\n"); - return -1; + goto out; } due.QuadPart = -15000000LL; /* 1.5 seconds */ @@ -22,7 +23,7 @@ int TestSynchWaitableTimer(int argc, char* argv[]) if (!SetWaitableTimer(timer, &due, 0, NULL, NULL, 0)) { printf("SetWaitableTimer failure\n"); - return -1; + goto out; } status = WaitForSingleObject(timer, INFINITE); @@ -30,7 +31,7 @@ int TestSynchWaitableTimer(int argc, char* argv[]) if (status != WAIT_OBJECT_0) { printf("WaitForSingleObject(timer, INFINITE) failure\n"); - return -1; + goto out; } printf("Timer Signaled\n"); @@ -40,7 +41,7 @@ int TestSynchWaitableTimer(int argc, char* argv[]) if (status != WAIT_TIMEOUT) { printf("WaitForSingleObject(timer, 2000) failure: Actual: 0x%04X, Expected: 0x%04X\n", status, WAIT_TIMEOUT); - return -1; + goto out; } due.QuadPart = 0; @@ -50,13 +51,13 @@ int TestSynchWaitableTimer(int argc, char* argv[]) if (!SetWaitableTimer(timer, &due, period, NULL, NULL, 0)) { printf("SetWaitableTimer failure\n"); - return -1; + goto out; } if (WaitForSingleObject(timer, INFINITE) != WAIT_OBJECT_0) { printf("WaitForSingleObject(timer, INFINITE) failure\n"); - return -1; + goto out; } printf("Timer Signaled\n"); @@ -64,13 +65,32 @@ int TestSynchWaitableTimer(int argc, char* argv[]) if (WaitForMultipleObjects(1, &timer, FALSE, INFINITE) != WAIT_OBJECT_0) { printf("WaitForMultipleObjects(timer, INFINITE) failure\n"); - return -1; + goto out; } printf("Timer Signaled\n"); + result = 0; + +out: CloseHandle(timer); - return 0; + +#ifdef __APPLE__ + if (result == 0) + { + printf("%s: Error, this test is currently expected not to succeed on this platform.\n", + __FUNCTION__); + result = -1; + } + else + { + printf("%s: This test is currently expected to fail on this platform.\n", + __FUNCTION__); + result = 0; + } +#endif + + return result; } diff --git a/winpr/libwinpr/synch/test/TestSynchWaitableTimerAPC.c b/winpr/libwinpr/synch/test/TestSynchWaitableTimerAPC.c index a56e2f1c0..36d2b9f4e 100644 --- a/winpr/libwinpr/synch/test/TestSynchWaitableTimerAPC.c +++ b/winpr/libwinpr/synch/test/TestSynchWaitableTimerAPC.c @@ -108,6 +108,20 @@ cleanup: CloseHandle(g_Event); free(apcData); +#ifdef __APPLE__ + if (status == 0) + { + printf("%s: Error, this test is currently expected not to succeed on this platform.\n", + __FUNCTION__); + status = -1; + } + else + { + printf("%s: This test is currently expected to fail on this platform.\n", + __FUNCTION__); + status = 0; + } +#endif return status; }