google で「asciidoctor gradle plugin」で検索して表示される結果が古すぎて使い物にならなかったので、書いておくことにした。古いものベースで gradle を書いていたところ、DSL でわからないところがあったため、 github でコードを探したが見つからず混乱の原因になった。バージョン 1.5.8
とか 1.5.9
などについて書いてあるものは古い。最新は 3.1.0
である。
続きを読む
date
コマンドを使うときにいつもググって調べるくらいの unix 音痴で、 Java の JSR310 ならすぐできるのにと思うことが多いので、そのようなコマンドを作ることにしました。
機能はまだ作り込んでいなくて、まずはフォーマットを指定できるだけです。
対応 OS は Linux と Mac OS X です。 Windows でも Windows SDK 7.1 の環境を整えればビルドできます(参考は こちら)が、 github actions で環境を整えるのが難しそうだったので、github ではリリースしていません。
なお、Mac OS X 版はサインしてない野良アプリなので、初回の起動は「Mac 野良アプリ 起動」でググったら出てくる Apple の未署名のアプリの起動方法みたいなページを参考に起動してください。
本題に戻ると、公式の actions を使いこなせばそれほど難しいところはありませんでした。
github actions のワークフロー概略は次の図のとおりです。
ポイントとしては、
create-release
は最初の Job で実行するcreate-release
をしたときの結果である release_id
(未使用) と release_url
を artifact として upload するrelease_url
をダウンロードしてビルドしたバイナリーを upload-release
でリリースするです。
Golang のように、一つの OS ですべてのバイナリーをビルドできないので若干手が込んでいます。
また、 GrallVM のセットアップには DeLaGuardo/setup-graalvm@2.0
を使っています。これは比較的高速にセットアップされるのでこれと Gradle graalvm-native-image プラグインを使うと native-imageを作るときにに GraalVM をダウンロードする仕組みよりも高速にビルドできます。
表題の通り、テストフレームワークをリリースしました。
名前は ktcheck です。
JUnit Platform 上で動かせますが、普通のメインプログラムの中でも使えます。
gradle の場合、次の記述を dependencies
ブロックに記述します。
dependencies {
testImplementation("run.ktcheck:ktcheck:v0.1.0")
}
object
を作って、 KtCheck
インターフェースを実装させて、 Given.When.Then
で生成されるオブジェクトに移譲します。
object IntPlusTest: KtCheck by Given("Int の値 1 に", { 1 }) .When("Int の値 3 を足すと", { int -> int + 3 }) .Then("4 になる", {_, result -> result shouldBe 4})
条件を Given
に記述し、操作を When
に記述して、 Then
にアサーションを記述するのを強制するようなフレームワークになっています。
あとはテストの実行ですが、 IntelliJ では ktcheck のテストを検出できませんので、 gradle のテストタスクを起動します
テストが実行されて、結果も表示されます。他の gwh スタイルのテストフレームワークよりも明確にテストの名前が表示されるので落ちたテストについてどのようなテストであるかがわかりやすくなっています(kotest のいやなところをこちらは解決した)。
もう少し、凝った使い方もできますが、とりあえず省略です。
レポジトリーはこちらです
あと、ロゴを作ってくれる人いたら紹介してください。