New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
tests1.exe の依存ライブラリに gmock.lib を追加する #1798
Conversation
✅ Build sakura 1.0.4032 completed (commit 4216b92298 by @k-kagari) |
gtest_main.libとgmock_main.libは排他関係にあるはずです。 int main(int argc, char* argv[]) {
return ライブラリ初期化関数(argc, argv);
} 上記の仕様的な部分からして、これらのライブラリは「独自に定義されたmain関数」とも競合します。 あとはこの辺を読んで分かった気になる感じだと思います。 |
❌ Build sakura 1.0.4034 failed (commit 09a35f5409 by @k-kagari) |
* gmock.lib をリンクする指定を追加した。 * 不要だった gtest_main.lib のリンクをやめた。
7664cb8
to
3f8715c
Compare
調べてみたところ gtest_main.lib すらも不要なのかもしれません。code-main.cpp で明示的に InitGoogleTest を呼んでいるため。 |
✅ Build sakura 1.0.4036 completed (commit 45a09bf473 by @k-kagari) |
ファイル名に よってリンクするのは ※最新のGoogleTestのドキュメント:https://google.github.io/googletest/primer.html#writing-the-main-function |
Kudos, SonarCloud Quality Gate passed! |
CI が通ったのでドラフト外します。本 PR の変更点は以下の通りです。
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
CIがまだ終わっていませんが、LGTMです。
GoogleMockのソースを見たところ、InitGoogleMockの中のこのあたりでInitGoogleTestが呼ばれているので大丈夫だと思いました。 |
✅ Build sakura 1.0.4037 completed (commit 4893f484b2 by @k-kagari) |
// Since Google Mock depends on Google Test, InitGoogleMock() is
// also responsible for initializing Google Test. Therefore there's
// no need for calling testing::InitGoogleTest() separately.
testing::InitGoogleMock(&argc, argv); gmock_main.cc のコメントで no need だと明言されているので問題にならないと判断しました。もし納得しない人がいたとしてもこのコメントを盾にして説得します。😎 |
レビューありがとうございました。マージしてみて問題があれば適宜修正するか revert して対処します。 |
❌ Build sakura 1.0.4038 failed (commit d87641c744 by @k-kagari) |
ここが少し不安でしたが、ソースで確認できたなら安心です。 あとは CClipboard で使ってるクリップボード関数をモック化けるしてテスト書くぞ~!ですが、これまでやったことのない種類の変更なので、どうすすめるか考えないとあかん気がします。。。 |
PR の目的
test1.exe で Google Mock を使用できるようにします。
カテゴリ
PR の背景
#1707 (CClipboard のテスト) の検討中、実行するとクリップボードを書き換えてしまうテストは不便であるとの指摘がありました。対策として OS のクリップボード関数を模擬するモックの導入を検討しています。
現在のサクラエディタのビルドシステムでは Google Test と同時に Google Mock のビルドを行っているため、成果物である gmock.lib
と gmock_main.libをリンクするように指定するだけで使えるようになる…ということではないかと思っていますが、個人的に経験の薄い分野ですので正しい方策が判断できません。紆余曲折 (#894, #899) もあったように見受けられますし、詳しい方の見解を伺いたいと考えています。「このやり方だとあれが動きません」といったご指摘をお待ちしています。
PR のメリット
PR のデメリット