QuickでCIの時だけ特定のテストをスキップする
CI実行時のみなど, コマンドラインからの実行時のみ特定のテストを実行したい・実行したくない場合に使える方法を紹介します.
Defineの動的設定
コマンドラインからのテスト実行時, 以下のようなコマンドを実行することで, 環境変数を渡すことができます.
これを使用し, 環境変数が定義されているかそうでないかを判定に用います.
Swiftの場合はOTHER_SWIFT_FLAGS
で以下のように設定することで, 異なる値をDefineすることができます.
- 環境変数未定義時:
__X___
- 環境変数設定時:
__X_FROM_XCODEBUILD__
OTHER_SWIFT_FLAGS = "$(inherited) -D __X_$(FROM_XCODEBUILD)__";
Objective-Cの場合は, GCC_PREPROCESSOR_DEFINITIONS
に以下のような設定をすることで, 異なる値をDefineすることができます.
GCC_PREPROCESSOR_DEFINITIONS = (
"__X_$(FROM_XCODEBUILD)__=$(FROM_XCODEBUILD)",
"$(inherited)",
);
Quickで特定のテストをスキップする
上記の方法で判定ができるようになるので, Quickを使用する場合は以下のようにflags
を設定することで, FROM_XCODEBUILD=FROM_XCODEBUILD
の場合のみテストが実行されるようになります.
2022.04.25 追記
Quick v5.0.0でflagsが使用できなくなった為, if文なりでラップする必用があります.
参考文献
この記事のコードは以下で確認することができます.
記事が気に入ったらチップを送ることができます!
You can give me a cup of coffee :)
Kyash ID: soranoba
Amazon: Wish List
GitHub Sponsor: github.com/sponsors/soranoba
PayPal.Me: paypal.me/soranoba
(Updated: )