cpp-linter 1.12.1__tar.gz → 1.13.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/analyze-workflows.yml +2 -2
  2. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/release.yml +5 -5
  3. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/tests.yml +10 -10
  4. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.pre-commit-config.yaml +3 -3
  5. {cpp_linter-1.12.1/cpp_linter.egg-info → cpp_linter-1.13.0}/PKG-INFO +5 -2
  6. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/README.rst +4 -1
  7. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/_version.py +3 -3
  8. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/cli.py +9 -0
  9. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/rest_api/github_api.py +19 -3
  10. {cpp_linter-1.12.1 → cpp_linter-1.13.0/cpp_linter.egg-info}/PKG-INFO +5 -2
  11. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/SOURCES.txt +2 -0
  12. cpp_linter-1.13.0/cpp_linter.egg-info/scm_file_list.json +139 -0
  13. cpp_linter-1.13.0/cpp_linter.egg-info/scm_version.json +8 -0
  14. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/conf.py +1 -0
  15. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/test_comments.py +13 -0
  16. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_cli_args.py +12 -0
  17. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/uv.lock +9 -9
  18. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.gitattributes +0 -0
  19. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/FUNDING.yml +0 -0
  20. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/dependabot.yml +0 -0
  21. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/codeql.yml +0 -0
  22. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/docs.yml +0 -0
  23. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/labeler.yml +0 -0
  24. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/pre-commit.yml +0 -0
  25. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/release-drafter.yml +0 -0
  26. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/workflows/stale.yml +0 -0
  27. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.github/zizmor.yml +0 -0
  28. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.gitignore +0 -0
  29. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/.readthedocs.yaml +0 -0
  30. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/CONTRIBUTING.rst +0 -0
  31. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/LICENSE +0 -0
  32. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/codecov.yml +0 -0
  33. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/__init__.py +0 -0
  34. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/clang_tools/__init__.py +0 -0
  35. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/clang_tools/clang_format.py +0 -0
  36. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/clang_tools/clang_tidy.py +0 -0
  37. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/clang_tools/patcher.py +0 -0
  38. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/common_fs/__init__.py +0 -0
  39. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/common_fs/file_filter.py +0 -0
  40. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/git/__init__.py +0 -0
  41. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/git/git_str.py +0 -0
  42. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/loggers.py +0 -0
  43. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter/rest_api/__init__.py +0 -0
  44. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/dependency_links.txt +0 -0
  45. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/entry_points.txt +0 -0
  46. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/not-zip-safe +0 -0
  47. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/requires.txt +0 -0
  48. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cpp_linter.egg-info/top_level.txt +0 -0
  49. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/cspell.config.yml +0 -0
  50. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.clang_tools.clang_format.rst +0 -0
  51. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.clang_tools.clang_tidy.rst +0 -0
  52. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.clang_tools.patcher.rst +0 -0
  53. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.clang_tools.rst +0 -0
  54. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.cli.rst +0 -0
  55. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.common_fs.file_filter.rst +0 -0
  56. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.common_fs.rst +0 -0
  57. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.git.git_str.rst +0 -0
  58. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.git.rst +0 -0
  59. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.loggers.rst +0 -0
  60. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.rest_api.github_api.rst +0 -0
  61. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.rest_api.rst +0 -0
  62. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/API-Reference/cpp_linter.rst +0 -0
  63. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/_static/extra_css.css +0 -0
  64. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/_static/favicon.ico +0 -0
  65. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/_static/logo.png +0 -0
  66. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/building_docs.rst +0 -0
  67. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/contributing.rst +0 -0
  68. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/index.rst +0 -0
  69. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/permissions.rst +0 -0
  70. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/docs/pr_review_caveats.rst +0 -0
  71. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/noxfile.py +0 -0
  72. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/pyproject.toml +0 -0
  73. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/setup.cfg +0 -0
  74. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/setup.py +0 -0
  75. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/.clang-format +0 -0
  76. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/.clang-tidy +0 -0
  77. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/opl/opl.c +0 -0
  78. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/opl/opl_sdl.c +0 -0
  79. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/pcsound/pcsound.c +0 -0
  80. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/pcsound/pcsound_sdl.c +0 -0
  81. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_musicpack.c +0 -0
  82. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sdlmusic.c +0 -0
  83. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sdlsound.c +0 -0
  84. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sound.c +0 -0
  85. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/net_sdl.c +0 -0
  86. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_0.json +0 -0
  87. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_1.json +0 -0
  88. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_2.json +0 -0
  89. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/patch.diff +0 -0
  90. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/info.c +0 -0
  91. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/p_enemy.c +0 -0
  92. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/p_local.h +0 -0
  93. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_0.json +0 -0
  94. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_1.json +0 -0
  95. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_2.json +0 -0
  96. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/patch.diff +0 -0
  97. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/.clang-format +0 -0
  98. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/.clang-tidy +0 -0
  99. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/cache/tests/demo/demo.cpp +0 -0
  100. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/cache/tests/demo/demo.hpp +0 -0
  101. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/patch.diff +0 -0
  102. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/cpp-linter/cpp-linter/test_git_lib.patch +0 -0
  103. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/.clang-format +0 -0
  104. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/.clang-tidy +0 -0
  105. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_0.json +0 -0
  106. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_1.json +0 -0
  107. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_2.json +0 -0
  108. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/patch.diff +0 -0
  109. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/.clang-format +0 -0
  110. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/.clang-tidy +0 -0
  111. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/cache/p_enemy.c +0 -0
  112. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_0.json +0 -0
  113. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_1.json +0 -0
  114. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_2.json +0 -0
  115. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/patch.diff +0 -0
  116. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/test_database_path.py +0 -0
  117. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/capture_tools_output/test_tools_output.py +0 -0
  118. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/pr_22.json +0 -0
  119. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/pr_comments_pg1.json +0 -0
  120. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/pr_comments_pg2.json +0 -0
  121. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/push_8d68756375e0483c7ac2b4d6bbbece420dbbb495.json +0 -0
  122. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/comments/push_comments_8d68756375e0483c7ac2b4d6bbbece420dbbb495.json +0 -0
  123. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/demo/.clang-format +0 -0
  124. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/demo/.clang-tidy +0 -0
  125. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/demo/compile_flags.txt +0 -0
  126. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/demo/demo.cpp +0 -0
  127. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/demo/demo.hpp +0 -0
  128. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/ignored_paths/.gitmodules +0 -0
  129. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/ignored_paths/test_ignored_paths.py +0 -0
  130. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/patch.diff +0 -0
  131. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/pull_request_files_pg1.json +0 -0
  132. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/pull_request_files_pg2.json +0 -0
  133. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/push_files_pg1.json +0 -0
  134. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/push_files_pg2.json +0 -0
  135. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/list_changes/test_get_file_changes.py +0 -0
  136. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/.clang-format +0 -0
  137. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/.clang-tidy +0 -0
  138. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/pr_27.diff +0 -0
  139. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/pr_27.json +0 -0
  140. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/pr_review_comments.json +0 -0
  141. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/pr_reviews.json +0 -0
  142. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/reviews/test_pr_review.py +0 -0
  143. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_comment_length.py +0 -0
  144. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_git_str.py +0 -0
  145. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_misc.py +0 -0
  146. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_parse_clang_tidy_stdout.py +0 -0
  147. {cpp_linter-1.12.1 → cpp_linter-1.13.0}/tests/test_rate_limits.py +0 -0
