You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Fix sanitizer, package consumer, and static analysis CI
- isolate allocator probes from ThreadSanitizer
- disable unit tests in the installed-package job
- export the C++20 requirement to downstream consumers
- resolve clang-tidy diagnostics without weakening checks
- document sanitizer coverage and package verification
| WP-12 | CUDA batch IK and collision checking | Planned |
26
26
27
-
77 tests, all passing, under GCC and Clang in Debug and Release, plus ASan,
28
-
UBSan and TSan.
27
+
77 tests, all passing under GCC and Clang in Debug and Release. ASan and UBSan
28
+
exercise the full suite. TSan exercises the 73 ordinary tests; the four
29
+
allocator-interposition tests run in a dedicated executable and are excluded
30
+
from TSan because both the tests and the sanitizer runtime replace the global
31
+
allocation functions.
29
32
30
33
---
31
34
@@ -40,7 +43,9 @@ cmake --build --preset debug
40
43
ctest --preset debug
41
44
```
42
45
43
-
Other presets: `release`, `asan`, `tsan`, `tidy`.
46
+
Other presets: `release`, `asan`, `tsan`, `tidy`. The `tsan` preset intentionally
47
+
runs 73 tests: the four tests that instrument global allocation are a test-harness
48
+
incompatibility with TSan, not an exemption for production code.
44
49
45
50
Before pushing, run the formatter -- CI enforces it:
46
51
@@ -162,11 +167,11 @@ test wrong.
162
167
|---|---|
163
168
| GCC + Clang × Debug + Release |`-Wconversion` and `-Wold-style-cast` fire on different constructs per compiler |
164
169
|`-Werror` with `-Wconversion -Wsign-conversion -Wold-style-cast -Wshadow`| Silent narrowing in a pose pipeline is a field failure, not a warning |
165
-
| ASan + UBSan, `-fno-sanitize-recover=all`| A UBSan finding fails the build rather than printing a note |
166
-
| TSan | Ahead of the threaded executor in WP-08 |
170
+
| ASan + UBSan on all 77 tests, `-fno-sanitize-recover=all`| A UBSan finding fails the build rather than printing a note |
171
+
| TSan on the 73 ordinary tests | Ahead of the threaded executor in WP-08; the four allocator-interposition tests are excluded because TSan defines the same global allocation hooks|
167
172
| clang-tidy, `--warnings-as-errors=*`| Rule set and exclusions justified in ADR-0002 |
168
-
|clang-format`--dry-run --Werror`| Formatting is not a review topic |
169
-
|**install + downstream consumer compile**|Caught a real bug on first run: the exported target was `motionkit::motionkit_core`while in-tree consumers used the `motionkit::core` alias. Every `find_package` downstream would have failed, and no unit test could have seen it|
173
+
|`scripts/format.sh --check` with clang-format 18 | Formatting is not a review topic, and CI runs the same check developers run|
174
+
|**install with repository tests off + downstream consumer compile and run**|Exercises only the installed package contract; it caught a real bug on first run when the exported target was `motionkit::motionkit_core`but consumers used `motionkit::core`|
170
175
171
176
---
172
177
@@ -176,6 +181,12 @@ Unit tests assert known values; the interesting ones assert **properties** over
176
181
thousands of uniformly sampled rotations from a fixed seed — a property test you
177
182
cannot replay is a flake, not a test.
178
183
184
+
Four allocation tests are instrumentation rather than ordinary unit tests. They
185
+
run in their own executable because their global `operator new`/`operator delete`
186
+
replacements affect an entire process. That target alone suppresses GNU's
187
+
`-Wmismatched-new-delete` diagnostic: the `malloc`/`free` pairing is deliberate
188
+
and is the mechanism being tested. The warning remains enabled everywhere else.
0 commit comments