From 7c21f20f0f91c4e349aaeffb6cf88d021388774e Mon Sep 17 00:00:00 2001
From: Daniel <d.hornung@indiscale.com>
Date: Tue, 22 Aug 2023 15:32:06 +0200
Subject: [PATCH] TEST: Better yaml parser error.

---
 CHANGELOG.md                            | 2 ++
 manual_tests/test_labfolder_import.py   | 2 +-
 manual_tests/test_labfolder_retrieve.py | 2 +-
 unittests/{ => models}/model.yml        | 0
 unittests/models/model_invalid.yml      | 2 ++
 unittests/test_yaml_model_parser.py     | 8 ++++++++
 6 files changed, 14 insertions(+), 2 deletions(-)
 rename unittests/{ => models}/model.yml (100%)
 create mode 100644 unittests/models/model_invalid.yml

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 9eb927fd..f24f8f29 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -10,6 +10,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Changed ###
 
+* A bit better error handling in the yaml model parser.
+
 ### Deprecated ###
 
 ### Removed ###
diff --git a/manual_tests/test_labfolder_import.py b/manual_tests/test_labfolder_import.py
index e1e9d326..c767feb5 100644
--- a/manual_tests/test_labfolder_import.py
+++ b/manual_tests/test_labfolder_import.py
@@ -32,7 +32,7 @@ from caosadvancedtools.converter import labfolder_export as labfolder
 
 def main(args):
     """The main function."""
-    model = parse_model_from_yaml("./model.yml")
+    model = parse_model_from_yaml("./models/model.yml")
 
     model.sync_data_model()
     labfolder.import_data(args.folder)
diff --git a/manual_tests/test_labfolder_retrieve.py b/manual_tests/test_labfolder_retrieve.py
index 8c3f12d8..5bbaf91d 100644
--- a/manual_tests/test_labfolder_retrieve.py
+++ b/manual_tests/test_labfolder_retrieve.py
@@ -31,7 +31,7 @@ from caosadvancedtools.converter.labfolder_api import Importer
 
 def main(args):
     """The main function."""
-    model = parse_model_from_yaml("./model.yml")
+    model = parse_model_from_yaml("./models/model.yml")
 
     # model.sync_data_model()
     importer = Importer()
diff --git a/unittests/model.yml b/unittests/models/model.yml
similarity index 100%
rename from unittests/model.yml
rename to unittests/models/model.yml
diff --git a/unittests/models/model_invalid.yml b/unittests/models/model_invalid.yml
new file mode 100644
index 00000000..c8368b97
--- /dev/null
+++ b/unittests/models/model_invalid.yml
@@ -0,0 +1,2 @@
+Project:
+   ObligatoryProperties:
diff --git a/unittests/test_yaml_model_parser.py b/unittests/test_yaml_model_parser.py
index 6cdea792..b1177a46 100644
--- a/unittests/test_yaml_model_parser.py
+++ b/unittests/test_yaml_model_parser.py
@@ -511,3 +511,11 @@ R3:
         # Until removal, both do the same
         assert has_parent(r3, par)
         assert r3.get_parent(par)._flags["inheritance"] == db.OBLIGATORY
+
+
+def test_yaml_error():
+    """Testing error while parsing a yaml.
+    """
+
+    with raises(ValueError, match=r"line 2: .*"):
+        parse_model_from_yaml("unittests/models/model_invalid.yml")
-- 
GitLab