diff options
author | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
---|---|---|
committer | Jiyoung Yun <jy910.yun@samsung.com> | 2016-11-23 19:09:09 +0900 |
commit | 4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch) | |
tree | 98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/debug_api/OutputDebugStringA | |
parent | fa45f57ed55137c75ac870356a1b8f76c84b229c (diff) | |
download | coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.gz coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.tar.bz2 coreclr-4b4aad7217d3292650e77eec2cf4c198ea9c3b4b.zip |
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'src/pal/tests/palsuite/debug_api/OutputDebugStringA')
5 files changed, 184 insertions, 0 deletions
diff --git a/src/pal/tests/palsuite/debug_api/OutputDebugStringA/CMakeLists.txt b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/CMakeLists.txt new file mode 100644 index 0000000000..f6aa0cb2d9 --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +add_subdirectory(test1) + diff --git a/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/CMakeLists.txt b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/CMakeLists.txt new file mode 100644 index 0000000000..5bc7fdb6e9 --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/CMakeLists.txt @@ -0,0 +1,38 @@ +cmake_minimum_required(VERSION 2.8.12.2) + +set(CMAKE_INCLUDE_CURRENT_DIR ON) + +set(TESTSOURCES + test1.c +) + +add_executable(paltest_outputdebugstringa_test1 + ${TESTSOURCES} +) + +add_dependencies(paltest_outputdebugstringa_test1 coreclrpal) + +target_link_libraries(paltest_outputdebugstringa_test1 + pthread + m + coreclrpal +) + + +set(HELPERSOURCES + helper.c +) + +add_executable(paltest_outputdebugstringa_test1_helper + ${HELPERSOURCES} +) + +add_dependencies(paltest_outputdebugstringa_test1_helper coreclrpal) + +target_link_libraries(paltest_outputdebugstringa_test1_helper + pthread + m + coreclrpal +) + + diff --git a/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/helper.c b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/helper.c new file mode 100644 index 0000000000..90073dfedd --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/helper.c @@ -0,0 +1,35 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*============================================================= +** +** Source: helper.c +** +** Purpose: Intended to be the child process of a debugger. Calls +** OutputDebugStringA once with a normal string, once with an empty +** string +** +** +**============================================================*/ + +#include <palsuite.h> + +int __cdecl main(int argc, char *argv[]) +{ + if(0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + OutputDebugStringA("Foo!\n"); + + OutputDebugStringA(""); + + /* give a chance to the debugger process to read the debug string before + exiting */ + Sleep(1000); + + PAL_Terminate(); + return PASS; +} diff --git a/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/test1.c b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/test1.c new file mode 100644 index 0000000000..080c6ac53e --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/test1.c @@ -0,0 +1,94 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +/*============================================================= +** +** Source: test1.c +** +** Purpose: Debugs the helper application. Checks that certain events, in +** particular the OUTPUT_DEBUG_STRING_EVENT, is generated correctly +** and gives the correct values. +** +** +**============================================================*/ + +#include <palsuite.h> + +const int DELAY_MS = 2000; + +struct OutputCheck +{ + DWORD ExpectedEventCode; + DWORD ExpectedUnicode; + char *ExpectedStr; +}; + +int __cdecl main(int argc, char *argv[]) +{ + + PROCESS_INFORMATION pi; + STARTUPINFO si; + + if(0 != (PAL_Initialize(argc, argv))) + { + return FAIL; + } + + ZeroMemory( &si, sizeof(si) ); + si.cb = sizeof(si); + ZeroMemory( &pi, sizeof(pi) ); + + /* Create a new process. This is the process to be Debugged */ + if(!CreateProcess( NULL, "helper", NULL, NULL, + FALSE, 0, NULL, NULL, &si, &pi)) + { + Fail("ERROR: CreateProcess failed to load executable 'helper'. " + "GetLastError() returned %d.\n",GetLastError()); + } + + /* This is the main loop. It exits when the process which is being + debugged is finished executing. + */ + + while(1) + { + DWORD dwRet = 0; + dwRet = WaitForSingleObject(pi.hProcess, + DELAY_MS /* Wait for 2 seconds max*/ + ); + + if (dwRet != WAIT_OBJECT_0) + { + Trace("WaitForSingleObjectTest:WaitForSingleObject " + "failed (%x) after waiting %d seconds for the helper\n", + GetLastError(), DELAY_MS / 1000); + } + else + { + DWORD dwExitCode; + + /* check the exit code from the process */ + if( ! GetExitCodeProcess( pi.hProcess, &dwExitCode ) ) + { + DWORD dwError; + + dwError = GetLastError(); + CloseHandle ( pi.hProcess ); + CloseHandle ( pi.hThread ); + Fail( "GetExitCodeProcess call failed with error code %d\n", + dwError ); + } + + if(dwExitCode != STILL_ACTIVE) { + CloseHandle(pi.hThread); + CloseHandle(pi.hProcess); + break; + } + Trace("still executing %d..\n", dwExitCode); + } + } + + PAL_Terminate(); + return PASS; +} diff --git a/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/testinfo.dat b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/testinfo.dat new file mode 100644 index 0000000000..d49e9048d1 --- /dev/null +++ b/src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/testinfo.dat @@ -0,0 +1,13 @@ +# Licensed to the .NET Foundation under one or more agreements. +# The .NET Foundation licenses this file to you under the MIT license. +# See the LICENSE file in the project root for more information. + +Version = 1.0 +Section = Debug +Function = OutputDebugStringA +Name = OutputDebugStringA test #1 +TYPE = DEFAULT +EXE1 = test1 +EXE2 = helper +Description +=Tests that OutputDebugString generates the correct debugging event behaviour. |