@@ -12,11 +12,11 @@ jobs:
12
12
  analyze-ci:
13
13
  runs-on: ubuntu-latest
14
14
  steps:
15
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
15
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
16
16
  with:
17
17
  persist-credentials: false
18
18
  - name: Set up Python
19
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
19
+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
20
20
  with:
21
21
  python-version: '3.x'
22
22
  - name: Run zizmor
@@ -20,19 +20,19 @@ jobs:
20
20
  build:
21
21
  runs-on: ubuntu-latest
22
22
  steps:
23
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
23
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
24
24
  # use fetch --all for setuptools_scm to work
25
25
  with:
26
26
  fetch-depth: 0
27
27
  persist-credentials: false
28
28
  - name: Set up Python
29
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
29
+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
30
30
  with:
31
31
  python-version: '3.x'
32
32
  - name: Build distributions
33
33
  run: pipx run build -o dist
34
34
  - name: Upload builds as artifacts
35
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
35
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
36
36
  with:
37
37
  path: dist
38
38
  name: wheels
@@ -51,7 +51,7 @@ jobs:
51
51
  path: dist
52
52
  - name: Set up Python
53
53
  if: ${{ !startsWith(github.ref, 'refs/tags/') }}
54
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
54
+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
55
55
  with:
56
56
  python-version: '3.x'
57
57
  - name: Check distributions
