Add list support for ttfw_idf test decorators. Only replicate supported keys

This commit is contained in:
Fu Hanxi
2020-04-30 11:49:51 +08:00
parent e553092d62
commit 5c92d36078
3 changed files with 26 additions and 5 deletions

View File

@@ -44,6 +44,7 @@ import re
import json
import yaml
try:
from yaml import CLoader as Loader
except ImportError:
@@ -67,7 +68,7 @@ class Group(object):
self.case_list = [case]
self.filters = dict(zip(self.SORT_KEYS, [self._get_case_attr(case, x) for x in self.SORT_KEYS]))
# we use ci_job_match_keys to match CI job tags. It's a set of required tags.
self.ci_job_match_keys = set([self._get_case_attr(case, x) for x in self.CI_JOB_MATCH_KEYS])
self.ci_job_match_keys = self._get_match_keys(case)
@staticmethod
def _get_case_attr(case, attr):
@@ -75,6 +76,16 @@ class Group(object):
# this method will do get attribute form cases
return case.case_info[attr]
def _get_match_keys(self, case):
keys = []
for attr in self.CI_JOB_MATCH_KEYS:
val = self._get_case_attr(case, attr)
if isinstance(val, list):
keys.extend(val)
else:
keys.append(val)
return set(keys)
def accept_new_case(self):
"""
check if allowed to add any case to this group

View File

@@ -23,6 +23,7 @@ from . import load_source
class Search(object):
TEST_CASE_FILE_PATTERN = "*_test.py"
SUPPORT_REPLICATE_CASES_KEY = ['target']
@classmethod
def _search_cases_from_file(cls, file_name):
@@ -104,7 +105,8 @@ class Search(object):
if not replicate_config:
break
key = replicate_config.pop()
replicated_cases = _replicate_for_key(replicated_cases, key, case.case_info[key])
if key in cls.SUPPORT_REPLICATE_CASES_KEY:
replicated_cases = _replicate_for_key(replicated_cases, key, case.case_info[key])
# mark the cases with targets not in ci_target
for case in replicated_cases: