Skip to content
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

[WIP] vs2017ソリューションにテストを組み込みたい #796

Conversation

berryzplus
Copy link
Contributor

@berryzplus berryzplus commented Mar 8, 2019

closes #793; vs2017ソリューションにテストを組み込みたい

vs2017ソリューションにテストプロジェクトを組み込みます。

変更内容の詳細については、各コミットのコミットメッセージを参照してください。


テストを実行してソースコードを修正した場合に、tests1.exeをリビルドしないと内容が反映されないビミョーな状態になっていたので、リンク処理を記述する場所を変えました。ついででクリーン周りに手が入っていて「ん?」と思う人も多いかと思いますが、この辺はややこしいのでなるべくスルーがいいです。(必要なら別issueでお願いします。)

一番新しく追加されたテストファイルを含めるのを忘れていたので、追加コミットを積みました。


#856 を経て、サクラエディタ本体の中間ファイルを取り込む方法がスマートになりました。

MsBuildのタスクは「タスク名」のアイテムノードで処理対象を指定できるので、
Link タスクの対象にサクラエディタ本体のobjを指定しています。
#856 で入れようとしていたクリーン時タスクの枠組みは別件とします。

GoogleTestのNugetパッケージのバージョンは、バージョン更新の方法を示す目的もかねて最新版としています。


googletestの更新は、このPRでは見送りにします。 #796 (comment)

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

PR の説明欄に説明が欲しいです。

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

テストが実施された数が凄く減っています。
10件ほどになってます。

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

PR のタイトルに closes #793; と入っていて
多分自動的に入力されるもののまんまだと思いますが
適宜修正してほしいです

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

↑ 自動入力じゃないかも。コミットメッセージにそんなコメントなさそう。

@k-takata
Copy link
Member

k-takata commented Mar 8, 2019

PR に closes #nnn などと書いておけば、そのPRをマージすると同時に Issue #nnn が自動クローズされて便利ですが、タイトルよりは本文に書いておいた方がいい気もします。

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

↑ PR に書いてもいいんですか?
てっきりコミットログ限定と思ってました。

それなら言われる通り、タイトルではなく本文に書いて欲しいです。

@berryzplus
Copy link
Contributor Author

テストが実施された数が凄く減っています。
10件ほどになってます。

#792(メールアドレス判定対応をrevertして暫定対処を入れる)をマージした結果です。

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

MinGW には StdControl.Wnd_GetText のテストがあるのに VC にはないのはなぜですか?

@berryzplus
Copy link
Contributor Author

MinGW には StdControl.Wnd_GetText のテストがあるのに VC にはないのはなぜですか?

すんません。入れ間違った、というか、作り始めた時点で存在してなかったので抜けていました。

@berryzplus berryzplus changed the title closes #793; vs2017ソリューションにテストを組み込みたい vs2017ソリューションにテストを組み込みたい Mar 8, 2019
@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

  1. unittest.md を更新してほしいです。
  2. tests\unittests\CMakeLists.txttests\unittests\tests1.vcxproj に含めているのは編集しやすいようにですか? (最新の Visual studio だと色付けされて表示されるので見やすいですね)
  3. tests1.vcxproj を作成した手順およびGoogleTest をプロジェクトに追加した手順をドキュメント化していただけますか?
  4. _SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING に関してもドキュメントに追加しておいてほしいです。
  5. sakura.vcxproj に対する ProjectReference って GUI で設定しました? 手動修正?
    (試しに参照のところで、参照の追加 を選ぶと Visual Studio で予期しないエラーが発生しました と出ます。)

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

  1. 1dca88f の修正って手動で編集しました?
    GUI ベースで編集しました? Visual studio の GUI で確認できますか?

@m-tmatma
Copy link
Member

m-tmatma commented Mar 8, 2019

ついででクリーン周りに手が入っていて「ん?」と思う人も多いかと思いますが、この辺はややこしいのでなるべくスルーがいいです。(必要なら別issueでお願いします。)

スルーはできませんでした。:smile:

@berryzplus
Copy link
Contributor Author

ついででクリーン周りに手が入っていて「ん?」と思う人も多いかと思いますが、この辺はややこしいのでなるべくスルーがいいです。(必要なら別issueでお願いします。)

スルーはできませんでした。😄

どのあたりを説明したらいいか分からんかったので、大前提部分「MsBuildのプロジェクトファイルは手で編集してもいい」を説明したブログのリンクを貼ってみます。
https://kyabatalian.hatenablog.com/entry/2019/01/06/170759

@berryzplus
Copy link
Contributor Author

1.unittest.md を更新してほしいです。

あとで更新のコミットを積んどきます。

MinGW側のgoogletest取得をpacman利用に変えたいです。
pacmanはmsys2のパッケージ管理機構で、NuGet同様ビルド済みライブラリを取得できる仕組みです。

2.tests\unittests\CMakeLists.txt を tests\unittests\tests1.vcxproj に含めているのは編集しやすいようにですか? (最新の Visual studio だと色付けされて表示されるので見やすいですね)

編集しやすいように・・・yesです。
現状、編集した結果を確認できるようにはなっていませんが。

3.tests1.vcxproj を作成した手順およびGoogleTest をプロジェクトに追加した手順をドキュメント化していただけますか?

手順はコミットコメントに書いています。
11e415e

4._SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING に関してもドキュメントに追加しておいてほしいです。

googletest本体から削られるまでは定義が必要です。
そういう名前空間があることを知っている世代もあんまりいないので、ドキュメント化は不要と思います。

5.sakura.vcxproj に対する ProjectReference って GUI で設定しました? 手動修正?
(試しに参照のところで、参照の追加 を選ぶと Visual Studio で予期しないエラーが発生しました と出ます。)

3.のコメント通りにやるとウィザードで「テスト対象を選べ」と訊かれます。
ProjectReferenceの必須パラメータはパスとProjectGuidだけなので、普通に手作業でも設定できます。

