Существует ли единая система тестирования GNU?

Для большинства языков существует несколько фреймов unit test, но я не встречал unit test для GNU make. Он имеет conditionals, цикл (оператор $(foreach...)) и позволяет писать довольно сложный код. Примеры могут быть такими, как порты BSD, GARNOME и OpenCSW GAR.

Там также отладчик для GNU make. Тем не менее, я никогда не сталкивался с инфраструктурой unit test. Существует ли что-то подобное?

Ответ 1

Единичные тесты обычно предполагают, что язык имеет какой-то механизм модуляции, который GNU действительно не имеет. Какими были бы "единицы", которые вы тестировали? Индивидуальные цели? Как бы вы настроили входы/выходы каждого теста?

Кроме того, поскольку make файлы выполняются во время сборки, можно утверждать, что make файлы "проверяют себя", оставляя мало места для явных "наборов тестов makefile", чтобы делать что-то хорошее.

Ответ 2

Я также видел бы сборку как тест интеграции.

Обычно проблемы со сборкой появляются раньше, особенно если у вас есть непрерывная интеграция. В нашем случае у нас есть все возможные пути сборки, которые регулярно запускаются на наших ci-серверах (программное обеспечение постоянно строится и развертывается).

Насколько я помню, возникла ли проблема с build- script ci, мы сразу же обнаружили сбой, например, потому что tar-ball не мог быть создан, или приложение не могло быть запущено из-за отсутствия артефактов.

По причинам выше, я думаю, что попытка модульного тестирования самих файлов сборки требует слишком больших усилий, которые могут быть потрачены лучше на настройку или расширение непрерывной интеграции.

Ответ 3

Make файлы для Perl, PHP, Python, GHC и GCC (среди проектов с открытым исходным кодом, которые я мог придумать с головы до головы и лежавших на моей машине), у всех есть "тестовые" цели, которые, я думаю, интересное чтение.