diff --git a/test/fixture.h b/test/fixture.h index cbb71d5f..0569579d 100644 --- a/test/fixture.h +++ b/test/fixture.h @@ -53,6 +53,9 @@ class MujocoErrorTestGuard { // By default, any MuJoCo operation which triggers a warning or error will // trigger a test failure. class MujocoTest : public ::testing::Test { + public: + ~MujocoTest() { mj_freeLastXML(); } + private: MujocoErrorTestGuard error_guard; }; diff --git a/test/xml/xml_api_test.cc b/test/xml/xml_api_test.cc index fdd1421b..d8b7a58c 100644 --- a/test/xml/xml_api_test.cc +++ b/test/xml/xml_api_test.cc @@ -199,5 +199,15 @@ TEST_F(MujocoTest, SaveXmlWithDefaultMesh) { mj_deleteModel(saved_model); } +TEST_F(MujocoTest, FreeLastXml) { + static constexpr char xml[] = ""; + mjModel* model = LoadModelFromString(xml, 0, 0); + ASSERT_THAT(model, NotNull()); + mj_deleteModel(model); + ASSERT_NE(mj_saveLastXML(nullptr, nullptr, nullptr, 0), 0); + mj_freeLastXML(); + ASSERT_EQ(mj_saveLastXML(nullptr, nullptr, nullptr, 0), 0); +} + } // namespace } // namespace mujoco