diff options
author | jln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-04 03:37:27 +0000 |
---|---|---|
committer | jln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-04-04 03:37:27 +0000 |
commit | 99d2535a119df388de31ae4796d38a5857b059f9 (patch) | |
tree | 280fb2b3bfc01598a36c1ab796415ba466854347 /sandbox/linux | |
parent | 11bd9b6d2f452a00ac25d358d68895994e336c8c (diff) | |
download | chromium_src-99d2535a119df388de31ae4796d38a5857b059f9.zip chromium_src-99d2535a119df388de31ae4796d38a5857b059f9.tar.gz chromium_src-99d2535a119df388de31ae4796d38a5857b059f9.tar.bz2 |
Linux sandbox: add unit test sanity check.
Explicitly check that it's ok for a subprocess to use exit(3) instead
of exit(2) without breaking the test suite.
TBR=jln
Review URL: https://codereview.chromium.org/224953002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@261651 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'sandbox/linux')
-rw-r--r-- | sandbox/linux/tests/unit_tests_unittest.cc | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/sandbox/linux/tests/unit_tests_unittest.cc b/sandbox/linux/tests/unit_tests_unittest.cc index e4f03c9..5ec5648 100644 --- a/sandbox/linux/tests/unit_tests_unittest.cc +++ b/sandbox/linux/tests/unit_tests_unittest.cc @@ -4,7 +4,11 @@ #include <signal.h> #include <stdlib.h> +#include <sys/types.h> +#include <sys/wait.h> +#include <unistd.h> +#include "base/posix/eintr_wrapper.h" #include "sandbox/linux/tests/unit_tests.h" namespace sandbox { @@ -29,6 +33,23 @@ SANDBOX_DEATH_TEST(UnitTests, raise(kExpectedSignalNumber); } +// Test that a subprocess can be forked() and can use exit(3) instead of +// _exit(2). +TEST(UnitTests, SubProcessCanExit) { + pid_t child = fork(); + ASSERT_NE(-1, child); + + if (!child) { + exit(kExpectedExitCode); + } + + int status = 0; + pid_t waitpid_ret = HANDLE_EINTR(waitpid(child, &status, 0)); + EXPECT_EQ(child, waitpid_ret); + EXPECT_TRUE(WIFEXITED(status)); + EXPECT_EQ(kExpectedExitCode, WEXITSTATUS(status)); +} + } // namespace } // namespace sandbox |