printf () до того, как CU_ASSERT сделает это, ни один printf не сделает его неудачным. GItlabCI трубопровод - PullRequest
0 голосов
/ 07 ноября 2018

Я только что реализовал этап тестирования 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 завершается ошибкой

...