can't go to sleep

組み込み開発の多くをRubyで自動化することに興味があります

Unity全自動化(仕様)

以前、Unityを半自動化するという記事を書きました。
最近それを、更に改善する方法を考えたので、メモとして記載します(まだ作成していないので、あくまでメモです)。
半自動化の問題点は、変更したソースコードをいちいち自分で指定しないといけない点です。
しかし運用をしていると、Unityを実行したいファイルは

  1. ソースファイルを変更した場合
  2. テストケースを変更した場合

に限ることがわかってきました(常にグリーンを保つ開発をしているならば、それ以外のファイルは、テストが通るはずです)。
ということは、最近更新されたソースファイルとテストファイルを抽出し、以前作成したtestList.ymlに登録するスクリプトを作成し、rakeの最初に実施するようにすれば良いのです。
動作手順は以下の通りです。

  1. ファイルリストを作成する。このリストには、ソースファイルとテストファイルの全ての更新日付が記録されている。
  2. rake実施時に、上記ファイルリストと、ソースファイルとテストファイルの更新日付をそれぞれ比較し、最近更新されたファイルを抽出する。
  3. ファイルリストの更新タイミングは、gitなどのバージョン管理ツールでソースコードとテストファイルをコミットする時とする
  4. このようにすることで、gitでコミットするタイミングを元に、それ以降更新されたファイルは全てテストを実行するようになる
  5. gitの操作は、post-commitのフックを使えば良い

時間さえ取れれば、サクッと作成できる気がするので、作成したらサンプルコードを掲載しようと思います。


あと別の話題ですが、cmockの検索でこのブログに辿り着いて下さる方がいるようですが、cmockよりもfake function framework(fff)をおススメします。fffの問題点は、c99でないとコンパイルできないので、マイコンコンパイラがc99に対応していないと、実コンパイラでビルドができない点くらいだと思います。
cmockは、動きが重いし、ソースをフォルダ分けして管理している場合には、cmock自身にいくつか手を加える必要があり、結構面倒です。