[ci] Support C++17 nested namespace syntax in linter (#9826)

This commit is contained in:
J. Nick Koston 2025-07-23 01:32:35 -10:00 committed by GitHub
parent 378b687a82
commit 6ac1073469
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -575,13 +575,15 @@ def lint_namespace(fname, content):
expected_name = re.match( expected_name = re.match(
r"^esphome/components/([^/]+)/.*", fname.replace(os.path.sep, "/") r"^esphome/components/([^/]+)/.*", fname.replace(os.path.sep, "/")
).group(1) ).group(1)
search = f"namespace {expected_name}" # Check for both old style and C++17 nested namespace syntax
if search in content: search_old = f"namespace {expected_name}"
search_new = f"namespace esphome::{expected_name}"
if search_old in content or search_new in content:
return None return None
return ( return (
"Invalid namespace found in C++ file. All integration C++ files should put all " "Invalid namespace found in C++ file. All integration C++ files should put all "
"functions in a separate namespace that matches the integration's name. " "functions in a separate namespace that matches the integration's name. "
f"Please make sure the file contains {highlight(search)}" f"Please make sure the file contains {highlight(search_old)} or {highlight(search_new)}"
) )