summaryrefslogtreecommitdiff
path: root/src/pal/tests/palsuite/debug_api/OutputDebugStringA
diff options
context:
space:
mode:
authorJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
committerJiyoung Yun <jy910.yun@samsung.com>2016-11-23 19:09:09 +0900
commit4b4aad7217d3292650e77eec2cf4c198ea9c3b4b (patch)
tree98110734c91668dfdbb126fcc0e15ddbd93738ca /src/pal/tests/palsuite/debug_api/OutputDebugStringA
parentfa45f57ed55137c75ac870356a1b8f76c84b229c (diff)
downloadcoreclr-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')
-rw-r--r--src/pal/tests/palsuite/debug_api/OutputDebugStringA/CMakeLists.txt4
-rw-r--r--src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/CMakeLists.txt38
-rw-r--r--src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/helper.c35
-rw-r--r--src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/test1.c94
-rw-r--r--src/pal/tests/palsuite/debug_api/OutputDebugStringA/test1/testinfo.dat13
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.