diff options
author | Mike Aizatsky <aizatsky@chromium.org> | 2016-01-25 19:43:52 +0000 |
---|---|---|
committer | Mike Aizatsky <aizatsky@chromium.org> | 2016-01-25 19:43:52 +0000 |
commit | e5b34d5a2bf4c882bc647dd26a8cea2adc76f63c (patch) | |
tree | e639ca0a5205bb8c229aeb5489e05fae12ba330f /lib/sanitizer_common/tests | |
parent | aa7bb0678b43fddff39583510a9a665c447d0b47 (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.cc | 23 |
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 |