Я только что реализовал этап тестирования CUnit в моем конвейере GitlabCI.
Этап сборки компилирует файл test.c.
Этап тестирования запускает исполняемый файл.
Локально, все тесты пройдены.
В gitlab runner тесты проходят, только если есть printf()
перед первым CU_ASSERT
. Если я поставлю printf и зафиксирую, все 15 подтверждений пройдут. Если я удаляю printf
и фиксирую, первый ASSERT не выполняется (а затем задание прерывается).
Вот код:
void assert_parse(char *body, struct field *expected, int16_t nfields)
{
printf("This is really just a printf");
struct field result[nfields];
int16_t parsed = parse(body, result, nfields);
CU_ASSERT_FATAL(parsed == nfields);
for (int16_t i = 0; i < nfields; i++) {
CU_ASSERT_STRING_EQUAL_FATAL(result[i].key, expected[i].key);
CU_ASSERT_STRING_EQUAL_FATAL(result[i].value,
expected[i].value);
}
}
С printf
в начале все в порядке.
Если я удаляю printf
, ASSERT в строке 6 завершается ошибкой