On 28/04/2011, at 10:00 AM, phil swenson wrote:
> I am writing a Gradle Plugin Test I'm writing (first plugin ever for me).
>
> one of the methods looks like (notice the hard-coded path):
>
> @Test
> public void testLoadExportTemplate() {
> //TODO make this relational to the project
> LocalizationPluginConvention pluginConvention =
> project.convention.plugins["config"]
> String command =
> plugin.buildBatchCommand("/Users/phil/dev/sag/bas_core/trunk/modules/plugins-localization/src/main/groovy/com/sag/bas/plugins/export.template",
> pluginConvention)
>
> String expectedBatchCommand = <A bunch of XML>
> String expectedXmlAsText = new
> XmlSlurper().parseText(expectedBatchCommand).text()
> String actualXmlAsText = new XmlSlurper().parseText(command).text()
> assert expectedXmlAsText == actualXmlAsText : "batch commands
> don't match"
> println "wows!"
> }
>
>
> My question is how do I get rid of the hard-coded path
> "/Users/phil/dev/sag/bas_core/trunk/modules/plugins-localization/src/main/groovy/com/sag/bas/plugins/export.template"?
> It is stored in my gradle src tree.... Note I want it to work from
> gradle AND from my IDE.
Gradle runs tests with the working directory set to the project directory. The
IDEs do a similar thing. In both instances the working directory is
configurable. So, you could use a relative path in your test.
Or, another option would be to add the template file as a resource and load it
using ClassLoader.getResource().
--
Adam Murdoch
Gradle Co-founder
http://www.gradle.org
VP of Engineering, Gradleware Inc. - Gradle Training, Support, Consulting
http://www.gradleware.com