Move test case ignore list to the master Task class

No intended behavior change.

Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
diff --git a/tests/scripts/analyze_outcomes.py b/tests/scripts/analyze_outcomes.py
index fa5079e..cbe4ed4 100755
--- a/tests/scripts/analyze_outcomes.py
+++ b/tests/scripts/analyze_outcomes.py
@@ -120,6 +120,12 @@
 class Task:
     """Base class for outcome analysis tasks."""
 
+    # Override the following in child classes.
+    # Map test suite names (with the test_suite_prefix) to a list of ignored
+    # test cases. Each element in the list can be either a string or a regex;
+    # see the `name_matches_pattern` function.
+    IGNORED_TESTS = {} #type: typing.Dict[str, typing.List[IgnoreEntry]]
+
     def __init__(self, options) -> None:
         """Pass command line options to the tasks.
 
@@ -130,6 +136,15 @@
     def section_name(self) -> str:
         """The section name to use in results."""
 
+    def is_test_case_ignored(self, full_test_suite: str, test_string: str) -> bool:
+        """Check if the specified test case is ignored."""
+        test_suite = full_test_suite.split('.')[0] # retrieve main part of test suite name
+        for str_or_re in (self.IGNORED_TESTS.get(full_test_suite, []) +
+                          self.IGNORED_TESTS.get(test_suite, [])):
+            if name_matches_pattern(test_string, str_or_re):
+                return True
+        return False
+
     def run(self, results: Results, outcomes: Outcomes):
         """Run the analysis on the specified outcomes.
 
@@ -206,10 +221,6 @@
     DRIVER = ''
     # Ignored test suites (without the test_suite_ prefix).
     IGNORED_SUITES = [] #type: typing.List[str]
-    # Map test suite names (with the test_suite_prefix) to a list of ignored
-    # test cases. Each element in the list can be either a string or a regex;
-    # see the `name_matches_pattern` function.
-    IGNORED_TESTS = {} #type: typing.Dict[str, typing.List[IgnoreEntry]]
 
     def __init__(self, options) -> None:
         super().__init__(options)
@@ -251,11 +262,7 @@
             # For ignored test cases inside test suites, just remember and:
             # don't issue an error if they're skipped with drivers,
             # but issue an error if they're not (means we have a bad entry).
-            ignored = False
-            for str_or_re in (self.IGNORED_TESTS.get(full_test_suite, []) +
-                              self.IGNORED_TESTS.get(test_suite, [])):
-                if name_matches_pattern(test_string, str_or_re):
-                    ignored = True
+            ignored = self.is_test_case_ignored(full_test_suite, test_string)
 
             if not ignored and not suite_case in driver_outcomes.successes:
                 results.error("SKIP/FAIL -> PASS: {}", suite_case)