日々常々

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

Gradleでテストしたらcommitする

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から持ってかれた