From ea07158eb86e92f5aa0d504ae52a8907a3869768 Mon Sep 17 00:00:00 2001 From: "Kevin R. Thornton" Date: Fri, 17 Apr 2026 13:10:22 -0700 Subject: [PATCH] test: exception visibility in Python --- python_example/maketrees/python/maketrees/__init__.py | 1 + python_example/maketrees/src/lib.rs | 6 ++++++ python_example/maketrees/tests/test_maketrees.py | 9 +++++++++ 3 files changed, 16 insertions(+) diff --git a/python_example/maketrees/python/maketrees/__init__.py b/python_example/maketrees/python/maketrees/__init__.py index 0b1333f..192f65e 100644 --- a/python_example/maketrees/python/maketrees/__init__.py +++ b/python_example/maketrees/python/maketrees/__init__.py @@ -1,6 +1,7 @@ import tskit from ._maketrees import maketrees +from ._maketrees import raise_error def make_treeseq_with_metadata() -> tskit.TreeSequence: diff --git a/python_example/maketrees/src/lib.rs b/python_example/maketrees/src/lib.rs index 9f59544..b5ef35d 100644 --- a/python_example/maketrees/src/lib.rs +++ b/python_example/maketrees/src/lib.rs @@ -64,4 +64,10 @@ mod maketrees { }; Ok(holder.into_python_tables(py)?) } + + #[pyfunction] + fn raise_error(py: Python<'_>) -> PyResult> { + let holder = tskit2tskit::SharedTableCollection::new(py, f64::NAN)?; + Ok(holder.into_python_tables(py)?) + } } diff --git a/python_example/maketrees/tests/test_maketrees.py b/python_example/maketrees/tests/test_maketrees.py index a71452f..f959eb2 100644 --- a/python_example/maketrees/tests/test_maketrees.py +++ b/python_example/maketrees/tests/test_maketrees.py @@ -21,3 +21,12 @@ def test_metadata(): ts = maketrees.make_treeseq_with_metadata() m = ts.mutation(0).metadata assert m['data'] == "I am a mutation" + + +def test_raise(): + try: + _ = maketrees.raise_error() + except RuntimeError: + pass + except _: + raise ValueError("expected RuntimeError")