Посоветуйте годную библиотеку для unit-тестирования plain C проекта.
Требования:
- Описываю набор функций напичканных различными assert, после сборки тестов получаю бинарник, который прогонит все тесты и расскажет какие упали (очень желательно, если прямо выведет пары ожидаемых значений и реально полученных значений), при этом не останавливаясь на первом упавшем тесте (было бы круто каждый тест запускать в отдельном процессе, чтобы даже сегфолт попал в отчёт тестирования, желательно со стектрейсом, если проект собран с отладочными символами).
- Поддержка CMake (чтобы просто подключить проект через add_subdirectory или вообще инклюд скрипта). Либо библиотека должна не иметь стадию конфигурирования и подключаться простым прописываанием include и добавлением нескольких исходных файлов в проект.
- Кроссплатформенность - то есть как минимум Linux и Windows.
- Не нужно ничего ставить в систему, всё должно собираться вместе со сборкой основного проекта
- Ещё бонусом было бы переопределить malloc (через weak/strong символы, ld preload, глобальный макрос, да хоть как) и, соответственно, после окончания теста проверять, что вся память освобождена. Но такое, наверное, вряд ли где-то реализовано. Разве что весь тестовый бинарник запускать под valgrind, но это вариант только для Linux, зато отловит и более сложные ошибки работы с памятью.
Да, на базовом уровне это пишется за 15 минут путём описания пары макросов (определения теста и сам ASSERT), но хочется всяких плюшек (та же обработка сегфолтов), а если в них углубляться, то уже далеко не на 15 минут выйдет.