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
29 changes: 29 additions & 0 deletions src/extensions/score_metamodel/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -135,3 +135,32 @@ score_pytest(
pytest_config = "//:pyproject.toml",
deps = [":score_metamodel"],
)

score_pytest(
name = "file_based_tests_safety",
srcs = ["tests/test_rules_file_based.py"],
data = [
"tests/rst/safety/test_saf_types.rst",
"tests/rst/safety/test_saf_mandatory_attrs.rst",
"tests/rst/safety/test_saf_violates.rst",
"tests/rst/safety/test_saf_optional_attrs.rst",
] + [
"tests/__init__.py",
"tests/rst/conf.py",
"tests/rst/needs.json",
],
Comment on lines +142 to +151
pytest_config = "//:pyproject.toml",
deps = [":score_metamodel"],
)

score_pytest(
name = "file_based_tests_security",
srcs = ["tests/test_rules_file_based.py"],
data = ["tests/rst/security/test_security_types.rst"] + [
"tests/__init__.py",
"tests/rst/conf.py",
"tests/rst/needs.json",
],
Comment on lines +159 to +163
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
:partially_verifies_list: tool_req__docs_stdreq_types, tool_req__docs_stdwp_types
: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
@@ -0,0 +1,121 @@
..
# *******************************************************************************
# 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
:partially_verifies_list: tool_req__docs_saf_attrs_mandatory, tool_req__docs_saf_attr_dfa_failure_id, tool_req__docs_saf_attr_fmea_fault_id, tool_req__docs_saf_attrs_sufficient, tool_req__docs_saf_attrs_content
: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
: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
: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
: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
: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
: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
: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
: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
: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
: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
:status: valid
:fault_id: fault_content_ok
:failure_effect: crash
:sufficient: yes

This is the content of the FMEA entry.


.. comp_saf_dfa:: Missing content
:id: comp_saf_dfa__test__content_bad
: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,88 @@
..
# *******************************************************************************
# 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
:partially_verifies_list: tool_req__docs_saf_attrs_mitigation_issue, tool_req__docs_saf_attrs_safety_relevant, tool_req__docs_saf_attrs_root_cause
: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
:id: feat_saf_dfa__opt__001
: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


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


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


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


.. feat_saf_dfa:: Invalid safety relevant
:id: feat_saf_dfa__opt__bad_001
: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
:fault_id: fault_opt_002
:failure_effect: component failure
:sufficient: no
:status: valid
:root_cause: manufacturing defect in solder joints


.. comp_saf_fmea:: Comp FMEA with root cause
:id: comp_saf_fmea__opt__001
:fault_id: fault_opt_003
:failure_effect: software crash
:sufficient: yes
:status: valid
:root_cause: null pointer dereference in interrupt handler
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
..
# *******************************************************************************
# 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_types
:partially_verifies_list: tool_req__docs_saf_types, tool_req__docs_saf_attrs_mandatory
:test_type: requirements_based
:derivation_technique: requirements_based

Tests that all safety analysis need types are supported and that
mandatory attributes are enforced.


.. feat_saf_fmea:: Feature FMEA entry
:id: feat_saf_fmea__test__001
:status: valid
:fault_id: fault_1
:failure_effect: system hangs
:sufficient: yes
:expect_not: unknown directive


.. comp_saf_fmea:: Component FMEA entry
:id: comp_saf_fmea__test__001
:status: valid
:fault_id: fault_2
:failure_effect: valve stuck open
:sufficient: no
:expect_not: unknown directive


.. plat_saf_dfa:: Platform DFA entry
:id: plat_saf_dfa__test__001
:status: valid
:failure_id: df_1
:failure_effect: signal delay
:sufficient: yes
:expect_not: unknown directive


.. feat_saf_dfa:: Feature DFA entry
:id: feat_saf_dfa__test__001
:status: valid
:failure_id: df_2
:failure_effect: unexpected output
:sufficient: yes
:expect_not: unknown directive


.. comp_saf_dfa:: Component DFA entry
:id: comp_saf_dfa__test__001
:status: valid
:failure_id: df_3
:failure_effect: communication loss
:sufficient: no
:expect_not: unknown directive


.. feat_saf_fmea:: Missing failure effect
:id: feat_saf_fmea__test__bad_001
:status: valid
:fault_id: fault_bad
:sufficient: yes
:expect: is missing required attribute: `failure_effect`.


.. comp_saf_dfa:: Missing status
:id: comp_saf_dfa__test__bad_001
:failure_id: df_bad
:failure_effect: no status
:sufficient: yes
:expect: is missing required attribute: `status`.
Loading
Loading