@@ -203,6 +203,31 @@ TEST_F(RestCatalogIntegrationTest, MakeCatalogSuccess) {
203203 EXPECT_THAT (root->WithContext (SessionContext{}), IsError (ErrorKind::kInvalidArgument ));
204204}
205205
206+ TEST_F (RestCatalogIntegrationTest, DefaultCatalogCacheDoesNotKeepRootAlive) {
207+ std::weak_ptr<RestCatalog> weak_root;
208+ std::weak_ptr<Catalog> weak_catalog;
209+
210+ {
211+ auto config = RestCatalogProperties::default_properties ();
212+ config.Set (RestCatalogProperties::kUri , CatalogUri ())
213+ .Set (RestCatalogProperties::kName , std::string (kCatalogName ))
214+ .Set (RestCatalogProperties::kWarehouse , std::string (kWarehouseName ));
215+ config.mutable_configs ()[std::string (RestCatalogProperties::kIOImpl .key ())] =
216+ std::string (kStdFileIOImpl );
217+
218+ ICEBERG_UNWRAP_OR_FAIL (auto root, RestCatalog::Make (config));
219+ ICEBERG_UNWRAP_OR_FAIL (auto catalog, root->AsCatalog ());
220+ ICEBERG_UNWRAP_OR_FAIL (auto same_catalog, root->AsCatalog ());
221+
222+ weak_root = root;
223+ weak_catalog = catalog;
224+ EXPECT_EQ (catalog, same_catalog);
225+ }
226+
227+ EXPECT_TRUE (weak_catalog.expired ());
228+ EXPECT_TRUE (weak_root.expired ());
229+ }
230+
206231TEST_F (RestCatalogIntegrationTest, FetchServerConfigDirect) {
207232 HttpClient client ({});
208233 auto noop_session = auth::AuthSession::MakeDefault ({});
0 commit comments