mirror of
https://github.com/esphome/esphome.git
synced 2025-08-02 16:37:46 +00:00
[CI] Fix clang-tidy not running when platformio.ini changes
This commit is contained in:
parent
71cc298363
commit
ba7d5d807d
@ -137,6 +137,10 @@ def should_run_clang_tidy(branch: str | None = None) -> bool:
|
|||||||
- This ensures all C++ code is checked, including tests, examples, etc.
|
- This ensures all C++ code is checked, including tests, examples, etc.
|
||||||
- Examples: esphome/core/component.cpp, tests/custom/my_component.h
|
- Examples: esphome/core/component.cpp, tests/custom/my_component.h
|
||||||
|
|
||||||
|
3. The .clang-tidy.hash file itself changed
|
||||||
|
- This indicates the configuration has been updated and clang-tidy should run
|
||||||
|
- Ensures that PRs updating the clang-tidy configuration are properly validated
|
||||||
|
|
||||||
If the hash check fails for any reason, clang-tidy runs as a safety measure to ensure
|
If the hash check fails for any reason, clang-tidy runs as a safety measure to ensure
|
||||||
code quality is maintained.
|
code quality is maintained.
|
||||||
|
|
||||||
@ -160,6 +164,12 @@ def should_run_clang_tidy(branch: str | None = None) -> bool:
|
|||||||
# If hash check fails, run clang-tidy to be safe
|
# If hash check fails, run clang-tidy to be safe
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
# Check if .clang-tidy.hash file itself was changed
|
||||||
|
# This handles the case where the hash was properly updated in the PR
|
||||||
|
files = changed_files(branch)
|
||||||
|
if ".clang-tidy.hash" in files:
|
||||||
|
return True
|
||||||
|
|
||||||
return _any_changed_file_endswith(branch, CPP_FILE_EXTENSIONS)
|
return _any_changed_file_endswith(branch, CPP_FILE_EXTENSIONS)
|
||||||
|
|
||||||
|
|
||||||
|
@ -262,6 +262,8 @@ def test_should_run_integration_tests_component_dependency() -> None:
|
|||||||
(0, [], True), # Hash changed - need full scan
|
(0, [], True), # Hash changed - need full scan
|
||||||
(1, ["esphome/core.cpp"], True), # C++ file changed
|
(1, ["esphome/core.cpp"], True), # C++ file changed
|
||||||
(1, ["README.md"], False), # No C++ files changed
|
(1, ["README.md"], False), # No C++ files changed
|
||||||
|
(1, [".clang-tidy.hash"], True), # Hash file itself changed
|
||||||
|
(1, ["platformio.ini", ".clang-tidy.hash"], True), # Config + hash changed
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
def test_should_run_clang_tidy(
|
def test_should_run_clang_tidy(
|
||||||
@ -277,12 +279,27 @@ def test_should_run_clang_tidy(
|
|||||||
result = determine_jobs.should_run_clang_tidy()
|
result = determine_jobs.should_run_clang_tidy()
|
||||||
assert result == expected_result
|
assert result == expected_result
|
||||||
|
|
||||||
# Test with hash check failing (exception)
|
|
||||||
if check_returncode != 0:
|
def test_should_run_clang_tidy_hash_check_exception() -> None:
|
||||||
with patch("subprocess.run", side_effect=Exception("Failed")):
|
"""Test should_run_clang_tidy when hash check fails with exception."""
|
||||||
|
# When hash check fails, clang-tidy should run as a safety measure
|
||||||
|
with (
|
||||||
|
patch.object(determine_jobs, "changed_files", return_value=["README.md"]),
|
||||||
|
patch("subprocess.run", side_effect=Exception("Hash check failed")),
|
||||||
|
):
|
||||||
result = determine_jobs.should_run_clang_tidy()
|
result = determine_jobs.should_run_clang_tidy()
|
||||||
assert result is True # Fail safe - run clang-tidy
|
assert result is True # Fail safe - run clang-tidy
|
||||||
|
|
||||||
|
# Even with C++ files, exception should trigger clang-tidy
|
||||||
|
with (
|
||||||
|
patch.object(
|
||||||
|
determine_jobs, "changed_files", return_value=["esphome/core.cpp"]
|
||||||
|
),
|
||||||
|
patch("subprocess.run", side_effect=Exception("Hash check failed")),
|
||||||
|
):
|
||||||
|
result = determine_jobs.should_run_clang_tidy()
|
||||||
|
assert result is True
|
||||||
|
|
||||||
|
|
||||||
def test_should_run_clang_tidy_with_branch() -> None:
|
def test_should_run_clang_tidy_with_branch() -> None:
|
||||||
"""Test should_run_clang_tidy with branch argument."""
|
"""Test should_run_clang_tidy with branch argument."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user