Typesafetyの0.10.0をリリースし、下記の変更を加えました。
OASISからjbuilderへの移行
ビルドツールをOASISからjbuilderへ変更しました。
移行作業自体は1日で終わり、案外楽に行えました。
手順は下記の通りです。
- OASISの設定を残しつつ、各ライブラリのビルド設定を行う。
- openしているモジュール名をリネームする。
- jbuilderで全てのライブラリのビルド、実行ファイルがコンパイルできることを確認する。
- テストファイルもライブラリと同じく、jbuilderでコンパイル & 実行できるようにする。
- OASISで必要だったファイルを削除する。
- *.opamファイルを変更する。
移行後にテスト自体がこけるようになり、そこだけ時間がかかりました
テストコードはテスト用にレポートのフィクスチャを用意して、生成したレポート結果と比較するようなテストコードだったのですが、テストの実行ファイルが生成される場所が変わったため、フィクスチャファイルが読めなくなっていました。
テストの実行ファイルは_build/default/testsに生成され、フィクスチャファイルはtests/fixturesに置いていたので、相対パスで読めなくなったのが原因です。
解決方法としてはjbuildにフィクスチャファイルをコピーする設定を追加しました。
prognを追加して、ファイルをコピーする設定にしました。
パスは_build/default/testsからの相対パスで指定し、ディレクトリごと_build/default/testsにコピーします。
(alias ( (name runtest) (deps (test.exe)) (action ( progn (run cp -R ../../../examples .) (run cp -R ../../../tests/fixtures .) (run ${<}) )) ))
タイプチェックがパスした時も、レビューコメントを残せるように
今まではタイプエラーがある時のみ、結果をPRのコメントとして投稿していましたが、エラーがなくてもコメントを投稿するようにしました。
理由としては、タイプエラーがドッグフーディング中にほとんど発生しない為、正しく動いているのか判断できないことが多かったからです。
タイプエラーがない時にもコメントを残すことで、PR出した人もタイプエラーがないことをCIのログを見て確認する必要もないですし、正常に機能していることを確認することができます。
エラーがある時だけコメントを残したい場合は、--skip-passedを使用することで、スキップできます。
typesafety --review --skip-passed
移行後の感想
事前にjbuilderをある程度試していたので、思ったり簡単に移行することができました。
またタイプエラーがない時にも、コメントを残すようになったので、ほとんどマージなどもGitHubで完結できるようになったのは良かったです。
次は後もう少しでOCamlの4.06.0が出そうなので、そのチェックが必要です。