diff options
author | Fabricio Voznika <fvoznika@google.com> | 2021-01-22 18:04:14 -0800 |
---|---|---|
committer | gVisor bot <gvisor-bot@google.com> | 2021-01-22 18:06:09 -0800 |
commit | cac70c65e6b5b8a7a3eda55f83f9ceffdfdaba89 (patch) | |
tree | ba8618a1576cb6f519ecfcb0ab4eea4ec3230fdf /test/util | |
parent | 99aa5eedcfa3f2e458171cbc6b20ee6f78af3229 (diff) |
Detect failures in forked function
EXPECT*/ASSERT* functions are not async-signal-safe and should not
be called from the function passed to InForkedProcess. However,
these happen accidentally sometimes but do no cause InForkedProcess
to fail.
Detect and notify in such cases.
PiperOrigin-RevId: 353354540
Diffstat (limited to 'test/util')
-rw-r--r-- | test/util/BUILD | 1 | ||||
-rw-r--r-- | test/util/multiprocess_util.cc | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/test/util/BUILD b/test/util/BUILD index 1b028a477..e561f3daa 100644 --- a/test/util/BUILD +++ b/test/util/BUILD @@ -172,6 +172,7 @@ cc_library( ":posix_error", ":save_util", ":test_util", + gtest, "@com_google_absl//absl/strings", ], ) diff --git a/test/util/multiprocess_util.cc b/test/util/multiprocess_util.cc index 8b676751b..a6b0de24b 100644 --- a/test/util/multiprocess_util.cc +++ b/test/util/multiprocess_util.cc @@ -154,6 +154,9 @@ PosixErrorOr<int> InForkedProcess(const std::function<void()>& fn) { pid_t pid = fork(); if (pid == 0) { fn(); + TEST_CHECK_MSG(!::testing::Test::HasFailure(), + "EXPECT*/ASSERT* failed. These are not async-signal-safe " + "and must not be called from fn."); _exit(0); } MaybeSave(); |