Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions src/extensions/score_metamodel/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,27 @@ score_pytest(
pytest_config = "//:pyproject.toml",
deps = [":score_metamodel"],
)

score_pytest(
name = "file_based_tests_safety",
srcs = ["tests/test_rules_file_based.py"],
data = glob(["tests/rst/safety/*.rst"]) + [
"tests/__init__.py",
"tests/rst/conf.py",
"tests/rst/needs.json",
],
pytest_config = "//:pyproject.toml",
deps = [":score_metamodel"],
)

score_pytest(
name = "file_based_tests_security",
srcs = ["tests/test_rules_file_based.py"],
data = glob(["tests/rst/security/*.rst"]) + [
"tests/__init__.py",
"tests/rst/conf.py",
"tests/rst/needs.json",
],
pytest_config = "//:pyproject.toml",
deps = [":score_metamodel"],
)
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
..
# *******************************************************************************
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************


.. test_metadata::
:id: test_metadata__std_types
:fully_verifies_list: tool_req__docs_stdreq_types[version==1], tool_req__docs_stdwp_types[version==1]
Comment thread
a-zw marked this conversation as resolved.
:test_type: requirements_based
:derivation_technique: requirements_based

Tests that std_req and std_wp directives are supported by the metamodel.


.. std_req:: Standard requirement
:id: std_req__iso26262__test__001
:status: valid
:expect_not: unknown directive


.. std_wp:: Standard workproduct
:id: std_wp__iso26262__test__001
:status: valid
:expect_not: unknown directive
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

