Skip to content

Commit f7cb007

Browse files
committed
python tests segfault because of object lifetime
1 parent 88e774c commit f7cb007

File tree

4 files changed

+16
-3
lines changed

4 files changed

+16
-3
lines changed

bindings/python/src/inspector/criterion/degeneration/solid_degeneration.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ namespace geode
3939
.def( pybind11::init< const SolidMesh& >() )
4040
.def( "is_mesh_degenerated",
4141
&SolidMeshDegeneration::is_mesh_degenerated )
42-
.def( "degenerated_edges",
43-
&SolidMeshDegeneration::degenerated_edges );
42+
.def(
43+
"degenerated_edges", &SolidMeshDegeneration::degenerated_edges )
44+
.def( "degenerated_polyhedra",
45+
&SolidMeshDegeneration::degenerated_polyhedra );
4446
}
4547
void define_solid_degeneration( pybind11::module& module )
4648
{

bindings/python/src/inspector/criterion/degeneration/surface_degeneration.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,9 @@ namespace geode
4040
.def( "is_mesh_degenerated",
4141
&SurfaceMeshDegeneration::is_mesh_degenerated )
4242
.def( "degenerated_edges",
43-
&SurfaceMeshDegeneration::degenerated_edges );
43+
&SurfaceMeshDegeneration::degenerated_edges )
44+
.def( "degenerated_polygons",
45+
&SurfaceMeshDegeneration::degenerated_polygons );
4446
}
4547
void define_surface_degeneration( pybind11::module& module )
4648
{

bindings/python/tests/test-py-solid-degeneration.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ def check_non_degeneration():
5050
if not degeneration_inspector.degenerated_edges().nb_issues() == 0:
5151
raise ValueError(
5252
"[Test] Solid has more degenerated edges than it should.")
53+
del degeneration_inspector
5354

5455
def check_degeneration_by_colocalisation():
5556
solid = geode.TetrahedralSolid3D.create()
@@ -73,6 +74,7 @@ def check_degeneration_by_colocalisation():
7374
raise ValueError("[Test] Solid has wrong number of degenerated edges.")
7475
if not degeneration_inspector.degenerated_edges().issues()[0] == solid.edges().edge_from_vertices([1, 4]):
7576
raise ValueError("[Test] Solid has wrong degenerated edges.")
77+
del degeneration_inspector
7678

7779

7880
def check_degeneration_by_point_multiple_presence():
@@ -97,6 +99,7 @@ def check_degeneration_by_point_multiple_presence():
9799
"[Test] Solid has the wrong number of degenerated edges.")
98100
if not degeneration_inspector.degenerated_edges().issues()[0] == solid.edges().edge_from_vertices([1, 1]):
99101
raise ValueError("[Test] Solid shows the wrong degenerated edges.")
102+
del degeneration_inspector
100103

101104

102105
if __name__ == '__main__':

bindings/python/tests/test-py-surface-degeneration.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ def check_non_degeneration2D():
4949
if not degeneration_inspector.degenerated_edges().nb_issues() == 0:
5050
raise ValueError(
5151
"[Test] Surface has more degenerated edges than it should.")
52+
del degeneration_inspector
5253

5354
def check_degeneration_by_colocalisation2D():
5455
surface = geode.TriangulatedSurface2D.create()
@@ -72,6 +73,7 @@ def check_degeneration_by_colocalisation2D():
7273
surface.enable_edges()
7374
if not degeneration_inspector.degenerated_edges().issues()[0] == surface.edges().edge_from_vertices([1, 3]):
7475
raise ValueError("[Test] Surface has wrong degenerated edges.")
76+
del degeneration_inspector
7577

7678

7779
def check_degeneration_by_point_multiple_presence2D():
@@ -95,6 +97,7 @@ def check_degeneration_by_point_multiple_presence2D():
9597
surface.enable_edges()
9698
if not degeneration_inspector.degenerated_edges().issues()[0] == surface.edges().edge_from_vertices([1, 1]):
9799
raise ValueError("[Test] Surface shows the wrong degenerated edges.")
100+
del degeneration_inspector
98101

99102

100103
def check_non_degeneration3D():
@@ -116,6 +119,7 @@ def check_non_degeneration3D():
116119
if not degeneration_inspector.degenerated_edges().nb_issues() == 0:
117120
raise ValueError(
118121
"[Test] (3D) Surface has more degenerated edges than it should.")
122+
del degeneration_inspector
119123

120124
def check_degeneration_by_colocalisation3D():
121125
surface = geode.TriangulatedSurface3D.create()
@@ -140,6 +144,7 @@ def check_degeneration_by_colocalisation3D():
140144
surface.enable_edges()
141145
if not degeneration_inspector.degenerated_edges().issues()[0] == surface.edges().edge_from_vertices([1, 3]):
142146
raise ValueError("[Test] (3D) Surface has wrong degenerated edges.")
147+
del degeneration_inspector
143148

144149

145150
def check_degeneration_by_point_multiple_presence3D():
@@ -164,6 +169,7 @@ def check_degeneration_by_point_multiple_presence3D():
164169
if not degeneration_inspector.degenerated_edges().issues()[0] == surface.edges().edge_from_vertices([1, 1]):
165170
raise ValueError(
166171
"[Test] (3D) Surface shows the wrong degenerated edges.")
172+
del degeneration_inspector
167173

168174

169175
if __name__ == '__main__':

0 commit comments

Comments
 (0)