diff options
Diffstat (limited to 'src/burn/test')
-rw-r--r-- | src/burn/test/BurnUnitTest/EmbeddedTest.cpp | 23 |
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 | ||
6 | const DWORD TEST_UNKNOWN_MESSAGE_ID = 0xFFFE; | ||
6 | const HRESULT S_TEST_SUCCEEDED = 0x3133; | 7 | const HRESULT S_TEST_SUCCEEDED = 0x3133; |
7 | const DWORD TEST_EXIT_CODE = 666; | 8 | const DWORD TEST_EXIT_CODE = 666; |
8 | 9 | ||
9 | struct BUNDLE_RUNNER_CONTEXT | 10 | struct 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 | ||
194 | LExit: | ||
174 | return dwResult; | 195 | return dwResult; |
175 | } | 196 | } |