@@ -59,4 +59,4 @@ jobs:
59
59
  run: pipx run twine check dist/*
60
60
  - name: Deploy to PyPI
61
61
  if: startsWith(github.ref, 'refs/tags/')
62
- uses: pypa/gh-action-pypi-publish@ed0c53931b1dc9bd32cbe73a98c7f6766f8a527e # v1.13.0
62
+ uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
@@ -36,11 +36,11 @@ jobs:
36
36
 
37
37
  runs-on: ${{ matrix.os }}
38
38
  steps:
39
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
39
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
40
40
  with:
41
41
  persist-credentials: false
42
42
 
43
- - uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
43
+ - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
44
44
  with:
45
45
  python-version: 3.x
46
46
 
@@ -60,7 +60,7 @@ jobs:
60
60
  # sudo cmake --install build
61
61
 
62
62
  - name: Install uv
63
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
63
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
64
64
  with:
65
65
  enable-cache: true
66
66
  cache-dependency-glob: "uv.lock"
@@ -91,7 +91,7 @@ jobs:
91
91
  - name: Install clang-tools
92
92
  run: |
93
93
  python -m pip install clang-tools
94
- clang-tools --install ${{ matrix.version }}
94
+ clang-tools install clang-format clang-tidy --version ${{ matrix.version }}
95
95
 
96
96
  - name: Is clang-only tests?
97
97
  id: clang-dep
@@ -112,7 +112,7 @@ jobs:
112
112
  run: uvx nox -s test-all -- -m "${PYTEST_ARGS}"
113
113
 
114
114
  - name: Upload coverage data
115
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
115
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
116
116
  with:
117
117
  name: coverage-data-${{ runner.os }}-${{ matrix.version }}
118
118
  path: .coverage*
@@ -125,7 +125,7 @@ jobs:
125
125
  name: test-coverage
126
126
  url: https://app.codecov.io/gh/cpp-linter/cpp-linter
127
127
  steps:
128
- - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
128
+ - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
129
129
  with:
130
130
  persist-credentials: false
131
131
 
@@ -136,12 +136,12 @@ jobs:
136
136
  merge-multiple: true
137
137
 
138
138
  - name: Setup python
139
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
139
+ uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0
140
140
  with:
141
141
  python-version: '3.x'
142
142
 
143
143
  - name: Install uv
144
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
144
+ uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
145
145
  with:
146
146
  enable-cache: true
147
147
  cache-dependency-glob: "uv.lock"
@@ -150,12 +150,12 @@ jobs:
150
150
  run: uvx nox -s coverage
151
151
 
152
152
  - name: Upload comprehensive coverage HTML report
153
- uses: actions/upload-artifact@bbbca2ddaa5d8feaa63e36b76fdaad77386f024f # v7.0.0
153
+ uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
154
154
  with:
155
155
  name: coverage-report
156
156
  path: htmlcov/
157
157
 
158
- - uses: codecov/codecov-action@57e3a136b779b570ffcdbf80b3bdc90e7fab3de2 # v6.0.0
158
+ - uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
159
159
  env:
160
160
  CODECOV_TOKEN: ${{secrets.CODECOV_TOKEN}}
161
161
  with:
@@ -20,14 +20,14 @@ repos:
20
20
  args: ["--fix=lf"]
21
21
  - repo: https://github.com/astral-sh/ruff-pre-commit
22
22
  # Ruff version.
23
- rev: v0.14.10
23
+ rev: v0.15.9
24
24
  hooks:
25
25
  # Run the linter.
26
26
  - id: ruff-check
27
27
  # Run the formatter.
28
28
  - id: ruff-format
29
29
  - repo: https://github.com/pre-commit/mirrors-mypy
30
- rev: 'v1.19.1'
30
+ rev: 'v1.20.0'
31
31
  hooks:
32
32
  - id: mypy
33
33
  additional_dependencies:
@@ -38,6 +38,6 @@ repos:
38
38
  - requests-mock
39
39
  - '.'
40
40
  - repo: https://github.com/streetsidesoftware/cspell-cli
41
- rev: v9.4.0
41
+ rev: v9.8.0
42
42
  hooks:
43
43
  - id: cspell
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cpp-linter
3
- Version: 1.12.1
3
+ Version: 1.13.0
4
4
  Summary: Run clang-format and clang-tidy on a batch of files.
5
5
  Author-email: Brendan Doherty <2bndy5@gmail.com>, Xianpeng Shen <xianpeng.shen@gmail.com>
6
6
  License-Expression: MIT
@@ -50,8 +50,11 @@ C/C++ Linting Package
50
50
  .. |pypi-badge| image:: https://img.shields.io/pypi/dw/cpp-linter?color=dark-green&label=PyPI%20Downloads&logo=python&logoColor=white
51
51
  :target: https://pepy.tech/project/cpp-linter
52
52
  :alt: PyPI - Downloads
53
+ .. |hub-badge| image:: https://img.shields.io/badge/%F0%9F%8F%A0_cpp--linter_hub-%E2%86%90_home-22863a
54
+ :alt: cpp-linter hub
55
+ :target: https://cpp-linter.github.io/
53
56
 
54
- |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge|
57
+ |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge| |hub-badge|
55
58
 
56
59
  A Python package for linting C/C++ code with clang-tidy and/or clang-format to collect feedback provided in the form of thread comments and/or file annotations.
57
60
 
@@ -19,8 +19,11 @@ C/C++ Linting Package
19
19
  .. |pypi-badge| image:: https://img.shields.io/pypi/dw/cpp-linter?color=dark-green&label=PyPI%20Downloads&logo=python&logoColor=white
20
20
  :target: https://pepy.tech/project/cpp-linter
21
21
  :alt: PyPI - Downloads
22
+ .. |hub-badge| image:: https://img.shields.io/badge/%F0%9F%8F%A0_cpp--linter_hub-%E2%86%90_home-22863a
23
+ :alt: cpp-linter hub
24
+ :target: https://cpp-linter.github.io/
22
25
 
23
- |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge|
26
+ |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge| |hub-badge|
24
27
 
25
28
  A Python package for linting C/C++ code with clang-tidy and/or clang-format to collect feedback provided in the form of thread comments and/or file annotations.
26
29
 
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '1.12.1'
22
- __version_tuple__ = version_tuple = (1, 12, 1)
21
+ __version__ = version = '1.13.0'
22
+ __version_tuple__ = version_tuple = (1, 13, 0)
23
23
 
24
- __commit_id__ = commit_id = 'g87b634e51'
24
+ __commit_id__ = commit_id = 'ge8981d1cf'
@@ -73,6 +73,8 @@ class Args(UserDict):
73
73
  ignore_format: str = ""
74
74
  #: See :std:option:`--passive-reviews`.
75
75
  passive_reviews: bool = False
76
+ #: See :std:option:`--summary-output-file`.
77
+ summary_output_file: str = ""
76
78
  #: A subcommand if provided
77
79
  command: str | None = None
78
80
 
@@ -386,6 +388,13 @@ _parser_args[("-R", "--passive-reviews")] = dict(
386
388
  help="""Set to ``true`` to prevent Pull Request
387
389
  reviews from requesting or approving changes.""",
388
390
  )
391
+ _parser_args[("-o", "--summary-output-file")] = dict(
392
+ default="",
393
+ help="""Supply a path to which the step summary will be written.
394
+ Leave empty to not write summary to a file.
395
+ Any relative path shall be relative to the
396
+ :std:option:`--repo-root` path.""",
397
+ )
389
398
 
390
399
 
391
400
  def _parse_jobs(val: str) -> int | None:
@@ -224,7 +224,9 @@ class GithubApiClient(RestApiClient):
224
224
  checks_failed = format_checks_failed + tidy_checks_failed
225
225
  comment: None | str = None
226
226
 
227
- if args.step_summary and "GITHUB_STEP_SUMMARY" in environ:
227
+ write_step_summary = args.step_summary and "GITHUB_STEP_SUMMARY" in environ
228
+
229
+ if write_step_summary or args.summary_output_file:
228
230
  comment = super().make_comment(
229
231
  files=files,
230
232
  format_checks_failed=format_checks_failed,
@@ -232,8 +234,22 @@ class GithubApiClient(RestApiClient):
232
234
  clang_versions=clang_versions,
233
235
  len_limit=None,
234
236
  )
235
- with open(environ["GITHUB_STEP_SUMMARY"], "a", encoding="utf-8") as summary:
236
- summary.write(f"\n{comment}\n")
237
+ if write_step_summary:
238
+ with open(
239
+ environ["GITHUB_STEP_SUMMARY"], "a", encoding="utf-8"
240
+ ) as summary:
241
+ summary.write(f"\n{comment}\n")
242
+ if args.summary_output_file:
243
+ summary_output_path = Path(args.summary_output_file).resolve()
244
+ try:
245
+ summary_output_path.parent.mkdir(parents=True, exist_ok=True)
246
+ summary_output_path.write_text(f"\n{comment}\n", encoding="utf-8")
247
+ except (OSError, ValueError) as e:
248
+ log_commander.error(
249
+ "Failed to write summary output file '%s': %s",
250
+ summary_output_path,
251
+ e,
252
+ )
237
253
 
238
254
  if args.file_annotations:
239
255
  self.make_annotations(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cpp-linter
3
- Version: 1.12.1
3
+ Version: 1.13.0
4
4
  Summary: Run clang-format and clang-tidy on a batch of files.
5
5
  Author-email: Brendan Doherty <2bndy5@gmail.com>, Xianpeng Shen <xianpeng.shen@gmail.com>
6
6
  License-Expression: MIT
@@ -50,8 +50,11 @@ C/C++ Linting Package
50
50
  .. |pypi-badge| image:: https://img.shields.io/pypi/dw/cpp-linter?color=dark-green&label=PyPI%20Downloads&logo=python&logoColor=white
51
51
  :target: https://pepy.tech/project/cpp-linter
52
52
  :alt: PyPI - Downloads
53
+ .. |hub-badge| image:: https://img.shields.io/badge/%F0%9F%8F%A0_cpp--linter_hub-%E2%86%90_home-22863a
54
+ :alt: cpp-linter hub
55
+ :target: https://cpp-linter.github.io/
53
56
 
54
- |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge|
57
+ |latest-version| |python-version| |license-badge| |codecov-badge| |doc-badge| |pypi-badge| |hub-badge|
55
58
 
56
59
  A Python package for linting C/C++ code with clang-tidy and/or clang-format to collect feedback provided in the form of thread comments and/or file annotations.
57
60
 
@@ -33,6 +33,8 @@ cpp_linter.egg-info/dependency_links.txt
33
33
  cpp_linter.egg-info/entry_points.txt
34
34
  cpp_linter.egg-info/not-zip-safe
35
35
  cpp_linter.egg-info/requires.txt
36
+ cpp_linter.egg-info/scm_file_list.json
37
+ cpp_linter.egg-info/scm_version.json
36
38
  cpp_linter.egg-info/top_level.txt
37
39
  cpp_linter/clang_tools/__init__.py
38
40
  cpp_linter/clang_tools/clang_format.py
@@ -0,0 +1,139 @@
1
+ {
2
+ "files": [
3
+ ".pre-commit-config.yaml",
4
+ "uv.lock",
5
+ "LICENSE",
6
+ "setup.py",
7
+ "pyproject.toml",
8
+ "CONTRIBUTING.rst",
9
+ "README.rst",
10
+ "cspell.config.yml",
11
+ "codecov.yml",
12
+ ".gitattributes",
13
+ ".gitignore",
14
+ "noxfile.py",
15
+ ".readthedocs.yaml",
16
+ "cpp_linter/__init__.py",
17
+ "cpp_linter/cli.py",
18
+ "cpp_linter/loggers.py",
19
+ "cpp_linter/common_fs/__init__.py",
20
+ "cpp_linter/common_fs/file_filter.py",
21
+ "cpp_linter/rest_api/__init__.py",
22
+ "cpp_linter/rest_api/github_api.py",
23
+ "cpp_linter/clang_tools/__init__.py",
24
+ "cpp_linter/clang_tools/clang_format.py",
25
+ "cpp_linter/clang_tools/clang_tidy.py",
26
+ "cpp_linter/clang_tools/patcher.py",
27
+ "cpp_linter/git/__init__.py",
28
+ "cpp_linter/git/git_str.py",
29
+ "docs/building_docs.rst",
30
+ "docs/contributing.rst",
31
+ "docs/index.rst",
32
+ "docs/permissions.rst",
33
+ "docs/pr_review_caveats.rst",
34
+ "docs/conf.py",
35
+ "docs/API-Reference/cpp_linter.rst",
36
+ "docs/API-Reference/cpp_linter.clang_tools.clang_tidy.rst",
37
+ "docs/API-Reference/cpp_linter.common_fs.file_filter.rst",
38
+ "docs/API-Reference/cpp_linter.git.rst",
39
+ "docs/API-Reference/cpp_linter.clang_tools.patcher.rst",
40
+ "docs/API-Reference/cpp_linter.clang_tools.clang_format.rst",
41
+ "docs/API-Reference/cpp_linter.cli.rst",
42
+ "docs/API-Reference/cpp_linter.loggers.rst",
43
+ "docs/API-Reference/cpp_linter.rest_api.rst",
44
+ "docs/API-Reference/cpp_linter.git.git_str.rst",
45
+ "docs/API-Reference/cpp_linter.rest_api.github_api.rst",
46
+ "docs/API-Reference/cpp_linter.common_fs.rst",
47
+ "docs/API-Reference/cpp_linter.clang_tools.rst",
48
+ "docs/_static/logo.png",
49
+ "docs/_static/favicon.ico",
50
+ "docs/_static/extra_css.css",
51
+ "tests/test_git_str.py",
52
+ "tests/test_comment_length.py",
53
+ "tests/test_misc.py",
54
+ "tests/test_parse_clang_tidy_stdout.py",
55
+ "tests/test_rate_limits.py",
56
+ "tests/test_cli_args.py",
57
+ "tests/list_changes/pull_request_files_pg1.json",
58
+ "tests/list_changes/push_files_pg1.json",
59
+ "tests/list_changes/push_files_pg2.json",
60
+ "tests/list_changes/test_get_file_changes.py",
61
+ "tests/list_changes/pull_request_files_pg2.json",
62
+ "tests/list_changes/patch.diff",
63
+ "tests/capture_tools_output/test_database_path.py",
64
+ "tests/capture_tools_output/test_tools_output.py",
65
+ "tests/capture_tools_output/cpp-linter/cpp-linter/.clang-format",
66
+ "tests/capture_tools_output/cpp-linter/cpp-linter/.clang-tidy",
67
+ "tests/capture_tools_output/cpp-linter/cpp-linter/test_git_lib.patch",
68
+ "tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/patch.diff",
69
+ "tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/cache/tests/demo/demo.hpp",
70
+ "tests/capture_tools_output/cpp-linter/cpp-linter/950ff0b690e1903797c303c5fc8d9f3b52f1d3c5/cache/tests/demo/demo.cpp",
71
+ "tests/capture_tools_output/shenxianpeng/test-repo/.clang-format",
72
+ "tests/capture_tools_output/shenxianpeng/test-repo/.clang-tidy",
73
+ "tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_0.json",
74
+ "tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_2.json",
75
+ "tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/expected-result_1.json",
76
+ "tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/patch.diff",
77
+ "tests/capture_tools_output/shenxianpeng/test-repo/662ad4cf90084063ea9c089b8de4aff0b8959d0e/cache/p_enemy.c",
78
+ "tests/capture_tools_output/libvips/libvips/.clang-format",
79
+ "tests/capture_tools_output/libvips/libvips/.clang-tidy",
80
+ "tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_0.json",
81
+ "tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_2.json",
82
+ "tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/expected-result_1.json",
83
+ "tests/capture_tools_output/libvips/libvips/fe82be345a5b654a76835a7aea5a804bd9ebff0a/patch.diff",
84
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/.clang-format",
85
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/.clang-tidy",
86
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_0.json",
87
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_2.json",
88
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/expected-result_1.json",
89
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/patch.diff",
90
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/p_local.h",
91
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/info.c",
92
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/71091562db5b0e7853d08ffa2f110af49cc3bc0d/cache/src/hexen/p_enemy.c",
93
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_0.json",
94
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_2.json",
95
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/expected-result_1.json",
96
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/patch.diff",
97
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/pcsound/pcsound.c",
98
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/pcsound/pcsound_sdl.c",
99
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/net_sdl.c",
100
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sound.c",
101
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sdlmusic.c",
102
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_sdlsound.c",
103
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/src/i_musicpack.c",
104
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/opl/opl_sdl.c",
105
+ "tests/capture_tools_output/chocolate-doom/chocolate-doom/67715d6e2725322e6132e9ff99b9a2a3f3b10c83/cache/opl/opl.c",
106
+ "tests/comments/pr_comments_pg2.json",
107
+ "tests/comments/pr_22.json",
108
+ "tests/comments/test_comments.py",
109
+ "tests/comments/push_8d68756375e0483c7ac2b4d6bbbece420dbbb495.json",
110
+ "tests/comments/pr_comments_pg1.json",
111
+ "tests/comments/push_comments_8d68756375e0483c7ac2b4d6bbbece420dbbb495.json",
112
+ "tests/reviews/pr_review_comments.json",
113
+ "tests/reviews/.clang-format",
114
+ "tests/reviews/.clang-tidy",
115
+ "tests/reviews/pr_reviews.json",
116
+ "tests/reviews/test_pr_review.py",
117
+ "tests/reviews/pr_27.json",
118
+ "tests/reviews/pr_27.diff",
119
+ "tests/demo/.clang-format",
120
+ "tests/demo/compile_flags.txt",
121
+ "tests/demo/demo.hpp",
122
+ "tests/demo/.clang-tidy",
123
+ "tests/demo/demo.cpp",
124
+ "tests/ignored_paths/.gitmodules",
125
+ "tests/ignored_paths/test_ignored_paths.py",
126
+ ".github/zizmor.yml",
127
+ ".github/dependabot.yml",
128
+ ".github/FUNDING.yml",
129
+ ".github/workflows/release.yml",
130
+ ".github/workflows/pre-commit.yml",
131
+ ".github/workflows/labeler.yml",
132
+ ".github/workflows/docs.yml",
133
+ ".github/workflows/tests.yml",
134
+ ".github/workflows/stale.yml",
135
+ ".github/workflows/release-drafter.yml",
136
+ ".github/workflows/codeql.yml",
137
+ ".github/workflows/analyze-workflows.yml"
138
+ ]
139
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "tag": "1.13.0",
3
+ "distance": 0,
4
+ "node": "ge8981d1cf3a2b8fa05fda8a0d61e8590d29e98ce",
5
+ "dirty": false,
6
+ "branch": "HEAD",
7
+ "node_date": "2026-06-26"
8
+ }
@@ -239,6 +239,7 @@ REQUIRED_VERSIONS = {
239
239
  "1.9.0": ["ignore_tidy", "ignore_format"],
240
240
  "1.10.0": ["passive_reviews"],
241
241
  "1.12.0": ["diff_base", "ignore_index"],
242
+ "1.13.0": ["summary_output_file"],
242
243
  }
243
244
  SUBCOMMAND_VERSIONS = {"version": "1.11.0"}
244
245
 
@@ -66,6 +66,12 @@ def test_post_feedback(
66
66
  args.thread_comments = thread_comments
67
67
  args.step_summary = thread_comments == "update" and not no_lgtm
68
68
  args.file_annotations = thread_comments == "update" and no_lgtm
69
+ if thread_comments == "true":
70
+ # cover the summary_output_file branch with a writable file path
71
+ args.summary_output_file = str(tmp_path / "summary.md")
72
+ elif thread_comments == "false" and no_lgtm:
73
+ # cover the summary_output_file branch where the path is erroneously a directory
74
+ args.summary_output_file = str(tmp_path)
69
75
  clang_versions = capture_clang_tools_output(files, args=args)
70
76
  # add a non project file to tidy_advice to intentionally cover a log.debug()
71
77
  for file in files:
@@ -170,3 +176,10 @@ def test_post_feedback(
170
176
  caplog.set_level(logging.DEBUG, logger=logger.name)
171
177
 
172
178
  gh_client.post_feedback(files, args, clang_versions)
179
+
180
+ if args.summary_output_file:
181
+ summary_output_path = Path(args.summary_output_file)
182
+ if not summary_output_path.is_dir():
183
+ # regular file path -> summary was written
184
+ assert summary_output_path.is_file()
185
+ assert summary_output_path.read_text(encoding="utf-8")
@@ -39,6 +39,18 @@ from cpp_linter.cli import get_cli_parser, Args
39
39
  ("jobs", "4", "jobs", 4),
40
40
  pytest.param("jobs", "x", "jobs", 0, marks=pytest.mark.xfail),
41
41
  ("ignore-tidy", "!src|", "ignore_tidy", "!src|"),
42
+ (
43
+ "summary-output-file",
44
+ "test-output-file.md",
45
+ "summary_output_file",
46
+ "test-output-file.md",
47
+ ),
48
+ (
49
+ "summary-output-file",
50
+ "",
51
+ "summary_output_file",
52
+ "",
53
+ ),
42
54
  ],
43
55
  )
44
56
  def test_arg_parser(
@@ -499,11 +499,11 @@ wheels = [
499
499
 
500
500
  [[package]]
501
501
  name = "idna"
502
- version = "3.11"
502
+ version = "3.15"
503
503
  source = { registry = "https://pypi.org/simple" }
504
- sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" }
504
+ sdist = { url = "https://files.pythonhosted.org/packages/82/77/7b3966d0b9d1d31a36ddf1746926a11dface89a83409bf1483f0237aa758/idna-3.15.tar.gz", hash = "sha256:ca962446ea538f7092a95e057da437618e886f4d349216d2b1e294abfdb65fdc", size = 199245, upload-time = "2026-05-12T22:45:57.011Z" }
505
505
  wheels = [
506
- { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" },
506
+ { url = "https://files.pythonhosted.org/packages/d2/23/408243171aa9aaba178d3e2559159c24c1171a641aa83b67bdd3394ead8e/idna-3.15-py3-none-any.whl", hash = "sha256:048adeaf8c2d788c40fee287673ccaa74c24ffd8dcf09ffa555a2fbb59f10ac8", size = 72340, upload-time = "2026-05-12T22:45:55.733Z" },
507
507
  ]
508
508
 
509
509
  [[package]]
@@ -1059,7 +1059,7 @@ wheels = [
1059
1059
 
1060
1060
  [[package]]
1061
1061
  name = "pytest"
1062
- version = "8.4.2"
1062
+ version = "9.0.3"
1063
1063
  source = { registry = "https://pypi.org/simple" }
1064
1064
  dependencies = [
1065
1065
  { name = "colorama", marker = "sys_platform == 'win32'" },
@@ -1070,9 +1070,9 @@ dependencies = [
1070
1070
  { name = "pygments" },
1071
1071
  { name = "tomli", marker = "python_full_version < '3.11'" },
1072
1072
  ]
1073
- sdist = { url = "https://files.pythonhosted.org/packages/a3/5c/00a0e072241553e1a7496d638deababa67c5058571567b92a7eaa258397c/pytest-8.4.2.tar.gz", hash = "sha256:86c0d0b93306b961d58d62a4db4879f27fe25513d4b969df351abdddb3c30e01", size = 1519618, upload-time = "2025-09-04T14:34:22.711Z" }
1073
+ sdist = { url = "https://files.pythonhosted.org/packages/7d/0d/549bd94f1a0a402dc8cf64563a117c0f3765662e2e668477624baeec44d5/pytest-9.0.3.tar.gz", hash = "sha256:b86ada508af81d19edeb213c681b1d48246c1a91d304c6c81a427674c17eb91c", size = 1572165, upload-time = "2026-04-07T17:16:18.027Z" }
1074
1074
  wheels = [
1075
- { url = "https://files.pythonhosted.org/packages/a8/a4/20da314d277121d6534b3a980b29035dcd51e6744bd79075a6ce8fa4eb8d/pytest-8.4.2-py3-none-any.whl", hash = "sha256:872f880de3fc3a5bdc88a11b39c9710c3497a547cfa9320bc3c5e62fbf272e79", size = 365750, upload-time = "2025-09-04T14:34:20.226Z" },
1075
+ { url = "https://files.pythonhosted.org/packages/d4/24/a372aaf5c9b7208e7112038812994107bc65a84cd00e0354a88c2c77a617/pytest-9.0.3-py3-none-any.whl", hash = "sha256:2c5efc453d45394fdd706ade797c0a81091eccd1d6e4bccfcd476e2b8e0ab5d9", size = 375249, upload-time = "2026-04-07T17:16:16.13Z" },
1076
1076
  ]
1077
1077
 
1078
1078
  [[package]]
@@ -1441,11 +1441,11 @@ wheels = [
1441
1441
 
1442
1442
  [[package]]
1443
1443
  name = "urllib3"
1444
- version = "2.6.3"
1444
+ version = "2.7.0"
1445
1445
  source = { registry = "https://pypi.org/simple" }
1446
- sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" }
1446
+ sdist = { url = "https://files.pythonhosted.org/packages/53/0c/06f8b233b8fd13b9e5ee11424ef85419ba0d8ba0b3138bf360be2ff56953/urllib3-2.7.0.tar.gz", hash = "sha256:231e0ec3b63ceb14667c67be60f2f2c40a518cb38b03af60abc813da26505f4c", size = 433602, upload-time = "2026-05-07T16:13:18.596Z" }
1447
1447
  wheels = [
1448
- { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" },
1448
+ { url = "https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl", hash = "sha256:9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897", size = 131087, upload-time = "2026-05-07T16:13:17.151Z" },
1449
1449
  ]
1450
1450
 
1451
1451
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes