Начало

Я решил покрыть свой C-код юнит-тестами, хотя бы минимально. Выбрал Cmocka.

В atom для запуска программ я использую atom-script. Он примитивен, на C-файлы запускает gcc и выполняет результат сборки. Передача параметров gcc через atom-script не работает. А для сборки тестов необходима явная линковка с cmocka, т.е. нужно передать gcc параметр -lcmocka.

Можно прописать таргет в Makefile, есть плагин make-runner-panel, но он неудобен.

А хочется поведение почти как у nosetests, что же делать?

Суперкостыль

Пишем run_tests.sh

#!/bin/bash

mkdir -p /tmp/tests/
for test in tests/*.c; do
        bin=/tmp/${test%.c}
        rm -f $bin
        gcc $test -lcmocka -o $bin
        echo $bin
        $bin
done

После этого жахаем cmd + shift + i, прописываем в поле command: ./run_tests.sh, выполняем chmod a+x run_tests.sh

Получается следующее:

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

Минусы cmocka

Каждый тест требует:

#include <stdarg.h>
#include <stddef.h>
#include <setjmp.h>
#include <cmocka.h>

без setjmp cmocka работать не хочет вообще ни в какую.