Ensure last XML is freed after tests.
This fixes undetected memory leaks in tests calling mj_loadXML. Additionally, a specific test for `mj_freeLastXML` is introduced. PiperOrigin-RevId: 764294041 Change-Id: I8b5a5683d8431ed920cdd52b06ad3515d8e19e14
This commit is contained in:
committed by
Copybara-Service
parent
18b0e68a5a
commit
287f46b220
@@ -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;
|
||||
};
|
||||
|
||||
@@ -199,5 +199,15 @@ TEST_F(MujocoTest, SaveXmlWithDefaultMesh) {
|
||||
mj_deleteModel(saved_model);
|
||||
}
|
||||
|
||||
TEST_F(MujocoTest, FreeLastXml) {
|
||||
static constexpr char xml[] = "<mujoco/>";
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user