2017-01-04 5 views
0

私のテストは遅いです。本当に遅い。コーヒーをもう一枚手に入れて、記事を読んでいるうちに、遅く仕上げるのを待っています。だから私はテストを終えたときに私に警告するためにbuild.sbtにこのタスクを追加しました。前のコマンドの結果に関係なく、sbtを別の連続したコマンドを実行するには?

lazy val alertMe = taskKey[Unit]("Alert me when testing is completed.") 

alertMe in Test := { 
    "say \"testing is completed\""! 
} 

私はOS Xでsayコマンドを使用していましたが、このような使い方をしました。

;test ;alertMe 

Voila!これはうまく動作します....成功したテストのためだけです。テストケースが失敗した場合、テストタスクは結果をエラーとして返し、alertMeは呼び出されません。

この動作はかなりわかりやすいです。しかし、私は自分の仕事が欲しい、私に警告し、テストタスクの結果に関係なく走りたい。これどうやってするの ?

lazy val alertMe = taskKey[Unit]("Alert me when testing is completed.") 

alertMe := { 
    Command.process("test", state.value) 
    "say \"testing is completed\""! 
} 

用法:たぶん、あなたは同様に、alertMeタスクにtestタスクを追加することができます

答えて

1

sbt alertme、それはtestタスクやシェルコマンドを実行します。

Command.processは、現在のタスクが失敗することなくtestタスクを実行します。コマンドは常に実行されます。

+1

Command.processはトリックです。しかし、通常、私はtestOnlyでparamsを使ってテストします。だから私は代わりにこれのようなInputTaskを作った。 '遅延ヴァルalertAfter = inputKey [単位( "アラート入力タスクが完了した。") alertAfter:= { ヴァル・引数:配列[文字列] = DefaultParsers.spaceDelimited( "")は Command.processを.parsed (args.mkString( "")、state.value) "\"テストが完了しました\ ""! } ' – CatFly

関連する問題