Как часть добавления пользовательских интерфейсов XCode к нашему потоку CI, я решил реализовать повторное выполнение неудачных тестов перед сбоем сборки из-за общей ненадежности тестовой среды.Как идентифицировать неудавшиеся тестовые примеры при сканировании Fastlane для повторной передачи?
Я могу избежать сбоя сборки сразу, используя блок rescue
, это не проблема, и расположение файлов отчетов (JUnit и HTML) исправлено, поэтому их можно открыть, например, File.readlines.
Формат файла отчета юнита - это каскад testuites -> testuite -> testcase -> сообщение об ошибке, если применимо, а затем назад достаточно далеко для следующего элемента. Кажется довольно стандартным.
Однако в этот момент я немного застрял (и это может быть не правильный путь, есть ли канонический лучший способ сделать это в первую очередь?). В bash я бы использовал grep -B, чтобы вытащить строку до сообщения об ошибке, которое было бы именем неудачного тестового примера, а затем захватить соответствующий фрагмент текста с помощью awk. Легкая команда двухтрубной оболочки, которую я могу затем вернуть обратно в scan/xcodebuild с помощью параметра -only-testing.
Есть ли способ сделать это с аналогичной легкостью в Ruby или junit-плагине, который позволит мне читать только имена отдельных неудачных тестовых случаев?