From f90a1db8ccc2947f714c61d6bc3669f72c95189c Mon Sep 17 00:00:00 2001
From: Xavier Robin <xavalias-github@xavier.robin.name>
Date: Thu, 1 Feb 2024 14:54:27 +0100
Subject: [PATCH] fix: improve handling of invalid biounit indices

---
 actions/ost-compare-structures | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/actions/ost-compare-structures b/actions/ost-compare-structures
index 56c6087a8..78aea3eda 100644
--- a/actions/ost-compare-structures
+++ b/actions/ost-compare-structures
@@ -579,8 +579,14 @@ def _LoadStructure(structure_path, sformat, fault_tolerant, bu_idx):
             cif_entity, cif_seqres, cif_info = \
             io.LoadMMCIF(structure_path, info=True, seqres=True,
                          fault_tolerant=fault_tolerant)
-            if bu_idx >= len(cif_info.biounits):
-                raise RuntimeError(f"Invalid biounit index - requested {bu_idx} "
+            if len(cif_info.biounits) == 0:
+                raise RuntimeError(f"No biounit found - requested index"
+                                   f" {bu_idx}.")
+            elif bu_idx < 0:
+                raise RuntimeError(f"Invalid biounit - requested index {bu_idx}, "
+                                   f"must be a positive integer or 0.")
+            elif bu_idx >= len(cif_info.biounits):
+                raise RuntimeError(f"Invalid biounit - requested index {bu_idx}, "
                                    f"must be < {len(cif_info.biounits)}.")
             biounit = cif_info.biounits[bu_idx]
             entity = ost.mol.alg.CreateBU(cif_entity, biounit)
-- 
GitLab