aboutsummaryrefslogtreecommitdiff
path: root/src/libexpr/tests
diff options
context:
space:
mode:
authorYorick van Pelt <yorick@yorickvanpelt.nl>2023-02-03 17:50:01 +0100
committerYorick van Pelt <yorick@yorickvanpelt.nl>2023-03-01 13:55:41 +0100
commiteaeb994d8b9d2152e076897bf430c8ac205d3d1a (patch)
tree48394e491b460ef1946c1d4075c46bbf77300cf8 /src/libexpr/tests
parent0fd8f542a8ddb303f589ff6ca3343f36e3a783c0 (diff)
Disable GC inside coroutines on mac OS
Diffstat (limited to 'src/libexpr/tests')
-rw-r--r--src/libexpr/tests/coro-gc.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/libexpr/tests/coro-gc.cc b/src/libexpr/tests/coro-gc.cc
index 6023b9b5e..8d9585cc7 100644
--- a/src/libexpr/tests/coro-gc.cc
+++ b/src/libexpr/tests/coro-gc.cc
@@ -25,6 +25,7 @@ namespace nix {
// Generate 2 objects, discard one, run gc,
// see if one got collected and the other didn't
+ // GC is disabled inside coroutines on __APPLE__
static void testFinalizerCalls() {
bool* do_collect_collected = uncollectable_bool();
bool* dont_collect_collected = uncollectable_bool();
@@ -37,7 +38,9 @@ namespace nix {
GC_gcollect();
GC_invoke_finalizers();
+#if !__APPLE__
ASSERT_TRUE(*do_collect_collected);
+#endif
ASSERT_FALSE(*dont_collect_collected);
ASSERT_NE(nullptr, dont_collect);
}
@@ -58,6 +61,10 @@ namespace nix {
}
auto source = sinkToSource([&](Sink& sink) {
+
+#if __APPLE__
+ ASSERT_TRUE(GC_is_disabled());
+#endif
testFinalizerCalls();
bool* dont_collect_inner_collected = uncollectable_bool();
@@ -71,6 +78,9 @@ namespace nix {
}
// pass control to main
writeString("foo", sink);
+#if __APPLE__
+ ASSERT_TRUE(GC_is_disabled());
+#endif
ASSERT_TRUE(*do_collect_inner_collected);
ASSERT_FALSE(*dont_collect_inner_collected);
@@ -84,6 +94,7 @@ namespace nix {
std::string foo = readString(*source);
ASSERT_EQ(foo, "foo");
+ ASSERT_FALSE(GC_is_disabled());
GC_gcollect();
GC_invoke_finalizers();