LINUX.ORG.RU

История изменений

Исправление Tark, (текущая версия) :

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

Ну да, если у тебя рядом с main оно всё лежит, то не заработает. А если не рядом с main то какая разница что еще рядом лежит, оно же линкером даже не подтянется в исполняемый файл.

Как тогда будет выглядеть исходники тестов? Для каждого теста свой отдельный файл с исходным кодом и отдельным Makefile? Или городить один огромный файл тестов и цеплять к нему все что нужно тестировать? Ну ладно это простой пример.

Огромный файл тестов, который через инклюды подключает отдельные тесты.

А если посложней типа обработчика прерываний? Вызываем его, а он из регистров должен читать данные и флаги? Городить отдельный заголовок для вызова как обычную функцию. А команды чтения из регистров ifdef-ами заменять на вызовы моков?

От кода не зависит поступит прерывание или нет, так что смысл городить оггород? Сделай вообще мок файл обработчика прерываний который под каждый отдельный случай делает будто есть какое-то прерывание. Я вообще больше по вебу и data science, так что в embedded почти нуль, но у вас определенно должны быть фреймворки для этого, 21 век уже.
П.С.
Не делай ifdef, код не должен знать, что его тестируют.

Исходная версия Tark, :

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

Ну да, если у тебя рядом с main оно всё лежит, то не заработает. А если не рядом с main то какая разница что еще рядом лежит, оно же линкером даже не подтянется в исполняемый файл.

Как тогда будет выглядеть исходники тестов? Для каждого теста свой отдельный файл с исходным кодом и отдельным Makefile? Или городить один огромный файл тестов и цеплять к нему все что нужно тестировать? Ну ладно это простой пример.

Огромный файл тестов, который через инклюды подключает отдельные тесты.

А если посложней типа обработчика прерываний? Вызываем его, а он из регистров должен читать данные и флаги? Городить отдельный заголовок для вызова как обычную функцию. А команды чтения из регистров ifdef-ами заменять на вызовы моков?

От кода не зависит поступит прерывание или нет, так что смысл городить оггород? Сделай вообще мок файл обработчика прерываний который под каждый отдельный случай делает будто есть какое-то прерывание. Я вообще больше по вебу и data science, так что в embedded почти нуль, но у вас определенно должны быть фреймворки для этого, 21 век уже.