Exclusively use re.search() to avoid confusion with .match()
Also fix newline being removed when lines were concatenated
Signed-off-by: Yuto Takano <yuto.takano@arm.com>
diff --git a/tests/scripts/check_names.py b/tests/scripts/check_names.py
index b12f406..c0fc20f 100755
--- a/tests/scripts/check_names.py
+++ b/tests/scripts/check_names.py
@@ -407,16 +407,16 @@
# Match typedefs and brackets only when they are at the
# beginning of the line -- if they are indented, they might
# be sub-structures within structs, etc.
- if state == 0 and re.match(r"^(typedef +)?enum +{", line):
+ if state == 0 and re.search(r"^(typedef +)?enum +{", line):
state = 1
- elif state == 0 and re.match(r"^(typedef +)?enum", line):
+ elif state == 0 and re.search(r"^(typedef +)?enum", line):
state = 2
- elif state == 2 and re.match(r"^{", line):
+ elif state == 2 and re.search(r"^{", line):
state = 1
- elif state == 1 and re.match(r"^}", line):
+ elif state == 1 and re.search(r"^}", line):
state = 0
- elif state == 1 and not re.match(r" *#", line):
- enum_const = re.match(r" *(?P<enum_const>\w+)", line)
+ elif state == 1 and not re.search(r"^ *#", line):
+ enum_const = re.search(r"^ *(?P<enum_const>\w+)", line)
if not enum_const:
continue
@@ -433,8 +433,6 @@
Parse all lines of a header where a function/enum/struct/union/typedef
identifier is declared, based on some heuristics. Highly dependent on
formatting style.
- Note: .match() checks at the beginning of the string (implicit ^), while
- .search() checks throughout.
Args:
* include: A List of glob expressions to look for files through.
@@ -459,12 +457,12 @@
)
exclusion_lines = re.compile(
r"^("
- r"extern +\"C\"|"
- r"(typedef +)?(struct|union|enum)( *{)?$|"
- r"} *;?$|"
- r"$|"
- r"//|"
- r"#"
+ r"extern +\"C\"|"
+ r"(typedef +)?(struct|union|enum)( *{)?$|"
+ r"} *;?$|"
+ r"$|"
+ r"//|"
+ r"#"
r")"
)
@@ -493,7 +491,7 @@
previous_line = ""
continue
- if exclusion_lines.match(line):
+ if exclusion_lines.search(line):
previous_line = ""
continue
@@ -501,14 +499,14 @@
# characters (or underscore, asterisk, or, open bracket),
# and nothing else, high chance it's a declaration that
# continues on the next line
- if re.match(r"^([\w\*\(]+\s+)+$", line):
+ if re.search(r"^([\w\*\(]+\s+)+$", line):
previous_line += line
continue
# If previous line seemed to start an unfinished declaration
# (as above), concat and treat them as one.
if previous_line:
- line = previous_line.strip() + " " + line.strip()
+ line = previous_line.strip() + " " + line.strip() + "\n"
previous_line = ""
# Skip parsing if line has a space in front = heuristic to
@@ -626,8 +624,8 @@
).stdout
for line in nm_output.splitlines():
- if not nm_undefined_regex.match(line):
- symbol = nm_valid_regex.match(line)
+ if not nm_undefined_regex.search(line):
+ symbol = nm_valid_regex.search(line)
if (symbol and not symbol.group("symbol").startswith(exclusions)):
symbols.append(symbol.group("symbol"))
else:
@@ -718,10 +716,10 @@
problems = []
for item_match in self.parse_result[group_to_check]:
- if not re.match(check_pattern, item_match.name):
+ if not re.search(check_pattern, item_match.name):
problems.append(PatternMismatch(check_pattern, item_match))
- # Double underscore is a reserved identifier, never to be used
- if re.match(r".*__.*", item_match.name):
+ # Double underscore should not be used for names
+ if re.search(r".*__.*", item_match.name):
problems.append(PatternMismatch("double underscore", item_match))
self.output_check_result(