LoginSignup
9
8

More than 5 years have passed since last update.

Travis CIとxcprettyを併用すると正しくレポートされないときの対処

Posted at

xcpretty

コマンドラインからiOSのテストを実行すると長々とログが出るのでキレイに整形してくれるツール

$ gem install xcpretty
$ xcodebuild [flags] | xcpretty -c

Travis CI

CIのホスティングサービス。自分でjenkins管理するのは辛いけどきちんとテストしたい!といったときに使う。
githubのプルリクエストとかにそのブランチの最新のテスト結果を表示してくれる。

実行したいコマンドは.travis.ymlというyamlファイルをgitリポジトリのルートに配置する。
例えば上記のxcprettyを使ったコマンドの場合

script:
  - xcodebuild [flags] clean build test | xcpretty

上記のように記述します。

xcprettyとTravis CIを併用する

このTravis CIとxcprettyを併用すると、レポート結果がうまく出力されないことがあります。
具体的にはテスト自体はこけているのにtravisからはsuccessとしてレポートされてしまいます。

この点についてはこちらの記事
http://qiita.com/radioboo/items/bb3bba734a68f0c25c81

やxcprettyのgithub
https://github.com/supermarin/xcpretty#usage

などで言及されているようにPIPESTATUSを引き継いでexitすればよいとされています。

それでも直らない場合

上記の様に.travis.ymlを

script:
  - xcodebuild [flags] clean build test | xcpretty -c && exit ${PIPESTATUS[0]}

としてもテストが失敗する場合があります。
travisの中の人に問い合わせたところ、exitコマンドを直接使うのはTravisと相性がよくないようです。
それを回避するために一枚ラッパスクリプトをかますと良いとのアドバイスを頂きました。

そこで

run_test.sh
#!/bin/bash

xcodebuild [flags] clean build test | xcpretty -c && exit ${PIPESTATUS[0]}

のようなスクリプトを一段用意してやり、.travis.ymlには

travis.yml
  - bash ./run_test.sh

としてやれば、テストの実行結果とレポート結果が同じになります。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8