У C-SPY есть код ошибки возврата?
Я использую cspybat IAR EWARM для запуска некоторых модульных тестов для моего встроенного кода с использованием Unity. Я хотел бы, чтобы мой сервер сборки мог легко определить, пройдены ли модульные тесты или нет. Есть ли способ для CSPY вернуть ненулевой код ошибки, если мои модульные тесты не пройдены? Я попытался изменить возвращаемое значение в main() без изменений. Есть ли функция, которую я могу вызвать, чтобы вызвать ошибку?
Мой командный файл cspybat выглядит так:
"C:\Program Files (x86)\IAR Systems\Embedded Workbench 7.4\common\bin\cspybat" -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.general.xcl" --backend -f "C:\Work\Sandbox\ST\stmicroeval\_iar_ewarm_project\settings\Project.UnitTest.driver.xcl"
1 ответ
К сожалению нет.
Я решил это, заменив "выход" на функцию, которая печатает определенный шаблон, плюс код выхода. Затем я завернул звонок cspybat
в сценарий, который 1) обрезает вывод дополнительного вывода и 2) завершает работу с нужным кодом выхода.
Сейчас конец 2020 года, а механизма для этого пока нет.
Мы решили это, включив макро файл с содержимым:
execUserExit()
{
__message "program exited with __exit_value = ", __exit_value:%d ;
}
И наличие собственной переменной выхода в коде:
extern "C" int __exit_value=0xff;
Что мы установили до звонка
exit()
(хотя вы могли бы просто написать свою собственную версию
exit()
)
Это заставляет отладчик всегда печатать ЧТО-ТО, даже если программа дает сбой при запуске.
Затем парсим с помощью обертки python:
pattern = "__exit_value =\s([\-|0-9|a-f|A-F|x]*)"
retvalue = int(re.findall(pattern,process.stdout)[0])