.. test_metadata::
:id: test_metadata__metamodel_link_checks
:partially_verifies_list: tool_req__docs_req_types
:partially_verifies_list: tool_req__docs_req_types[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

.. test_metadata::
:id: test_metadata__extra_options
:partially_verifies_list: tool_req__docs_req_types, tool_req__docs_common_attr_status
:partially_verifies_list: tool_req__docs_req_types[version==1], tool_req__docs_common_attr_status[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

.. test_metadata::
:id: test_metadata__failure_effect
:partially_verifies_list: tool_req__docs_saf_attr_fmea_failure_effect
:fully_verifies_list: tool_req__docs_saf_attr_fmea_failure_effect[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

.. test_metadata::
:id: test_metadata__mandatory_options_and_links
:partially_verifies_list: tool_req__docs_common_attr_status, tool_req__docs_req_types
:partially_verifies_list: tool_req__docs_common_attr_status[version==1], tool_req__docs_req_types[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Expand Down
12 changes: 1 addition & 11 deletions src/extensions/score_metamodel/tests/rst/options/wp_comp.rst
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@

.. test_metadata::
:id: test_metadata__wp_comp
:partially_verifies_list: tool_req__docs_stdwp_types, tool_req__docs_wp_types
:fully_verifies_list: tool_req__docs_stdwp_types[version==1], tool_req__docs_wp_types[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Expand All @@ -31,24 +31,17 @@
.. std_req:: Standard IIC requirement
:id: std_req__aspice_40__iic_001

----

.. Expect no warning with "complies"

.. workproduct:: No Link is ok, since complies is optional
:id: wp__001
:expect_not: complies

---

.. Expect no warning with "complies"

.. workproduct:: Linking to std_wp is allowed
:id: wp__002
:complies: std_wp__iso26262__001
:expect_not: complies

---

.. FIXME: this will currently be printed as an INFO, and not as a warning.
Re-enable EXCPECT once we can enable that as a warning.
Expand All @@ -58,9 +51,6 @@
:complies: std_req__iso26262__001
:expect: std_req__iso26262__001` does not fulfill condition `{'or': ['id contains aspice_40__iic', 'id contains std_wp']}`. Explanation: Workproducts may only link to ASPICE 40 IIC stakeholder requirements. Please ensure that the linked requirement is an ASPICE 40 IIC stakeholder requirement.

---



.. workproduct:: But it can refer to std_req if it is an IIC requirement
:id: wp__003_two
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
..
# *******************************************************************************
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************


.. test_metadata::
:id: test_metadata__saf_mandatory_attrs
:fully_verifies_list:
tool_req__docs_saf_attr_dfa_failure_id[version==2],
tool_req__docs_saf_attr_fmea_fault_id[version==2],
tool_req__docs_saf_attrs_sufficient[version==1],
tool_req__docs_saf_attrs_content[version==2]
:partially_verifies_list: tool_req__docs_saf_attrs_mandatory[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Tests that all safety analysis types have required mandatory attributes:
- DFA: failure_id
- FMEA: fault_id
- All: failure_effect, status, sufficient, content


.. feat_saf_dfa:: Missing failure_id
:id: feat_saf_dfa__test__missing_fid
:version: 1
:status: valid
:failure_effect: signal lost
:sufficient: yes
:expect: is missing required attribute: `failure_id`


.. comp_saf_dfa:: Valid failure_id
:id: comp_saf_dfa__test__good_fid
:version: 1
:status: valid
:failure_id: df_good_001
:failure_effect: communication lost
:sufficient: no
:expect_not: missing required attribute: `failure_id`


.. feat_saf_fmea:: Missing fault_id
:id: feat_saf_fmea__test__missing_fault
:version: 1
:status: valid
:failure_effect: valve stuck
:sufficient: yes
:expect: is missing required attribute: `fault_id`


.. comp_saf_fmea:: Valid fault_id
:id: comp_saf_fmea__test__good_fault
:version: 1
:status: valid
:fault_id: fault_good_001
:failure_effect: valve stuck
:sufficient: no
:expect_not: missing required attribute: `fault_id`


.. plat_saf_dfa:: Missing failure_effect
:id: plat_saf_dfa__test__missing_fe
:version: 1
:status: valid
:failure_id: df_fe_bad
:sufficient: yes
:expect: is missing required attribute: `failure_effect`


.. feat_saf_dfa:: Missing sufficient
:id: feat_saf_dfa__test__missing_suff
:version: 1
:status: valid
:failure_id: df_suff_bad
:failure_effect: output wrong
:expect: is missing required attribute: `sufficient`


.. feat_saf_fmea:: Valid sufficient yes
:id: feat_saf_fmea__test__suff_ok_1
:version: 1
:status: valid
:fault_id: fault_suff_ok_1
:failure_effect: system error
:sufficient: yes
:expect_not: does not follow pattern


.. comp_saf_dfa:: Valid sufficient no
:id: comp_saf_dfa__test__suff_ok_2
:version: 1
:status: valid
:failure_id: df_suff_ok_2
:failure_effect: signal lost
:sufficient: no
:expect_not: does not follow pattern


.. feat_saf_dfa:: Invalid sufficient value
:id: feat_saf_dfa__test__suff_bad
:version: 1
:status: valid
:failure_id: df_suff_bad_2
:failure_effect: bad output
:sufficient: maybe
:expect: does not follow pattern


.. feat_saf_fmea:: Valid content
:id: feat_saf_fmea__test__content_ok
:version: 1
:status: valid
:fault_id: fault_content_ok
:failure_effect: crash
:sufficient: yes
Comment thread
a-zw marked this conversation as resolved.
:expect_not: is missing required attribute: `content`.

This is the content of the FMEA entry.


.. comp_saf_dfa:: Missing content
:id: comp_saf_dfa__test__content_bad
:version: 1
:status: valid
:failure_id: df_content_bad
:failure_effect: no response
:sufficient: no
:expect: is missing required attribute: `content`.
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
..
# *******************************************************************************
# Copyright (c) 2026 Contributors to the Eclipse Foundation
#
# See the NOTICE file(s) distributed with this work for additional
# information regarding copyright ownership.
#
# This program and the accompanying materials are made available under the
# terms of the Apache License Version 2.0 which is available at
# https://www.apache.org/licenses/LICENSE-2.0
#
# SPDX-License-Identifier: Apache-2.0
# *******************************************************************************

.. test_metadata::
:id: test_metadata__saf_optional_attrs
:fully_verifies_list: tool_req__docs_saf_attrs_mitigation_issue[version==1], tool_req__docs_saf_attrs_safety_relevant[version==1], tool_req__docs_saf_attrs_root_cause[version==1]
:test_type: requirements_based
:derivation_technique: requirements_based

Tests optional attributes for safety analysis types:
- mitigation_issue: GitHub issue URL pattern
- safety_relevant: yes/no for all SAF types
- root_cause: non-empty content for FMEA


.. feat_saf_dfa:: Valid mitigation issue
Comment thread
a-zw marked this conversation as resolved.
:id: feat_saf_dfa__opt__001
:version: 1
:failure_id: df_opt_001
:failure_effect: comms loss
:sufficient: no
:status: valid
:mitigation_issue: https://github.com/eclipse-score/docs-as-code/issues/42
:expect_not: need_id


.. feat_saf_fmea:: Valid mitigation issue 2
:id: feat_saf_fmea__opt__001
:version: 1
:fault_id: fault_opt_001
:failure_effect: valve stuck
:sufficient: yes
:status: valid
:mitigation_issue: https://github.com/owner/repo/issues/123
:expect_not: need_id


.. comp_saf_dfa:: Safety relevant yes
:id: comp_saf_dfa__opt__001
:version: 1
:failure_id: df_opt_003
:failure_effect: signal noise
:sufficient: no
:status: valid
:safety_relevant: yes
:expect_not: need_id


.. comp_saf_dfa:: Safety relevant no
:id: comp_saf_dfa__opt__002
:version: 1
:failure_id: df_opt_004
:failure_effect: power failure
:sufficient: yes
:status: valid
:safety_relevant: no
:expect_not: need_id


.. feat_saf_dfa:: Invalid safety relevant
:id: feat_saf_dfa__opt__bad_001
:version: 1
:failure_id: df_opt_bad_001
:failure_effect: bad value
:sufficient: no
:status: valid
:safety_relevant: perhaps
:expect: does not follow pattern


.. feat_saf_fmea:: FMEA with root cause
:id: feat_saf_fmea__opt__002
:version: 1
:fault_id: fault_opt_002
:failure_effect: component failure
:sufficient: no
:status: valid
:root_cause: manufacturing defect in solder joints
:expect_not: need_id


.. comp_saf_fmea:: Comp FMEA with root cause
:id: comp_saf_fmea__opt__001
:version: 1
:fault_id: fault_opt_003
:failure_effect: software crash
:sufficient: yes
:status: valid
:root_cause: null pointer dereference in interrupt handler
:expect_not: need_id
Loading
Loading