From 2ace0f2a240848c78f9663c70ea774141f5afc48 Mon Sep 17 00:00:00 2001 From: Max Lv Date: Thu, 15 Oct 2026 01:31:02 +0800 Subject: [PATCH] Run clang-tidy on every ported test The test regex skipped file names with digits (test_aead2022_cpp.cpp, test_base64_cpp.cpp); include them, fix the two optional accesses it then reports, and build test_jconf with the strict warning set. --- .github/workflows/tests.yml | 2 +- CLAUDE.md | 2 +- tests/CMakeLists.txt | 2 +- tests/test_crypto_aead2022_cpp.cpp | 5 +++-- 4 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1fcea67f..45624986 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -125,7 +125,7 @@ jobs: run: | set -o pipefail tidy_status=0 - run-clang-tidy-18 -quiet -p build -extra-arg=-Wno-unknown-warning-option "$PWD/(src/(core/|event/|relay/|crypto/|api/)?[^/]+\.(c|cpp)|tests/test_(core_[^/]+|[a-z_]+_cpp)\.cpp)$" 2>&1 | tee tidy.log || tidy_status=$? + run-clang-tidy-18 -quiet -p build -extra-arg=-Wno-unknown-warning-option "$PWD/(src/(core/|event/|relay/|crypto/|api/)?[^/]+\.(c|cpp)|tests/test_(core_[^/]+|[a-z0-9_]+_cpp)\.cpp)$" 2>&1 | tee tidy.log || tidy_status=$? grep 'warning:' tidy.log | sort -u > warnings.txt || true count="$(wc -l < warnings.txt)" echo "clang-tidy warnings: $count (max allowed: $MAX_WARNINGS)" diff --git a/CLAUDE.md b/CLAUDE.md index 5e6852e1..0a322ff0 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -80,7 +80,7 @@ Uses **uncrustify** with the config at `.uncrustify.cfg`. Key settings: 4-space - **clang-tidy**: config in `.clang-tidy`. The build exports `compile_commands.json` automatically. Run locally: ```bash - run-clang-tidy -quiet -p build '/(src/(core/|event/|relay/|crypto/|api/)?[^/]+\.(c|cpp)|tests/test_(core_[^/]+|[a-z_]+_cpp)\.cpp)$' + run-clang-tidy -quiet -p build '/(src/(core/|event/|relay/|crypto/|api/)?[^/]+\.(c|cpp)|tests/test_(core_[^/]+|[a-z0-9_]+_cpp)\.cpp)$' ``` On macOS with Homebrew LLVM, add `-extra-arg="-isysroot$(xcrun --show-sdk-path)"`. CI (`clang-tidy` job in `tests.yml`) enforces a warning-count ratchet via `MAX_WARNINGS` — lower it when fixing findings; never raise it without justification. - **No-heap lint**: `scripts/check_no_heap.py --self-test` (also a ctest) rejects heap allocation in C++ sources under `src/`. diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index c7547070..ae604c09 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -296,7 +296,7 @@ ss_add_test(test_acl_literal ss_strict_warnings( test_acl_cpp.cpp test_acl_literal_cpp.cpp test_aead2022_cpp.cpp test_base64_cpp.cpp test_buffer_cpp.cpp test_cache_reference_cpp.cpp test_crypto_cpp.cpp test_ipset_cpp.cpp - test_json_cpp.cpp test_netutils_cpp.cpp test_ppbloom_cpp.cpp test_process_cpp.cpp + test_jconf_cpp.cpp test_json_cpp.cpp test_netutils_cpp.cpp test_ppbloom_cpp.cpp test_process_cpp.cpp test_ref_cpp.cpp test_ssurl_cpp.cpp test_utils_cpp.cpp) diff --git a/tests/test_crypto_aead2022_cpp.cpp b/tests/test_crypto_aead2022_cpp.cpp index f65e5a1a..99f30196 100644 --- a/tests/test_crypto_aead2022_cpp.cpp +++ b/tests/test_crypto_aead2022_cpp.cpp @@ -398,8 +398,9 @@ void test_methods() salt_pool(); SS_CHECK(!sc::find_aead2022("aes-256-gcm")); auto spec = sc::find_aead2022("2022-blake3-aes-256-gcm"); - SS_CHECK(!sc::Psk::from_base64(*spec, kPsk16)); // too short - SS_CHECK(!sc::Psk::from_base64(*spec, "not base64")); + SS_CHECK(spec.has_value()); + SS_CHECK(!sc::Psk::from_base64(spec.value(), kPsk16)); // too short + SS_CHECK(!sc::Psk::from_base64(spec.value(), "not base64")); } void test_no_heap_in_steady_state()