読者です 読者をやめる 読者になる 読者になる

日々常々

ふつうのプログラマがあたりまえにしたいこと。

Gradleでテストしたらcommitする

Gradle Git

commit自体はgradle-gitプラグインで一瞬。

import org.ajoberstar.gradle.git.tasks.*
buildscript {
  repositories { mavenCentral() }
  dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
}

task commit(type: GitCommit) {
  message = "こみっとー"
}

と build.gradle に書いて gradle commit を叩けばコミットできます*1。やったね!

テストしたらコミットしたい

task commit(dependsOn: test, type: GitCommit) {
  message = "こみっとー"
}

これでおk。


……流石に芸が無い。コミットコメントにテスト結果の集計をねじ込もうと思う。ちょっと探してみたけど集計したのが見当たらなかったので自分でカウントするよ。。。。
build.gradle 全文はこんな感じ。

apply plugin: 'java'

repositories() {
  mavenCentral()
}

dependencies {
  testCompile 'junit:junit:4.11'
}

test {
  ext.msg = ''<<''
  ext.res = [testCount:0, successfulTestCount:0, failedTestCount:0, skippedTestCount:0]
  afterTest { d, r -> res.each { it.value += r."$it.key" } }
  ignoreFailures = true
  doLast {
    msg << "${res.testCount} tests completed"
    if (res.failedTestCount > 0) msg << ", ${res.failedTestCount} failed"
    if (res.skippedTestCount > 0) msg << ", ${res.skippedTestCount} skipped"
  }
}

import org.ajoberstar.gradle.git.tasks.*
buildscript {
  repositories { mavenCentral() }
  dependencies { classpath 'org.ajoberstar:gradle-git:0.2.3' }
}
task add(type: GitAdd)
task commit(dependsOn: [clean, test, add], type: GitCommit) {
  message = test.ext.msg
}

もっとスマートにできるはず(´・ω・`)

*1:gitのユーザー名とかはglobalから持ってかれた