From 5aacd7471673f75493accf3bc6a870f6fd4f8849 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Wed, 5 Jul 2023 14:56:52 -0600 Subject: [PATCH 1/4] Provide Feedback which file failed to parse --- pysqa/utils/basic.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/pysqa/utils/basic.py b/pysqa/utils/basic.py index 8d7bd0e..4b47b32 100644 --- a/pysqa/utils/basic.py +++ b/pysqa/utils/basic.py @@ -8,6 +8,7 @@ import pandas from jinja2 import Template +from jinja2.exceptions import TemplateSyntaxError from pysqa.utils.execute import execute_command from pysqa.utils.queues import Queues @@ -485,7 +486,10 @@ def _load_templates(queue_lst_dict, directory="."): for queue_dict in queue_lst_dict.values(): if "script" in queue_dict.keys(): with open(os.path.join(directory, queue_dict["script"]), "r") as f: - queue_dict["template"] = Template(f.read()) + try: + queue_dict["template"] = Template(f.read()) + except TemplateSyntaxError as error: + raise(TemplateSyntaxError(queue_dict["script"] + ": " + error)) @staticmethod def _value_error_if_none(value): From e86a13989afb0c47d5a98dc08b606e078a90a347 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Wed, 5 Jul 2023 23:36:02 +0000 Subject: [PATCH 2/4] Format black --- pysqa/utils/basic.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pysqa/utils/basic.py b/pysqa/utils/basic.py index 4b47b32..48e47fa 100644 --- a/pysqa/utils/basic.py +++ b/pysqa/utils/basic.py @@ -489,7 +489,7 @@ def _load_templates(queue_lst_dict, directory="."): try: queue_dict["template"] = Template(f.read()) except TemplateSyntaxError as error: - raise(TemplateSyntaxError(queue_dict["script"] + ": " + error)) + raise (TemplateSyntaxError(queue_dict["script"] + ": " + error)) @staticmethod def _value_error_if_none(value): From 9bb3fbde430a2575a621959b81e24afe0b6197b3 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Thu, 6 Jul 2023 07:24:16 -0600 Subject: [PATCH 3/4] Add tests --- pysqa/utils/basic.py | 5 ++++- tests/config/bad_template/bad.sh | 1 + tests/config/bad_template/queue.yaml | 4 ++++ tests/test_basic.py | 10 +++++++--- 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 tests/config/bad_template/bad.sh create mode 100644 tests/config/bad_template/queue.yaml diff --git a/pysqa/utils/basic.py b/pysqa/utils/basic.py index 48e47fa..b6b3617 100644 --- a/pysqa/utils/basic.py +++ b/pysqa/utils/basic.py @@ -489,7 +489,10 @@ def _load_templates(queue_lst_dict, directory="."): try: queue_dict["template"] = Template(f.read()) except TemplateSyntaxError as error: - raise (TemplateSyntaxError(queue_dict["script"] + ": " + error)) + raise TemplateSyntaxError( + message="File: " + queue_dict["script"] + " - " + error.message, + lineno=error.lineno + ) @staticmethod def _value_error_if_none(value): diff --git a/tests/config/bad_template/bad.sh b/tests/config/bad_template/bad.sh new file mode 100644 index 0000000..43e734b --- /dev/null +++ b/tests/config/bad_template/bad.sh @@ -0,0 +1 @@ +{%- endif %} \ No newline at end of file diff --git a/tests/config/bad_template/queue.yaml b/tests/config/bad_template/queue.yaml new file mode 100644 index 0000000..6d63e88 --- /dev/null +++ b/tests/config/bad_template/queue.yaml @@ -0,0 +1,4 @@ +queue_type: SLURM +queue_primary: bad +queues: + bad: {cores_max: 100, cores_min: 10, run_time_max: 259200, script: bad.sh} diff --git a/tests/test_basic.py b/tests/test_basic.py index a83ebae..bd4ca7e 100644 --- a/tests/test_basic.py +++ b/tests/test_basic.py @@ -3,6 +3,7 @@ import os import unittest +from jinja2.exceptions import TemplateSyntaxError from pysqa import QueueAdapter from pysqa.utils.basic import BasisQueueAdapter @@ -21,9 +22,12 @@ def setUpClass(cls): cls.path = os.path.dirname(os.path.abspath(__file__)) def test_missing_config(self): - self.assertRaises( - ValueError, QueueAdapter, directory=os.path.join(self.path, "config/error") - ) + with self.assertRaises(ValueError): + QueueAdapter(directory=os.path.join(self.path, "config/error")) + + def test_bad_queue_template(self): + with self.assertRaises(TemplateSyntaxError): + QueueAdapter(directory=os.path.join(self.path, "config/bad_template")) class TestBasisQueueAdapter(unittest.TestCase): From 0dbe56eff050e3e0562c3a5015d7598d81cf61d3 Mon Sep 17 00:00:00 2001 From: pyiron-runner Date: Thu, 6 Jul 2023 13:26:23 +0000 Subject: [PATCH 4/4] Format black --- pysqa/utils/basic.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/pysqa/utils/basic.py b/pysqa/utils/basic.py index b6b3617..8e27da0 100644 --- a/pysqa/utils/basic.py +++ b/pysqa/utils/basic.py @@ -490,8 +490,11 @@ def _load_templates(queue_lst_dict, directory="."): queue_dict["template"] = Template(f.read()) except TemplateSyntaxError as error: raise TemplateSyntaxError( - message="File: " + queue_dict["script"] + " - " + error.message, - lineno=error.lineno + message="File: " + + queue_dict["script"] + + " - " + + error.message, + lineno=error.lineno, ) @staticmethod