summaryrefslogtreecommitdiff
path: root/lib/sanitizer_common/tests
diff options
context:
space:
mode:
authorMike Aizatsky <aizatsky@chromium.org>2016-01-25 19:43:52 +0000
committerMike Aizatsky <aizatsky@chromium.org>2016-01-25 19:43:52 +0000
commite5b34d5a2bf4c882bc647dd26a8cea2adc76f63c (patch)
treee639ca0a5205bb8c229aeb5489e05fae12ba330f /lib/sanitizer_common/tests
parentaa7bb0678b43fddff39583510a9a665c447d0b47 (diff)
[sanitizers] extracted process management functions
Differential Revision: http://reviews.llvm.org/D16542 git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@258710 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/sanitizer_common/tests')
-rw-r--r--lib/sanitizer_common/tests/sanitizer_linux_test.cc23
1 files changed, 23 insertions, 0 deletions
diff --git a/lib/sanitizer_common/tests/sanitizer_linux_test.cc b/lib/sanitizer_common/tests/sanitizer_linux_test.cc
index eef71010a..773d77739 100644
--- a/lib/sanitizer_common/tests/sanitizer_linux_test.cc
+++ b/lib/sanitizer_common/tests/sanitizer_linux_test.cc
@@ -263,6 +263,29 @@ TEST(SanitizerLinux, ThreadSelfTest) {
}
#endif
+TEST(SanitizerCommon, StartSubprocessTest) {
+ int pipe_fds[2];
+ ASSERT_EQ(0, pipe(pipe_fds));
+ const char *argv[] = {"/bin/sh", "-c", "echo -n 'hello'"};
+ int pid = StartSubprocess("/bin/sh", const_cast<char **>(&argv[0]),
+ kInvalidFd /* stdin */, pipe_fds[1] /* stdout */);
+ ASSERT_GT(pid, 0);
+
+ // wait for process to finish.
+ while (IsProcessRunning(pid)) {
+ }
+ ASSERT_FALSE(IsProcessRunning(pid));
+
+ char buffer[256];
+ char *ptr = buffer;
+ uptr bytes_read;
+ while (ReadFromFile(pipe_fds[0], ptr, 256, &bytes_read)) {
+ ptr += bytes_read;
+ }
+ ASSERT_EQ(0, memcmp(buffer, "hello", 5)) << "Buffer: " << buffer;
+ internal_close(pipe_fds[0]);
+}
+
} // namespace __sanitizer
#endif // SANITIZER_LINUX