原因は gcov のバージョンが古いことのようで、Travis でデフォルトで使える gcov は version 4.6.3 なのですが、
以下のログからも分かるように、同じファイルでも相対パスの経路が違うと別ファイルとして認識されるようです。
File '../include/internal/../internal/../iutest_env.hpp' Lines executed:85.59% of 111 ../include/internal/../internal/../iutest_env.hpp:creating 'iutest_env.hpp.gcov'
File '../include/gtest/../internal/../internal/../iutest_env.hpp' Lines executed:63.54% of 96 ../include/gtest/../internal/../internal/../iutest_env.hpp:creating 'iutest_env.hpp.gcov'
そして、出力する .gcov ファイル名は同じなため上書き保存されてしまっていました。
※ Coveralls で表示されるパーセンテージと異なる場合がありますが、それは cpp-coveralls が positive failure に対応しているためです。(これに気づかず Coveralls や cpp-coveralls 側を疑ってしまい時間がかかってしまった…)
-p オプションや -l オプション使えば上書きされることはないですが、後でマージする必要があります。
マージツールもあるようですが、今回はストレートに新しいバージョンの gcov を使うことで対応しました。
.travis.yml に以下を追加。
install: # gcc 4.8 - sudo add-apt-repository --yes ppa:ubuntu-toolchain-r/test - sudo apt-get -qq update - if [ "${CXX}" = 'g++' ]; then sudo apt-get -qq install g++-4.8; fi - if [ "${CXX}" = 'g++' ]; then sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 90; fi - if [ "${CXX}" = 'g++' ]; then sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 90; fi - if [ "${CXX}" = 'g++' ]; then sudo update-alternatives --install /usr/bin/gcov gcov /usr/bin/gcov-4.8 90; fi
この修正とテスト追加により、iutest のカバレッジが 91% にまでなりました。
そして、カバレッジ上げようとテストを見なおしていたらバグを結構潰せました。
いや~やっといてよかった~
※ 執筆時点でのカバレッジ結果なので将来的にパーセンテージが変化することがあります。
最新の情報は github へ > https://github.com/srz-zumix/iutest
0 件のコメント:
コメントを投稿