TravisCI+Xcode8でUnitTestが謎にコケまくるので直した

Sunday, February 19, 2017

ちょっと前に、自分のOSSのバージョンアップの為にせっせと作業していたのですが、
Travisさんが何度やってもUnitTest開始 直前 にコケまくっていたので直しました。

Error Domain=IDETestOperationsObserverErrorDomain Code=3 "The operation couldn’t be completed.
(DTXProxyChannel error 1.) If you believe this error represents a bug,
please attach the log file at ...(略)

(実際の失敗ログはこちら)

という謎のエラーを吐いていて直す方法がわからなかったのですが、下記参考(TravisCIのissue)のコメントを見たら解決策があったので試してみました。

before_install:
  - export IOS_SIMULATOR_UDID=$(instruments -s devices | grep "$ios_device ($ios_version)" | sed -E 's/.*\[([0-9A-F-]+)\].*/\1/g')
  - echo "Prelaunching iOS simulator $IOS_SIMULATOR_UDID"
  - open -a "simulator" --args -CurrentDeviceUDID $IOS_SIMULATOR_UDID

どうやら、before_install のphaseで、 instruments の実行デバイス一覧の中から $ios_device$ios_version に合致するシミュレーターのUUIDを取得して、先にSimulatorを起動させているようです。
これを書いてからUnitTestが謎にコケることがなくなりました。めでたしめでたし。

参考

techCIUnitTestTravis

改めて、SwiftのDateの比較について

asyncAfterをキャンセルする