diff options
Diffstat (limited to 'tools/testing/kunit/kunit_config.py')
| -rw-r--r-- | tools/testing/kunit/kunit_config.py | 41 | 
1 files changed, 32 insertions, 9 deletions
diff --git a/tools/testing/kunit/kunit_config.py b/tools/testing/kunit/kunit_config.py index ebf3942b23f5..e75063d603b5 100644 --- a/tools/testing/kunit/kunit_config.py +++ b/tools/testing/kunit/kunit_config.py @@ -9,16 +9,18 @@  import collections  import re -CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_\w+ is not set$' -CONFIG_PATTERN = r'^CONFIG_\w+=\S+$' - -KconfigEntryBase = collections.namedtuple('KconfigEntry', ['raw_entry']) +CONFIG_IS_NOT_SET_PATTERN = r'^# CONFIG_(\w+) is not set$' +CONFIG_PATTERN = r'^CONFIG_(\w+)=(\S+)$' +KconfigEntryBase = collections.namedtuple('KconfigEntry', ['name', 'value'])  class KconfigEntry(KconfigEntryBase):  	def __str__(self) -> str: -		return self.raw_entry +		if self.value == 'n': +			return r'# CONFIG_%s is not set' % (self.name) +		else: +			return r'CONFIG_%s=%s' % (self.name, self.value)  class KconfigParseError(Exception): @@ -38,7 +40,17 @@ class Kconfig(object):  		self._entries.append(entry)  	def is_subset_of(self, other: 'Kconfig') -> bool: -		return self.entries().issubset(other.entries()) +		for a in self.entries(): +			found = False +			for b in other.entries(): +				if a.name != b.name: +					continue +				if a.value != b.value: +					return False +				found = True +			if a.value != 'n' and found == False: +				return False +		return True  	def write_to_file(self, path: str) -> None:  		with open(path, 'w') as f: @@ -54,9 +66,20 @@ class Kconfig(object):  			line = line.strip()  			if not line:  				continue -			elif config_matcher.match(line) or is_not_set_matcher.match(line): -				self._entries.append(KconfigEntry(line)) -			elif line[0] == '#': + +			match = config_matcher.match(line) +			if match: +				entry = KconfigEntry(match.group(1), match.group(2)) +				self.add_entry(entry) +				continue + +			empty_match = is_not_set_matcher.match(line) +			if empty_match: +				entry = KconfigEntry(empty_match.group(1), 'n') +				self.add_entry(entry) +				continue + +			if line[0] == '#':  				continue  			else:  				raise KconfigParseError('Failed to parse: ' + line)  |