XCTest: сбой запуска тестов с циклом внутри X; сборка может привести к ненадежным результатам в проекте с CocoaPods и Carthage

#xcode #cocoapods #xctest #carthage

#xcode #cocoapods #xctest #carthage

Вопрос:

После обновления моего проекта до Xcode 12 набор тестов перестал работать. Цель тестов не компилируется, завершается с ошибкой:

 Cycle inside <redacted>Tests; building could produce unreliable results. This usually can be resolved by moving the shell script phase '[CP] Embed Pods Frameworks' so that it runs before the build phase that depends on its outputs.
Cycle details:
→ Target '<redacted>Tests' has copy command from '/Applications/Xcode12.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/Library/PrivateFrameworks/XCTAutomationSupport.framework' to '<redacted>/Library/Developer/Xcode/DerivedData/<redacted>-bxjgdjscysiavpfrzmquaqdkncsl/Build/Products/Debug-iphonesimulator/<redacted>.app/Frameworks/XCTAutomationSupport.framework'
○ Target '<redacted>Tests': CodeSign <redacted>/Library/Developer/Xcode/DerivedData/<redacted>-bxjgdjscysiavpfrzmquaqdkncsl/Build/Products/Debug-iphonesimulator/<redacted>.app/PlugIns/<redacted>Tests.xctest/Frameworks/CryptoSwift.framework
○ That command depends on command in Target '<redacted>Tests': script phase “[CP] Embed Pods Frameworks”
  

Сценарий является последней фазой сборки в цели, поэтому я немного потерялся. Есть какие-либо подсказки? Спасибо.

Ответ №1:

Я нашел решение своей проблемы. Ошибка упоминается CodeSign и связана с Frameworks/CryptoSwift.framework (этот фреймворк связан с использованием Carthage), поэтому я предположил, что это не имеет ничего общего с CocoaPods, а с тем, как фреймворки Carthage включены в тестовый пакет.

Просто удалите «Знак кода при копировании» с этапа сборки Carthage.

Этапы сборки тестового пакета Carthage