diff --git a/extension/module/test/ptn_hooks_test.cpp b/extension/module/test/ptn_hooks_test.cpp index 0fa1dd7b17d..a87b4005e09 100644 --- a/extension/module/test/ptn_hooks_test.cpp +++ b/extension/module/test/ptn_hooks_test.cpp @@ -127,9 +127,10 @@ class PtnHooksTest : public ::testing::Test { protected: static void SetUpTestSuite() { runtime::runtime_init(); - ASSERT_EQ( - native_module::internal::register_ptn_hooks(kFakeHooks), - runtime::Error::Ok); + // The registry survives repeated GTest runs, including the XCTest bridge. + static const auto registration_error = + native_module::internal::register_ptn_hooks(kFakeHooks); + ASSERT_EQ(registration_error, runtime::Error::Ok); } void SetUp() override { @@ -137,6 +138,14 @@ class PtnHooksTest : public ::testing::Test { } }; +TEST_F(PtnHooksTest, SuiteSetup_CanBeRepeated) { + ASSERT_NO_FATAL_FAILURE(SetUpTestSuite()); + ASSERT_NO_FATAL_FAILURE(SetUpTestSuite()); + const auto* hooks = native_module::internal::get_ptn_hooks(); + ASSERT_NE(hooks, nullptr); + EXPECT_EQ(hooks->load, load_fake_ptn); +} + TEST_F(PtnHooksTest, Load_PtnSource_DispatchesMetadataAndMethodState) { const std::array bytes{'P', 'K'}; auto loader = std::make_unique(bytes.data(), bytes.size());