Source code
Revision control
Copy as Markdown
Other Tools
--- a/test/test_duplex.cpp
+++ b/test/test_duplex.cpp
@@ -18,6 +18,8 @@
#include <stdio.h>
#include <stdlib.h>
+#include "mozilla/gtest/MozHelpers.h"
+
// #define ENABLE_NORMAL_LOG
// #define ENABLE_VERBOSE_LOG
#include "common.h"
@@ -201,6 +203,11 @@
ASSERT_EQ(r, CUBEB_OK);
}
+void CauseDeath(cubeb * p) {
+ mozilla::gtest::DisableCrashReporter();
+ cubeb_destroy(p);
+}
+
#ifdef GTEST_HAS_DEATH_TEST
TEST(cubeb, duplex_collection_change_no_unregister)
{
@@ -218,9 +225,17 @@
}
std::unique_ptr<cubeb, decltype(&cubeb_destroy)> cleanup_cubeb_at_exit(
- ctx, [](cubeb * p) noexcept { EXPECT_DEATH(cubeb_destroy(p), ""); });
+ ctx, [](cubeb * p) noexcept { EXPECT_DEATH(CauseDeath(p), ""); });
duplex_collection_change_impl(ctx);
+
+# if defined(XP_MACOSX) && !defined(MOZ_DEBUG)
+ // For some reason this test hangs on macOS in non-debug builds when the child
+ // process (death test fork) crashes and the crash reporter is enabled in the
+ // parent process. There is not much left to do that can cause a crash in the
+ // parent process anyway, so disable the crash reporter where needed to pass.
+ mozilla::gtest::DisableCrashReporter();
+# endif
}
#endif