summaryrefslogtreecommitdiffstats
path: root/sandbox/linux
diff options
context:
space:
mode:
authorjln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-04 03:37:27 +0000
committerjln@chromium.org <jln@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-04-04 03:37:27 +0000
commit99d2535a119df388de31ae4796d38a5857b059f9 (patch)
tree280fb2b3bfc01598a36c1ab796415ba466854347 /sandbox/linux
parent11bd9b6d2f452a00ac25d358d68895994e336c8c (diff)
downloadchromium_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.cc21
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