visual studioの「予期しないエラー」については、vs2019とかでVC++がPackageReferenceに対応したら直るかも知れません。(直らないかも知れません。
(なんか、PropertyGroupで定義した変数が読めてないっぽい変なメッセージが出たゾ・・・

この挙動は認識していて「基本的に手作業でメンテする」とコミットコメントに書いてます。
3651bee

6.1dca88f の修正って手動で編集しました?
GUI ベースで編集しました? Visual studio の GUI で確認できますか?

当然、手動です。visual studioのGUIでは確認できません。

公式のマニュアル(日本誤訳)を参考に手書きしました。
https://docs.microsoft.com/ja-jp/visualstudio/msbuild/msbuild-reference?view=vs-2017

MsBuildプロジェクトファイルに書かれたターゲット定義を表示できるGUIプラグインがあるかどうかは知らんです。

@m-tmatma
Copy link
Member

m-tmatma commented Mar 9, 2019

MinGW側のgoogletest取得をpacman利用に変えたいです。
pacmanはmsys2のパッケージ管理機構で、NuGet同様ビルド済みライブラリを取得できる仕組みです。

#799 に登録しました。

@@ -7,6 +7,10 @@ if "%platform%" == "MinGW" (
set BUILD_EDITOR_BAT=build-gnu.bat
) else (
set BUILD_EDITOR_BAT=build-sln.bat

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tests/create-project.bat や tests/build-project.bat などは変更せずに
appveyor.yml 側で VC 構成だと tests\build-and-test.bat を呼ばないなどの
対応をしたほうがいいと思います。

ここで条件分岐するのは見通しが悪いと思います。
また VC の cmake のコードをテストしにくくなります。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

tests/create-project.bat や tests/build-project.bat などは変更せずに
appveyor.yml 側で VC 構成だと tests\build-and-test.bat を呼ばないなどの
対応をしたほうがいいと思います。

ここで条件分岐するのは見通しが悪いと思います。

これは指摘(=修正依頼)ですか?それとも感想ですか?

修正依頼だとすると、現時点では難しいと思っているので対応を見送りたいです。
感想なら同意で、今後見直していく必要があると思っています。

これを1行にまとめてbuild.batを作りたい・・・

sakura/appveyor.yml

Lines 20 to 24 in a722f9c

build_script:
- cmd: |
checkEncoding.bat
build-all.bat %PLATFORM% %CONFIGURATION%
tests\build-and-test.bat %PLATFORM% %CONFIGURATION%

また VC の cmake のコードをテストしにくくなります。

VC向けCMakeのコードは、ローカルビルド用のNinja Generatorにしたいと思っています。
sln + vcxproj構成とのダブルメンテになりますが、細かいところはしょうがないっす。
何を言ってるかというと、VC向けCMakeのコードはたぶんバッチ向けにはしない、ってことです。
(というか、MinGW向けCMakeコードをMSVCのIDEからビルド&テストできます。バッチなしで。)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

何が難しいですか?
今回修正した部分を取り消して、
appeyor.yml からのよびだしをかえたらいいだけのように思いますが。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

何が難しいですか?
今回修正した部分を取り消して、
appeyor.yml からのよびだしをかえたらいいだけのように思いますが。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

何が難しいですか?

まず、appveyor.ymlに条件分岐を書く必要があります。
appveyor.ymlのcmd文法はやや特殊なので、書いたものが動く保証はありません。
それをこれから実験して詰めるのが難しいです。

必要な対処だと思いますが、いまやるべきじゃない、と言ってます。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

まず、appveyor.ymlに条件分岐を書く必要があります。

ローカルで VC に対する cmake によるテストをこれまで通り使用できる
状態にしておくことが目的です。

appveyor.yml に直接書くのが難しければ、
tests\build-and-test.bat をラップする バッチファイルを作って
appveyor.yml から呼ぶのでもいいし、
バッチファイルが増えるのが嫌ならtests\build-and-test.bat の中で
分岐してもいいと思います。

方法は一つではないです。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

何を懸念してるのか分かってきました。

tests/create-project.bat や tests/build-project.bat

このPRではVC向けのgoogletestビルド機能を無効化しているわけですが、それだとマズくね?ってことですよね?確かにマズいかも知んないです。

バッチファイルが増えるのが嫌ならtests\build-and-test.bat の中で
分岐してもいいと思います。

増えるの嫌です(笑)・・・なので、この方針で修正コミット積みます。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

まず、appveyor.ymlに条件分岐を書く必要があります。

ローカルで VC に対する cmake によるテストをこれまで通り使用できる
状態にしておくことが目的です。

appveyor.yml に直接書くのが難しければ、
tests\build-and-test.bat をラップする バッチファイルを作って
appveyor.yml から呼ぶのでもいいし、

新しいバッチファイル追加して対応してはいかがですか?
それなら、既存のファイルを触らなくていいので簡単だと思います。

必要なら後でリファクタリングすればいいと思います。

@berryzplus
Copy link
Contributor Author

と、とらびす!(いつの間に!乙です!

当然ビルドは通らんわけですな。たぶんMinGW向けクロスコンパイル環境を用意してそれ用のtravis.yml的なものを用意しないといけない気がしています。

unittest.md Outdated
プロジェクトフォルダに packages.config を置いておくと、ソリューションフォルダに packages というフォルダが掘られてパッケージがダウンロードされる仕組みです。たまにsolutionを開いてすぐにダウンロードされないことがありますが、そういう時は「ソリューションエクスプローラー」でソリューションを右クリックし、「NuGetパッケージの復元」をします。エクスプローラーでソリューションフォルダを見て見るとpackagesフォルダが掘られているはずです。

packages.config を使う方法は、VC++形式のプロジェクトだとバッチ実行ができません。
サクラエディタはCI環境(appveyor)を利用しているので、バッチ実行でビルドできる方法が必要でした。長いので端折りますが、興味のある方は [PR 796](https://github.com/sakura-editor/sakura/pull/796/commits)のコミットメッセージを見てください。
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

コミットメッセージを見てというのは不親切だし
情報の変更や追加があるときに、めんどくさいので更新されない可能性が極めて高いです。

もし、コミットメッセージに書いてあるのなら、転記すればいいだけだし、もし転記するだけで足りないのなら、それはきちんとまとまっていないと言うことなので、整理してまとめて欲しいです。

@berryzplus berryzplus force-pushed the feature/add_test_project_for_msvc branch from d74cb29 to 257c9e7 Compare March 13, 2019 15:11
@berryzplus
Copy link
Contributor Author

ごちゃごちゃしてきたのでコミットを整理してforce pushしました。

@berryzplus
Copy link
Contributor Author

ひさびさに容量枯渇が発生するとか…

https://ci.appveyor.com/project/berryzplus/sakura/builds/23045473

@m-tmatma
Copy link
Member

ローカルでビルドすると以下のエラーになりました。
何か足りないですか?

E:\gitwork\...\sakura-PR>build-sln Win32 Debug
find-tools.bat
|- CMD_GIT=C:\Program Files\Git\cmd\git.exe
|- CMD_7Z=C:\Program Files\7-Zip\7z.exe
|- CMD_HHC=C:\Program Files (x86)\HTML Help Workshop\hhc.exe
|- CMD_ISCC=C:\Program Files (x86)\Inno Setup 5\ISCC.exe
|- CMD_CPPCHECK=
|- CMD_DOXYGEN=
|- CMD_MSBUILD=C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe
"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild.exe" sakura.sln /restore /p:Platform=Win32;Configuration=Debug /t:Build  /flp:logfile=msbuild-Win32-Debug.log
.NET Framework 向け Microsoft (R) Build Engine バージョン 15.9.21+g9802d43bc3
Copyright (C) Microsoft Corporation.All rights reserved.

このソリューション内のプロジェクトを 1 度に 1 つずつビルドします。並行ビルドを有効にするには、"/m" スイッチを追加してく ださい。
2019/03/16 7:05:47 にビルドを開始しました。
ノード 1 上のプロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット)。
ValidateSolutionConfiguration:
  ソリューション構成 "Debug|Win32" をビルドしています。
プロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (1) は、ノード 1 上に "E:\gitwork\...sak
ura-PR\sakura\sakura.vcxproj" (2) をビルドしています (Restore ターゲット)。
E:\gitwork\...\sakura-PR\sakura\sakura.vcxproj : error MSB4057: ターゲット "Restore" はプロジェクト 内に存在しません。
プロジェクト "E:\gitwork\...\sakura-PR\sakura\sakura.vcxproj" (Restore ターゲット) のビルドが終了し ました -- 失敗。

プロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (1) は、ノード 1 上に "E:\gitwork\...sak
ura-PR\HeaderMake\HeaderMake.vcxproj" (3) をビルドしています (Restore ターゲット)。
E:\gitwork\...\sakura-PR\HeaderMake\HeaderMake.vcxproj : error MSB4057: ターゲット "Restore" はプロ ジェクト内に存在
しません。
プロジェクト "E:\gitwork\...\sakura-PR\HeaderMake\HeaderMake.vcxproj" (Restore ターゲット) のビルド が終了しました -- 失敗。

プロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (1) は、ノード 1 上に "E:\gitwork\...sak
ura-PR\MakefileMake\MakefileMake.vcxproj" (4) をビルドしています (Restore ターゲット)。
E:\gitwork\...\sakura-PR\MakefileMake\MakefileMake.vcxproj : error MSB4057: ターゲット "Restore" は プロジェクト
内に存在しません。
プロジェクト "E:\gitwork\...\sakura-PR\MakefileMake\MakefileMake.vcxproj" (Restore ターゲット) のビ ルドが終了しました --
失敗。

プロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (1) は、ノード 1 上に "E:\gitwork\...sak
ura-PR\tests\unittests\tests1.vcxproj" (5) をビルドしています (Restore ターゲット)。
E:\gitwork\...\sakura-PR\tests\unittests\tests1.vcxproj : error MSB4057: ターゲット "Restore" はプロジェクト内に存
在しません。
プロジェクト "E:\gitwork\...\sakura-PR\tests\unittests\tests1.vcxproj" (Restore ターゲット) のビルドが終了しました -- 失敗。

プロジェクト "E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット) のビルドが終了しました -- 失敗。


ビルドに失敗しました。

"E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット) (1) ->
"E:\gitwork\...\sakura-PR\sakura\sakura.vcxproj" (Restore ターゲット) (2) ->
  E:\gitwork\...\sakura-PR\sakura\sakura.vcxproj : error MSB4057: ターゲット "Restore" はプロジェク ト内に存在しません。


"E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット) (1) ->
"E:\gitwork\...\sakura-PR\HeaderMake\HeaderMake.vcxproj" (Restore ターゲット) (3) ->
  E:\gitwork\...\sakura-PR\HeaderMake\HeaderMake.vcxproj : error MSB4057: ターゲット "Restore" はプ ロジェクト内に
存在しません。


"E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット) (1) ->
"E:\gitwork\...\sakura-PR\MakefileMake\MakefileMake.vcxproj" (Restore ターゲット) (4) ->
  E:\gitwork\...\sakura-PR\MakefileMake\MakefileMake.vcxproj : error MSB4057: ターゲット "Restore"  はプロジェ
クト内に存在しません。


"E:\gitwork\...\sakura-PR\sakura.sln" (Restore ターゲット) (1) ->
"E:\gitwork\...\sakura-PR\tests\unittests\tests1.vcxproj" (Restore ターゲット) (5) ->
  E:\gitwork\...\sakura-PR\tests\unittests\tests1.vcxproj : error MSB4057: ターゲット "Restore" はプロジェクト内
に存在しません。

    0 個の警告
    4 エラー

経過時間 00:00:00.31
ERROR in msbuild.exe errorlevel 1

@m-tmatma
Copy link
Member

あと、msbuild でがんばって対応いただいたのにあれなんですが、
nuget.exe を使ったほうがシンプルになりますか?
もしそうなら nuget.exe をリポジトリに追加しちゃっても
対応するのでもいい気がします。
(再配布可能かは確認が必要ですが)

msbuild.exe を使ったほうが簡単かと思ったんですが、
逆に複雑になるのなら nuget.exe による方法でもいいかな
と思っています。

@berryzplus
Copy link
Contributor Author

error MSB4057: ターゲット "Restore" はプロジェクト内
に存在しません。

これはデフォルトで入らないんですね...orz

visual studio installer で indivisual components タブ の nuget targets and build tasks にチェックを入れてください。インストールオプションなので、どっかのmdを更新する必要がある気がします。

@berryzplus
Copy link
Contributor Author

msbuild.exe を使ったほうが簡単かと思ったんですが、
逆に複雑になるのなら nuget.exe による方法でもいいかな
と思っています。

当然、コマンドライン版nugetを同梱するのが一番簡単な方法です。
nuget.exeのexeサイズが5MBもあるので、個人的には同梱は避けたいですが。

一応、この件よりも sakura-editor/management-forum#52 (comment) の話のほうが優先度高いと思っとります。

@berryzplus
Copy link
Contributor Author

ちなみに nuget.exe の再配布ライセンスに関しては、どこにも明記されてない気がしています。
公式サイトでは、nugetパッケージのライセンスについてだけ説明されてる感じです。
「どうやったら適切な再配布と言えるか?」は一度考えてみましたが、取得元を明記することと公式サイトの利用規約的なページへのリンクを貼ることくらいしか対策はなさそうでした。

必要なインストールオプションを追加する0件はそのうちコミット積むので、取り込み方式はこのままいきたい感じです。(ああ、だからアッチが優先っすw

@berryzplus
Copy link
Contributor Author

これは build-project.bat の仕事ではありませんか? また、create-project.bat に build-sln.bat を呼び出すパスがあります。

つぎはぎではなく PR 後の視点から再構成するのがいいと思います。

う~む。

https://github.com/sakura-editor/sakura/blob/master/unittest.md#%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E9%96%A2%E9%80%A3%E3%81%AE%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB

役割は build-project.bat に担わせるのが良さそうですね。

@berryzplus
Copy link
Contributor Author

折衷案を作ってみました。

これでダメならバッチには手を加えない方針でいくしかないかなぁ。

@ds14050
Copy link
Contributor

ds14050 commented Apr 21, 2019

これと折衷できてますか?> #796 (comment)

@berryzplus
Copy link
Contributor Author

これと折衷できてますか?> #796 (comment)

うーむ。詰んでますね。
azule pipeline が入ったことで、CIビルドはだいぶ速くなったと思いますので、
バッチの変更は全面的に取り消してslnのみの対応で進めることにします。

NuGet復元で失敗したとき、そこでビルドが止まるように変更。
リンクのメタ記述が解釈されずにそのまま表示されていた。
原因は、リンク先URIに空白が含まれること。
リンク先URIをURIエンコードして対処。
先の修正ではブラウザでリンクに飛べないそうなので再修正。
空白をハイフンで置換すれば飛べるらしい。
なお、VS Codeプラグイン[Markdown All in One]のプレビューでは%20でも飛べる。
表示確認はブラウザで行うようにしたほうが良いですね・・・。
@berryzplus
Copy link
Contributor Author

バッチの変更は全面的に取り消してslnのみの対応で進めることにします。

build-sln.batの変更は外せないんだった...orz

@berryzplus
Copy link
Contributor Author

テストのビルドバッチに加えた変更を全面的にrevertしました。

このPRの目的はソリューションにテストプロジェクトを組み込むことです。

組み込むだけでもバッチビルド(build-sln.bat)に影響がでるのでバッチの対応を行ってきましたが、バッチからのテスト環境を再構築する意図は元々ありませんでした。

「テストプロジェクトをソリューションに組み込みたい」を是とするか非とするか、それだけを判断してもらいたいのでノイズになりそうな変更は外します。

@ds14050
Copy link
Contributor

ds14050 commented Apr 21, 2019

方針の回帰には賛成です。build-sln.bat に手を入れる目的に疑問です。

ビルドバッチでNuGetパッケージを復元する

NuGetパッケージ復元を組み込んでバッチビルドが通るようにする。
ビルド時のPATHにnugetがなければ、リポジトリに取り込んだnugetを使うようにする。
この段階でappveyorでのビルドは通るようになる。

これまでの build-sln.bat の目的は「エディタをビルドすること」でした。それがこの PR によるソリューションの変更によって「エディタとテストをビルドすること」に変化しました。

20190421.19 sakura-editor.sakura によると、Build solution と Unit test の両方でテストプログラムを作成しています。

やり方としては、msbuild に引数を追加して従来の目的を維持する(=エディタだけをビルドする)ことも考えられます。それでも AppVeyor のビルドは維持されます。Visual Studio でテストプロジェクトをビルドすること(berryzplus さんの目的)もやはり可能なのではありませんか?

build-sln.bat を修正する berryzplus さんの目的は何ですか?

@berryzplus
Copy link
Contributor Author

build-sln.bat を修正する berryzplus さんの目的は何ですか?

テストプロジェクトで必要なNuGetパッケージを復元させるためです。
変更しないとビルドが通らない認識です。

build-sln.batはもともとエディタ以外のものもビルドしています。

build-sln.batでビルド対象プロジェクトを指定するやり方は可能なので、必要なら別途PR出せばよいと思います。

要望によりbuild-project.batを変更できないので、ビルド構成には関与しない方針です。

@ds14050
Copy link
Contributor

ds14050 commented Apr 21, 2019

build-sln.bat を修正する berryzplus さんの目的は何ですか?

テストプロジェクトで必要なNuGetパッケージを復元させるためです。
変更しないとビルドが通らない認識です。

テストプログラムをビルドしないように build-sln.bat で msbuild に引数を追加しても、「変更しないとビルドが通らない」ままですか?

テストに関して暫定的にでも二重メンテナンス(ソリューションと CMakeLists.txt によるテストプログラム作成)を選択したのだから、バッチビルドをこの PR の方に対応させる必然性はなくなりました。「バッチは cmake」で問題ありません。

build-sln.batはもともとエディタ以外のものもビルドしています。

しかしテストプログラムは含まれませんでした。それを維持するということです。

@ds14050
Copy link
Contributor

ds14050 commented Apr 21, 2019

build-sln.batでビルド対象プロジェクトを指定するやり方は可能なので、必要なら別途PR出せばよいと思います。

他人事ですね。

berryzplus さんが「20190421.19 sakura-editor.sakura によると、Build solution と Unit test の両方でテストプログラムを作成しています。」をどう考えるかということです。ソリューションへテストプロジェクトを追加したことによる build-sln.bat の処理コスト増加を他人にどう正当化するのかということです。

@berryzplus
Copy link
Contributor Author

他人事ですね。

サクラエディタを構成する技術分野は多岐に渡ります。全部を一人でやるのは大変なので、ある程度分担していきたいです。他人事なんじゃなくて、ぼくはメインでやりませんと言ってるだけです。バッチ分野はサポートに回りますんで好きにしてという話。

build-sln.batでテストをビルドさせない対応は後でコミット積んでおきます。

@ds14050
Copy link
Contributor

ds14050 commented Apr 22, 2019

build-sln.batでテストをビルドさせない対応は後でコミット積んでおきます。

お願いします。求めているのはこれだけです。これはソリューションへテストプロジェクトを追加するこの PR の副作用で、誰が望んでいるのかわからないものでした。

@@ -19,6 +19,27 @@ if "%configuration%" == "Release" (
call :showhelp %0
exit /b 1
)

@rem find a NuGet CLI.
if not defined CMD_NUGET (
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この環境変数は他の変数と同様に find-tools.bat で定義するのが
いいと思います。

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

まだ帰れんのですが、ソリューションに入ったテストプロジェクトをバッチからビルドする機能はスコープ外になりますので、この部分の記述も消える予定です。

大きなとこではNuGet.exeとドキュメント修正も消える予定です。

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

それだとこの PR の価値が大幅に失われると思います。

@m-tmatma
Copy link
Member

build-sln.batでテストをビルドさせない対応は後でコミット積んでおきます。

build-sln.bat でテストをビルドせずに cmake を使うのであれば
ビルド時間は短縮されませんし、ci で nuget 版の単体テストが実施
されないことになります。

@berryzplus berryzplus changed the title vs2017ソリューションにテストを組み込みたい [WIP] vs2017ソリューションにテストを組み込みたい Apr 23, 2019
@berryzplus
Copy link
Contributor Author

作業時間がとれないので本件はしばらく凍結します。

このPRの変更は、vsソリューションにテストプロジェクトを組み込むことです。

テストのビルドに関連するタスクは他にもたくさんあります。

  • ソリューションをCMake化して MakefileMake のメンテをやめたい
  • GoogleTest のビルドをやめてビルド時間を短縮したい
  • WIndows開発向けのパッケージシステム NuGet を活用したい
  • msys2向けパッケージシステム pacman を活用したい (msys2 ≒ MinGW64です。)
  • MSVCのリリース向けビルドはvsソリューションを使うと決めたのに、いつの間にかCMakeでビルドしたexeでテストして良しとしてしまっている。(テスト導入当時はvsのみでgoogletestする方法がなかったからですが、よく考えたら「問題あり」です。)
  • ローカルビルド向け環境として CMake(ninja) を使えるようにしたい

今回、当初の目的から外れ色々なものを混ぜてしまっていました。

このPRが提案することはとても小さいですが、
他のたくさんの課題を解決するための大事な一歩になると思っています。

GWになれば戻ってこれると思います。

@ds14050
Copy link
Contributor

ds14050 commented Apr 24, 2019

順番にやるのでいいと思います。明確な方針やゴールを定めないまま、目的を説明できない(※これをキメラと表現しました)バッチファイルとその群れを書き散らすのは悪夢です。

@berryzplus
Copy link
Contributor Author

#999 を作成したので閉じます。

@berryzplus berryzplus closed this Aug 17, 2019
@berryzplus berryzplus deleted the feature/add_test_project_for_msvc branch August 17, 2019 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

vs2017ソリューションにテストを組み込みたい
5 participants