Coverage for lobster/tools/cpptest/parser/requirements_parser.py: 91%
26 statements
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-26 14:55 +0000
« prev ^ index » next coverage.py v7.9.1, created at 2025-06-26 14:55 +0000
1"""
2This script verifies if the test files of a given
3target contains @requirement tag or not
4"""
5import logging
6from pathlib import Path
7from typing import List
9from lobster.tools.cpptest.parser.test_case import TestCase
12class ParserForRequirements:
13 @staticmethod
14 def collect_test_cases_for_test_files(
15 test_files: List[Path],
16 codebeamer_url: str = "",
17 ) -> List:
18 """
19 Parse a list of source files for test cases
21 Parameters
22 ----------
23 test_files: List[Path]
24 Source files to parse
25 codebeamer_url: str
27 Returns
28 -------
29 List[TestCase]
30 List of parsed TestCase
31 """
32 test_cases = []
34 for file in set(test_files):
35 file_test_cases = (
36 ParserForRequirements.collect_test_cases(file, codebeamer_url))
37 test_cases.extend(file_test_cases)
39 return test_cases
41 @staticmethod
42 def collect_test_cases(
43 file: Path,
44 codebeamer_url: str = "",
45 ) -> List[TestCase]:
46 """
47 Parse a source file for test cases
49 Parameters
50 ----------
51 file: Path
52 Source file to parse
53 codebeamer_url: str
55 Returns
56 -------
57 List[TestCase]
58 List of parsed TestCase
59 """
61 try:
62 with open(file, "r", encoding="UTF-8", errors="ignore") as f:
63 lines = f.readlines()
65 except Exception as e: # pylint: disable=broad-exception-caught
66 logging.error("exception %s", e)
67 return []
69 test_cases = []
71 for i in range(0, len(lines)):
72 test_case = TestCase.try_parse(file, lines, i, codebeamer_url)
74 if test_case:
75 test_cases.append(test_case)
76 return test_cases