aboutsummaryrefslogtreecommitdiff
path: root/src/burn/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/burn/test')
-rw-r--r--src/burn/test/BurnUnitTest/EmbeddedTest.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp
index cac1ba81..7560fe25 100644
--- a/src/burn/test/BurnUnitTest/EmbeddedTest.cpp
+++ b/src/burn/test/BurnUnitTest/EmbeddedTest.cpp
@@ -3,12 +3,14 @@
3#include "precomp.h" 3#include "precomp.h"
4 4
5 5
6const DWORD TEST_UNKNOWN_MESSAGE_ID = 0xFFFE;
6const HRESULT S_TEST_SUCCEEDED = 0x3133; 7const HRESULT S_TEST_SUCCEEDED = 0x3133;
7const DWORD TEST_EXIT_CODE = 666; 8const DWORD TEST_EXIT_CODE = 666;
8 9
9struct BUNDLE_RUNNER_CONTEXT 10struct BUNDLE_RUNNER_CONTEXT
10{ 11{
11 DWORD dwResult; 12 DWORD dwResult;
13 BURN_PIPE_CONNECTION connection;
12}; 14};
13 15
14 16
@@ -68,7 +70,7 @@ namespace Bootstrapper
68 // 70 //
69 // bundle runner setup 71 // bundle runner setup
70 // 72 //
71 hr = EmbeddedRunBundle(L"C:\\ignored\\target.exe", L"\"C:\\ignored\\target.exe\"", NULL, EmbeddedTest_GenericMessageHandler, &bundleRunnerContext, &dwExitCode); 73 hr = EmbeddedRunBundle(&bundleRunnerContext.connection, L"C:\\ignored\\target.exe", L"\"C:\\ignored\\target.exe\"", NULL, EmbeddedTest_GenericMessageHandler, &bundleRunnerContext, &dwExitCode);
72 TestThrowOnFailure(hr, L"Failed to run embedded bundle."); 74 TestThrowOnFailure(hr, L"Failed to run embedded bundle.");
73 75
74 // check results 76 // check results
@@ -146,6 +148,15 @@ static DWORD CALLBACK EmbeddedTest_ThreadProc(
146 hr = PipeChildConnect(pConnection, FALSE); 148 hr = PipeChildConnect(pConnection, FALSE);
147 ExitOnFailure(hr, "Failed to connect to parent bundle runner."); 149 ExitOnFailure(hr, "Failed to connect to parent bundle runner.");
148 150
151 // post unknown message
152 hr = PipeSendMessage(pConnection->hPipe, TEST_UNKNOWN_MESSAGE_ID, NULL, 0, NULL, NULL, &dwResult);
153 ExitOnFailure(hr, "Failed to post unknown message to parent bundle runner.");
154
155 if (E_NOTIMPL != dwResult)
156 {
157 ExitWithRootFailure(hr, E_UNEXPECTED, "Unexpected result from unknown message: %d", dwResult);
158 }
159
149 // post known message 160 // post known message
150 hr = ExternalEngineSendEmbeddedError(&engineState, S_TEST_SUCCEEDED, NULL, 0, reinterpret_cast<int*>(&dwResult)); 161 hr = ExternalEngineSendEmbeddedError(&engineState, S_TEST_SUCCEEDED, NULL, 0, reinterpret_cast<int*>(&dwResult));
151 ExitOnFailure(hr, "Failed to post known message to parent bundle runner."); 162 ExitOnFailure(hr, "Failed to post known message to parent bundle runner.");
@@ -167,9 +178,19 @@ static int EmbeddedTest_GenericMessageHandler(
167 178
168 if (GENERIC_EXECUTE_MESSAGE_ERROR == pMessage->type) 179 if (GENERIC_EXECUTE_MESSAGE_ERROR == pMessage->type)
169 { 180 {
181 // post unknown message
182 HRESULT hr = PipeSendMessage(pContext->connection.hPipe, TEST_UNKNOWN_MESSAGE_ID, NULL, 0, NULL, NULL, &dwResult);
183 ExitOnFailure(hr, "Failed to post unknown message to embedded bundle.");
184
185 if (E_NOTIMPL != dwResult)
186 {
187 ExitWithRootFailure(hr, E_UNEXPECTED, "Unexpected result from unknown message: %d", dwResult);
188 }
189
170 pContext->dwResult = pMessage->error.dwErrorCode; 190 pContext->dwResult = pMessage->error.dwErrorCode;
171 dwResult = TEST_EXIT_CODE; 191 dwResult = TEST_EXIT_CODE;
172 } 192 }
173 193
194LExit:
174 return dwResult; 195 return dwResult;
175} 196}