[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(
r"^esphome/components/([^/]+)/.*", fname.replace(os.path.sep, "/")
).group(1)
search = f"namespace {expected_name}"
if search in content:
# Check for both old style and C++17 nested namespace syntax
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 (
"Invalid namespace found in C++ file. All integration C++ files should put all "
"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)}"
)