On 11/07/10 12:41 AM, David Rosell wrote:
Since the Scala plugin doesn't recognize ScalaTest unit test's I call
the Ant task "org.scalatest.tools.ScalaTestAntTask"
However, I'm kind of groovy illiterate and do the gradle scripting
copy past style and need some hints how to copy better :)
This is what I came up with:
task scalatest << {
ant.taskdef(
name: 'scalatest',
classname: 'org.scalatest.tools.ScalaTestAntTask',
classpath: configurations.compile.asPath + ':' +
compileScala.destinationDir
)
ant.scalatest(
runpath: 'build/classes/test',
haltonfailure: 'true',
fork: 'false'
)
}
1: I'm not happy about the runpath value, is there a better way to
refere to the compiled tests?
sourceSets.test.classesDir
2: Then there are tags inside the scalatest ant declaration (ie.
reporter), how do I set these?
There's a chapter in the user guide about using Ant. Have a look at
http://gradle.org/0.9-preview-3/docs/userguide/ant.html
Basically, you use nested method calls to add nested elements:
ant.scalatest(...) {
reporter(type: 'stdout')
}
<target name="test" depends="">
<taskdef
name="scalatest" classname="org.scalatest.tools.ScalaTestAntTask">
<classpath refid="scalatest.classpath"/>
</taskdef>
<*scalatest* runpath="${test.classes} "
haltonfailure="true" fork="false">
*<reporter type="stdout" />*
</scalatest>
3: I would like to snap my scalatest task into the test phase, how is
this done?
You can simply replace the test task:
task test(overwrite: true, dependsOn: classes) << {
ant.taskdef(...)
ant.scalatest(...)
}
4: The scala build are a little slow, ~10sek can be a very long time
when you do TDD, any tips on how to make it run faster?
I made some changes recently which should speed up multiproject scala
builds. These changes will end up in the next release of Gradle. They
won't make any difference to a single project build. We have also made a
bunch of startup time improvements which may make a difference for your
build.
Other than that, you could try using fsc rather than scalac. There are
some settings on the ScalaCompileOptions class for enabling this.
There is currently a big startup cost when you are using Gradle to build
Groovy or Scala projects. We plan to solve this at some point in a
general purpose way, that can work for any type of project.
Last, I'd like to suggest adding something like this scalatest task to
the Scala Plugin section in the documentation, it is nice to have
working examples how to extend gradle's capabilities in context, and
now that the "run a program" is fixed so that you doesn't need ant for
that, this could be another...
I think I'd rather add ScalaTest support to the test task. I've added an
issue for this: http://jira.codehaus.org/browse/GRADLE-1032
--
Adam Murdoch
Gradle Developer
http://www.gradle.org
CTO, Gradle Inc. - Gradle Training, Support, Consulting
http://www.gradle.biz