[rtems-central commit] validation: Improve test program error message
Sebastian Huber
sebh at rtems.org
Wed Feb 3 12:38:18 UTC 2021
Module: rtems-central
Branch: master
Commit: bc91d315f435870e1614dbb64c321b562f78abe6
Changeset: http://git.rtems.org/rtems-central/commit/?id=bc91d315f435870e1614dbb64c321b562f78abe6
Author: Sebastian Huber <sebastian.huber at embedded-brains.de>
Date: Wed Feb 3 10:22:13 2021 +0100
validation: Improve test program error message
---
rtemsspec/tests/test_validation.py | 94 ++++++++++++++++++++++++++++++++++++--
rtemsspec/validation.py | 9 +++-
2 files changed, 99 insertions(+), 4 deletions(-)
diff --git a/rtemsspec/tests/test_validation.py b/rtemsspec/tests/test_validation.py
index 2dd1ab7..9abc9da 100644
--- a/rtemsspec/tests/test_validation.py
+++ b/rtemsspec/tests/test_validation.py
@@ -28,14 +28,13 @@ import os
import pytest
from rtemsspec.validation import generate
-from rtemsspec.items import EmptyItemCache, ItemCache
+from rtemsspec.items import EmptyItemCache, Item, ItemCache
from rtemsspec.tests.util import create_item_cache_config_and_copy_spec
def test_validation(tmpdir):
- validation_config = {}
base_directory = os.path.join(tmpdir, "base")
- validation_config["base-directory"] = base_directory
+ validation_config = {"base-directory": base_directory}
generate(validation_config, EmptyItemCache())
@@ -1988,3 +1987,92 @@ void Action2_Run( int *a, int b, int *c )
/** @} */
"""
assert content == src.read()
+
+
+def _add_item(item_cache, uid, data, item_type):
+ item = Item(item_cache, uid, data)
+ item["_type"] = item_type
+ item_cache.all[item.uid] = item
+ return item
+
+
+def test_validation_invalid_actions():
+ item_cache = EmptyItemCache()
+ validation_config = {"base-directory": "/foobar"}
+ spdx = "CC-BY-SA-4.0 OR BSD-2-Clause"
+ copyright = "Copyright (C) 2021 John Doe"
+ action_data = {
+ "SPDX-License-Identifier":
+ spdx,
+ "copyrights": [copyright],
+ "enabled-by":
+ True,
+ "functional-type":
+ "action",
+ "links": [],
+ "post-conditions": [{
+ "name": "X",
+ "states": [],
+ "test-epilogue": None,
+ "test-prologue": None,
+ }],
+ "pre-conditions": [{
+ "name": "A",
+ "states": [],
+ "test-epilogue": None,
+ "test-prologue": None,
+ }],
+ "rationale":
+ None,
+ "references": [],
+ "requirement-type":
+ "functional",
+ "skip-reasons": {},
+ "test-action":
+ None,
+ "test-brief":
+ None,
+ "test-cleanup":
+ None,
+ "test-context": [],
+ "test-context-support":
+ None,
+ "test-description":
+ None,
+ "test-header":
+ None,
+ "test-includes": [],
+ "test-local-includes": [],
+ "test-name":
+ "A",
+ "test-prepare":
+ None,
+ "test-setup":
+ None,
+ "test-stop":
+ None,
+ "test-support":
+ None,
+ "test-target":
+ "a.c",
+ "test-teardown":
+ None,
+ "text":
+ None,
+ "transition-map": [{
+ "enabled-by": True,
+ "post-conditions": {
+ "X": "X0",
+ },
+ "pre-conditions": {
+ "A": "all"
+ },
+ }],
+ "type":
+ "requirement",
+ }
+ _add_item(item_cache, "/a", action_data, "requirement/functional/action")
+ match = ("the target file 'a.c' of spec:/a is not a source file of an "
+ "item of type 'build/test-program'")
+ with pytest.raises(ValueError, match=match):
+ generate(validation_config, item_cache)
diff --git a/rtemsspec/validation.py b/rtemsspec/validation.py
index f86a9ff..6515ca2 100644
--- a/rtemsspec/validation.py
+++ b/rtemsspec/validation.py
@@ -161,7 +161,14 @@ class _TestItem:
test_case_to_suites: Dict[str, List["_TestItem"]]) -> None:
""" Adds the test case description. """
with content.defgroup_block(self.group_identifier, self.name):
- _add_ingroup(content, test_case_to_suites[self.uid])
+ try:
+ test_suites = test_case_to_suites[self.uid]
+ except KeyError as err:
+ msg = (f"the target file '{self['test-target']}' of "
+ f"{self.item.spec} is not a source file of an item of "
+ "type 'build/test-program'")
+ raise ValueError(msg) from err
+ _add_ingroup(content, test_suites)
content.add_brief_description(self.brief)
content.wrap(self.description)
self.add_test_case_action_description(content)
More information about the vc
mailing list