From 807f047483ef603c69e3d5f1561e8a837c7eb65d Mon Sep 17 00:00:00 2001 From: Joao-Dionisio Date: Thu, 25 Jun 2026 17:38:51 +0100 Subject: [PATCH] Make test_markDoNotAggrVar_and_getStatus robust to SCIP presolve changes --- CHANGELOG.md | 1 + tests/test_vars.py | 25 +++++++++++-------------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f7124710..434da4999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ ### Added - Added `addConsCumulative()` for SCIP cumulative constraints (#1222) ### Fixed +- Made `test_markDoNotAggrVar_and_getStatus` robust to SCIP presolve changes by discovering the aggregated/multi-aggregated variables instead of hardcoding them ### Changed - Speed up `Expr.__add__` and `Expr.__iadd__` via the C-level API ### Removed diff --git a/tests/test_vars.py b/tests/test_vars.py index 43f71586d..b32acfd67 100644 --- a/tests/test_vars.py +++ b/tests/test_vars.py @@ -142,28 +142,25 @@ def test_markDoNotAggrVar_and_getStatus(): model.addCons(y - 2*x == 0) model.addCons(x + z + w == 10) model.addCons(x*y*z >= 21) # to prevent presolve from removing all variables - model.presolve() - assert z.getStatus() == "ORIGINAL" - assert model.getTransformedVar(z).getStatus() == "AGGREGATED" - assert model.getTransformedVar(w).getStatus() == "MULTAGGR" + variables = (x, y, z, w) + model.presolve() - assert model.getNVars(True) == 1 + multaggr = [v for v in variables if model.getTransformedVar(v).getStatus() == "MULTAGGR"] + aggregated = [v for v in variables if model.getTransformedVar(v).getStatus() == "AGGREGATED"] + assert multaggr, "presolve no longer multi-aggregates; update the test model" + assert aggregated, "presolve no longer aggregates; update the test model" + assert multaggr[0].getStatus() == "ORIGINAL" model.freeTransform() - model.markDoNotMultaggrVar(w) + model.markDoNotMultaggrVar(multaggr[0]) model.presolve() - - assert model.getTransformedVar(w).getStatus() != "MULTAGGR" - assert model.getNVars(True) == 3 + assert model.getTransformedVar(multaggr[0]).getStatus() != "MULTAGGR" model.freeTransform() - model.markDoNotAggrVar(y) + model.markDoNotAggrVar(aggregated[0]) model.presolve() - assert model.getTransformedVar(z).getStatus() != "AGGREGATED" - assert model.getNVars(True) == 4 - - assert x.getStatus() == "ORIGINAL" + assert model.getTransformedVar(aggregated[0]).getStatus() != "AGGREGATED" def test_isIntegral():