From e851cd25a6c22a6543f4585a932cabb49a120349 Mon Sep 17 00:00:00 2001 From: vickimzhang Date: Tue, 3 Mar 2026 10:02:05 -0500 Subject: [PATCH 1/5] add messaging for run failure --- ...dPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak | Bin 0 -> 262321 bytes pysyncrosim/scenario.py | 15 +++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak diff --git a/helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak b/helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak new file mode 100644 index 0000000000000000000000000000000000000000..63983e120e8bc5b746f643118b346f8f38620741 GIT binary patch literal 262321 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 literal 0 HcmV?d00001 diff --git a/pysyncrosim/scenario.py b/pysyncrosim/scenario.py index 6d7c5b1..cc3c0ed 100644 --- a/pysyncrosim/scenario.py +++ b/pysyncrosim/scenario.py @@ -688,10 +688,21 @@ def run(self, copy_external_inputs=False): print("Run successful") except RuntimeError as e: - # TODO: add handling when the error message contains "You must be signed in" or "There has been an issue with your SyncroSim license file" + if "You must be signed in" in str(e): + raise RuntimeError(f"Run failed for Scenario [{self.sid}] " + f"{self.name}: you must be signed in to " + "SyncroSim. Use session.sign_in() to sign " + "in.") from e - print(e) + elif "There has been an issue with your SyncroSim license file" in str(e): + raise RuntimeError(f"Run failed for Scenario [{self.sid}] " + f"{self.name}: there has been an issue " + "with your SyncroSim license file.") from e + + else: + raise RuntimeError(f"Run failed for Scenario [{self.sid}] " + f"{self.name}: {e}") from e finally: From 623010443746c8c5f4a27a2b774c108eb7bf2088 Mon Sep 17 00:00:00 2001 From: vickimzhang Date: Tue, 3 Mar 2026 10:09:27 -0500 Subject: [PATCH 2/5] edit testing --- tests/test_pysyncrosim.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/test_pysyncrosim.py b/tests/test_pysyncrosim.py index cb9bf69..622f184 100644 --- a/tests/test_pysyncrosim.py +++ b/tests/test_pysyncrosim.py @@ -1063,8 +1063,8 @@ def test_scenario_copy_dep_delete(): # Test delete myNewScn.delete(force=True) - emptyResScn = myNewScn.run() - assert emptyResScn is None + with pytest.raises(RuntimeError, match = f"Run failed for Scenario"): + myNewScn.run() # Delete other scenarios sameNameScn.delete(force=True) From 8511937e9bd46e5fecc6e5653dd743fbc0801f58 Mon Sep 17 00:00:00 2001 From: vickimzhang Date: Tue, 3 Mar 2026 10:09:52 -0500 Subject: [PATCH 3/5] remove unnecessary f-string in testing --- tests/test_pysyncrosim.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_pysyncrosim.py b/tests/test_pysyncrosim.py index 622f184..789e81d 100644 --- a/tests/test_pysyncrosim.py +++ b/tests/test_pysyncrosim.py @@ -1063,7 +1063,7 @@ def test_scenario_copy_dep_delete(): # Test delete myNewScn.delete(force=True) - with pytest.raises(RuntimeError, match = f"Run failed for Scenario"): + with pytest.raises(RuntimeError, match = "Run failed for Scenario"): myNewScn.run() # Delete other scenarios From 7d78d058e5249bf3c67c0ca5d81b5ed624dc2f55 Mon Sep 17 00:00:00 2001 From: vickimzhang Date: Wed, 1 Apr 2026 10:06:04 -0400 Subject: [PATCH 4/5] add error message for run failure and test --- ...Py.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak | Bin 262321 -> 0 bytes pysyncrosim/scenario.py | 46 ++++++++++-------- tests/test_pysyncrosim.py | 12 ++++- 3 files changed, 36 insertions(+), 22 deletions(-) delete mode 100644 helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak diff --git a/helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak b/helloworldPy.ssim.backup/helloworldPy.ssim.2026-02-24.12-51-36-PRE-UP.ssimbak deleted file mode 100644 index 63983e120e8bc5b746f643118b346f8f38620741..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262321 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 diff --git a/pysyncrosim/scenario.py b/pysyncrosim/scenario.py index cc3c0ed..db1ac2a 100644 --- a/pysyncrosim/scenario.py +++ b/pysyncrosim/scenario.py @@ -680,52 +680,56 @@ def run(self, copy_external_inputs=False): if copy_external_inputs is True: args += ["--copyextfiles=yes"] - try: + error_msg = None + + try: print(f"Running Scenario [{self.sid}] {self.name}") - result = self.library.session._Session__call_console(args) - - if result.returncode == 0: - print("Run successful") + self.library.session._Session__call_console(args) except RuntimeError as e: if "You must be signed in" in str(e): - raise RuntimeError(f"Run failed for Scenario [{self.sid}] " - f"{self.name}: you must be signed in to " - "SyncroSim. Use session.sign_in() to sign " - "in.") from e - + error_msg = ("you must be signed in to SyncroSim. " + "Use session.sign_in() to sign in.") + elif "There has been an issue with your SyncroSim license file" in str(e): - raise RuntimeError(f"Run failed for Scenario [{self.sid}] " - f"{self.name}: there has been an issue " - "with your SyncroSim license file.") from e - + error_msg = "there has been an issue with your SyncroSim license file." + else: - raise RuntimeError(f"Run failed for Scenario [{self.sid}] " - f"{self.name}: {e}") from e + error_msg = str(e) finally: - + # Reset Project Scenarios self.project._Project__scenarios = None # Reset results self.__results = None - + # Retrieve Results Scenario ID # Also resets scenarios and results info results_df = self.results() if (not results_df.empty): - + result_id = results_df["ScenarioId"].values[-1] - + + if error_msg is not None: + raise RuntimeError(f"Run failed for Scenario [{result_id}] " + f"{self.name}: {error_msg}") + else: + print("Run successful") + # Return Results Scenario result_scn = self.library.scenarios(project=self.project, name=None, sid=result_id) - + return result_scn + + elif error_msg is not None: + raise RuntimeError(f"Run failed for Scenario [{self.sid}] " + f"{self.name}: {error_msg}") def run_log(self): """ diff --git a/tests/test_pysyncrosim.py b/tests/test_pysyncrosim.py index 789e81d..a237ee7 100644 --- a/tests/test_pysyncrosim.py +++ b/tests/test_pysyncrosim.py @@ -12,7 +12,7 @@ session_path = None test_lib_path = os.path.join(temp_path.name, "stsimLibrary.ssim") lib_name = "spatial-example.ssim" -git_repo_path = "C:/Users/VickiZhang/Documents/GH_ApexRMS" +git_repo_path = "C:/GH_ApexRMS" lib_path = os.path.join(git_repo_path, "pysyncrosim/tests", lib_name) lib_backup_path = os.path.join(git_repo_path, "pysyncrosim/tests", "spatial-example.ssimbak") @@ -972,6 +972,16 @@ def test_scenario_run_and_results(): assert isinstance(raster1.crs, rasterio.crs.CRS) assert isinstance(raster1.values(), np.ndarray) assert isinstance(raster1.values(band=1), np.ndarray) + +def test_scenario_run_failure(): + mySession = ps.Session(session_path) + myLibrary = ps.library(name=lib_path, session=mySession, force_update=True) + myScenario = myLibrary.scenarios(name="My Scenario") + myFailScenario = myScenario.copy(name="My Scenario - Failure Test") + myFailScenario.delete(force=True) + + with pytest.raises(RuntimeError, match="Run failed for Scenario"): + myFailScenario.run() def test_scenario_copy_dep_delete(): From d2fcd3c3fb1766c85242372d53a4ecc481fea84b Mon Sep 17 00:00:00 2001 From: vickimzhang Date: Wed, 1 Apr 2026 10:23:01 -0400 Subject: [PATCH 5/5] add testing for run failure --- tests/test_pysyncrosim.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/test_pysyncrosim.py b/tests/test_pysyncrosim.py index 0197436..d9d613c 100644 --- a/tests/test_pysyncrosim.py +++ b/tests/test_pysyncrosim.py @@ -931,6 +931,22 @@ def test_scenario_run_and_results(): assert not isinstance(myScenario.run_log(), pd.DataFrame) myLibrary.delete(force=True) + +def test_scenario_run_failure(): + + mySession = ps.Session(session_path) + mySession.restore(lib_backup_path) + + myLibrary = ps.library(name=lib_path, + session=mySession, + force_update=True) + + myScenario = myLibrary.scenarios(name="My Scenario") + myFailScenario = myScenario.copy(name="My Scenario - Failure Test") + myFailScenario.delete(force=True) + + with pytest.raises(RuntimeError, match="Run failed for Scenario"): + myFailScenario.run() def test_scenario_copy_dep_delete():