PageRenderTime 58ms CodeModel.GetById 28ms RepoModel.GetById 1ms app.codeStats 0ms

/testcases/build.xml

https://bitbucket.org/atlassian/grails-clover-plugin
XML | 255 lines | 180 code | 27 blank | 48 comment | 0 complexity | 4d6960e8f816d22c8daec788812eb49e MD5 | raw file
Possible License(s): Apache-2.0, LGPL-2.1
  1. <project basedir=".">
  2. <!-- ========================================================================================= -->
  3. <!-- Script runs functional tests on few sample projects from <grails>/testcases directory. -->
  4. <!-- You must build and install locally a Clover-for-Grails plugin before running these tests. -->
  5. <!-- You must run ant build for this file with a <grails>/testcases as current directory. -->
  6. <!-- See https://extranet.atlassian.com/display/CLOVER/Clover-for-Grails+Release+Procedure -->
  7. <!-- "Build and Test" chapter. Output reports have to be verified manually. -->
  8. <!-- ========================================================================================= -->
  9. <!-- Enter a Clover-for-Grails version being tested. It will be downloaded from ~/.m2 cache -->
  10. <property name="grails.clover.version" value="4.1.2"/>
  11. <!-- Enter a Clover Core version being used by Clover-for-Grails. It must be the same number
  12. as defined in <grails>/grails-app/conf/BuildConfig.groovy clover.core.version -->
  13. <property name="clover.core.version" value="4.1.2"/>
  14. <!-- Location of the license to be used for testing -->
  15. <property name="clover.license.file" location="${user.home}/clover.license"/>
  16. <!-- Uncomment to have report launched in a web browser
  17. <property name="grails.clover.view" value="-clover.view"/> -->
  18. <property name="grails.clover.view" value=""/>
  19. <property name="maven.repository.home" value="${user.home}/.m2/repository"/>
  20. <!-- Directory containing grails-x.x.x.zip files -->
  21. <property name="grails.dist.dir" value="${user.home}/.grails-dist"/>
  22. <!-- ========================================================================================= -->
  23. <!-- Import extra Ant tasks -->
  24. <taskdef resource="net/sf/antcontrib/antlib.xml" classpath="ant-contrib-1.0b3.jar"/>
  25. <!-- Location where we have Grails binaries archives to unpack -->
  26. <property name="grails.plugin.file" location="${maven.repository.home}/org/grails/plugins/clover/${grails.clover.version}/clover-${grails.clover.version}.zip"/>
  27. <property name="clover.core.file" location="${maven.repository.home}/com/atlassian/clover/clover/${clover.core.version}/clover-${clover.core.version}.jar"/>
  28. <property environment="env"/>
  29. <target name="init">
  30. <!-- Check if complied version of grails is installed locally in Maven cache -->
  31. <fail message="The Clover-for-Grails plugin version ${grails.clover.version} was not found in ${grails.plugin.file}. Please compile and install locally plugin first!">
  32. <condition>
  33. <not>
  34. <available file="${grails.plugin.file}"/>
  35. </not>
  36. </condition>
  37. </fail>
  38. <!-- Check if we're running Java 6 or higher (required by Grails 2.x) -->
  39. <fail message="The Clover-for-Grails functional test requires Java6 or higher to run. Please set your JAVA_HOME / PATH accordingly.">
  40. <condition>
  41. <not>
  42. <available classname="java.util.Deque"/>
  43. </not>
  44. </condition>
  45. </fail>
  46. <echoproperties />
  47. </target>
  48. <!-- Clean up single test case project. Requires:
  49. project.name - name of the project to be tested - located in ./<project.name> directory
  50. -->
  51. <target name="_clean-testcase">
  52. <delete dir="${basedir}/${project.name}/target"/>
  53. </target>
  54. <!-- Run single test case project. Requires:
  55. grails.version - version of Grails framework, it's a part of ../../dist/grails-<ver>.zip filename
  56. grails.clover.version - version of Clover for Grails plugin, it's a part of ../../grails-clover-<ver>.zip filename
  57. project.name - name of the project to be tested - located in ./<project.name> directory
  58. expected.coverage - Coverage box value - from dashboard in html report
  59. expected.testresults - Test Results box value - from dashboard in html report
  60. -->
  61. <target name="_test-testcase">
  62. <echo message=""/>
  63. <echo message="============================================================================"/>
  64. <echo message="= TESTING PROJECT ${project.name}"/>
  65. <echo message="============================================================================"/>
  66. <echo message=""/>
  67. <property name="grails.temp.dir" value="${java.io.tmpdir}/grails-${grails.version}"/>
  68. <property name="m2.temp.dir" value="${grails.temp.dir}/.m2/repository"/>
  69. <property name="ivy2.temp.dir" value="${grails.temp.dir}/.ivy2"/>
  70. <property name="cache.temp.dir" value="${grails.temp.dir}/.grails"/>
  71. <!-- Unzip grails framework from archive to temp dir -->
  72. <echo message="Extracting grails distribution archive ..."/>
  73. <delete dir="${grails.temp.dir}"/>
  74. <unzip src="${grails.dist.dir}/grails-${grails.version}.zip" dest="${java.io.tmpdir}"/>
  75. <!-- Copy grails plugin from $HOME/.m2 repo to our temporary .m2 repo -->
  76. <copy file="${grails.plugin.file}" todir="${m2.temp.dir}/org/grails/plugins/clover/${grails.clover.version}" overwrite="true"/>
  77. <!-- Copy clover core jar from $HOME/.m2 repo to our temporary .m2 repo -->
  78. <copy file="${clover.core.file}" todir="${m2.temp.dir}/com/atlassian/clover/clover/${clover.core.version}" overwrite="true"/>
  79. <!-- Copy license file from $HOME to temporary home -->
  80. <copy file="${clover.license.file}" tofile="${grails.temp.dir}/clover.license"/>
  81. <!-- Copy default groovy settings to temporary .grails dir -->
  82. <mkdir dir="${cache.temp.dir}"/>
  83. <copy file="settings.groovy" todir="${cache.temp.dir}"/>
  84. <!-- Remove trash from previous build -->
  85. <delete dir="${basedir}/${project.name}/target"/>
  86. <delete dir="${basedir}/${project.name}/plugins"/>
  87. <!-- Extra switches for grails 2.x -->
  88. <condition property="grails2.args" value="-plain-output" else="">
  89. <matches pattern="^2.*$" string="${grails.version}"/>
  90. </condition>
  91. <!-- Project compilation and tests -->
  92. <echo message="Executing grails on sample project ..."/>
  93. <if>
  94. <os family="windows"/>
  95. <then>
  96. <!-- On Windows we call 'cmd /c grails.bat ...' shell -->
  97. <echo message="Executing:
  98. set GRAILS_HOME=${grails.temp.dir}
  99. cd ${basedir}/${project.name}
  100. cmd /c ${grails.temp.dir}/bin/grails.bat -Dgrails.project.compile.verbose=true -Dgrails.project.work.dir=${cache.temp.dir} -Divy.default.ivy.user.dir=${ivy2.temp.dir} -Duser.home=${grails.temp.dir} test-app -clover.on ${grails.clover.view}"/>
  101. <exec executable="cmd" dir="${basedir}/${project.name}" failonerror="false">
  102. <arg value="/c"/>
  103. <arg value="${grails.temp.dir}/bin/grails.bat"/>
  104. <arg value="-Dgrails.project.compile.verbose=true"/>
  105. <arg value="-Dgrails.project.work.dir=${cache.temp.dir}"/> <!-- Grails' project cache -->
  106. <arg value="-Divy.default.ivy.user.dir=${ivy2.temp.dir}"/> <!-- Grails' .ivy2 local repo cache -->
  107. <arg value="-Duser.home=${grails.temp.dir}"/> <!-- HOME for .m2 repo location-->
  108. <arg value="-Duser.language=en"/> <!-- setting language/country to have stable number format in tests -->
  109. <arg value="-Duser.country=US"/>
  110. <arg value="test-app"/>
  111. <arg value="${test.pattern}"/>
  112. <arg value="-clover.on"/>
  113. <arg value="${grails.clover.view}"/>
  114. <arg value="${grails2.args}"/>
  115. <env key="GRAILS_HOME" path="${grails.temp.dir}"/>
  116. <env key="JAVA_OPTS" value="-XX:MaxPermSize=256M -Xms128M -Xmx256M"/>
  117. </exec>
  118. </then>
  119. <else>
  120. <!-- On Linux/MacOS we call 'grails' command directly -->
  121. <exec executable="${grails.temp.dir}/bin/grails" dir="${basedir}/${project.name}" failonerror="false">
  122. <arg value="-Dgrails.project.compile.verbose=true"/>
  123. <arg value="-Dgrails.project.work.dir=${cache.temp.dir}/"/> <!-- Grails' project cache -->
  124. <arg value="-Divy.default.ivy.user.dir=${ivy2.temp.dir}"/> <!-- Grails' .ivy2 local repo cache -->
  125. <arg value="-Duser.home=${grails.temp.dir}"/> <!-- HOME for .m2 repo location-->
  126. <arg value="-Duser.language=en"/> <!-- setting language/country to have stable number format in tests -->
  127. <arg value="-Duser.country=US"/>
  128. <arg value="test-app"/>
  129. <arg value="${test.pattern}"/>
  130. <arg value="-clover.on"/>
  131. <arg value="${grails.clover.view}"/>
  132. <arg value="${grails2.args}"/>
  133. <env key="GRAILS_HOME" path="${grails.temp.dir}"/>
  134. <env key="JAVA_OPTS" value="-XX:MaxPermSize=256M -Xms128M -Xmx256M"/>
  135. </exec>
  136. </else>
  137. </if>
  138. <echo message="Verifying code coverage and test results ..."/>
  139. <property name="dashboard.html" location="${basedir}/${project.name}/target/clover/report/dashboard.html"/>
  140. <condition property="coverage-ok">
  141. <resourcecontains resource="${dashboard.html}" substring="${expected.coverage}"/>
  142. </condition>
  143. <fail message="Code coverage is not as expected [${expected.coverage}]" unless="coverage-ok"/>
  144. <condition property="tests-ok">
  145. <resourcecontains resource="${dashboard.html}" substring="${expected.testresults}"/>
  146. </condition>
  147. <fail message="Test results are not as expected [${expected.testresults}]" unless="tests-ok"/>
  148. <echo message="Code coverage and test results are OK"/>
  149. <delete dir="${grails.temp.dir}"/>
  150. </target>
  151. <!-- For compatibility with global.* targets -->
  152. <target name="build"/>
  153. <target name="repkg"/>
  154. <target name="checkstyle"/>
  155. <target name="clean">
  156. <antcall target="_clean-testcase">
  157. <param name="project.name" value="petclinic"/>
  158. </antcall>
  159. <antcall target="_clean-testcase">
  160. <param name="project.name" value="weceem"/>
  161. </antcall>
  162. <antcall target="_clean-testcase">
  163. <param name="project.name" value="daily-groove"/>
  164. </antcall>
  165. <antcall target="_clean-testcase">
  166. <param name="project.name" value="grails-website"/>
  167. </antcall>
  168. </target>
  169. <target name="test" depends="init">
  170. <!-- Grails 2.x -->
  171. <antcall target="_test-testcase">
  172. <param name="grails.version" value="2.0.0"/>
  173. <param name="project.name" value="petclinic-grails20x"/>
  174. <param name="test.pattern" value=""/>
  175. <param name="expected.coverage" value="18 classes, 106 / 204 elements"/>
  176. <param name="expected.testresults" value="9 / 9&lt;/span&gt; tests"/>
  177. </antcall>
  178. <antcall target="_test-testcase">
  179. <param name="grails.version" value="2.0.4"/>
  180. <param name="project.name" value="petclinic-grails20x"/>
  181. <param name="test.pattern" value=""/>
  182. <param name="expected.coverage" value="18 classes, 106 / 204 elements"/>
  183. <param name="expected.testresults" value="9 / 9&lt;/span&gt; tests"/>
  184. </antcall>
  185. <antcall target="_test-testcase">
  186. <param name="grails.version" value="2.1.5"/>
  187. <param name="project.name" value="petclinic-grails21x"/>
  188. <param name="test.pattern" value=""/>
  189. <param name="expected.coverage" value="12 classes, 48 / 112 elements"/>
  190. <param name="expected.testresults" value="7 / 9&lt;/span&gt; tests"/>
  191. </antcall>
  192. <antcall target="_test-testcase">
  193. <param name="grails.version" value="2.2.5"/>
  194. <param name="project.name" value="petclinic-grails22x"/>
  195. <param name="test.pattern" value=""/>
  196. <param name="expected.coverage" value="12 classes, 48 / 112 elements"/>
  197. <param name="expected.testresults" value="7 / 9&lt;/span&gt; tests"/>
  198. </antcall>
  199. <antcall target="_test-testcase">
  200. <param name="grails.version" value="2.3.11"/>
  201. <param name="project.name" value="petclinic-grails23x"/>
  202. <param name="test.pattern" value="org.grails.samples.**"/>
  203. <param name="expected.coverage" value="12 classes, 43 / 112 elements"/>
  204. <param name="expected.testresults" value="6 / 8&lt;/span&gt; tests"/>
  205. </antcall>
  206. <antcall target="_test-testcase">
  207. <param name="grails.version" value="2.4.5"/>
  208. <param name="project.name" value="petclinic-grails24x"/>
  209. <param name="test.pattern" value="org.grails.samples.**"/>
  210. <param name="expected.coverage" value="12 classes, 43 / 112 elements"/>
  211. <param name="expected.testresults" value="6 / 8&lt;/span&gt; tests"/>
  212. </antcall>
  213. <antcall target="_test-testcase">
  214. <param name="grails.version" value="2.5.1"/>
  215. <param name="project.name" value="helloworld-grails25x"/>
  216. <param name="test.pattern" value="org.grails.samples.**"/>
  217. <param name="expected.coverage" value="12 classes, 43 / 112 elements"/>
  218. <param name="expected.testresults" value="6 / 8&lt;/span&gt; tests"/>
  219. </antcall>
  220. <!--<antcall target="_test-testcase">-->
  221. <!--<param name="grails.version" value="3.0.1"/>-->
  222. <!--<param name="project.name" value="helloworld-grails30x"/>-->
  223. <!--<param name="test.pattern" value="org.grails.samples.**"/>-->
  224. <!--<param name="expected.coverage" value="12 classes, 43 / 112 elements"/>-->
  225. <!--<param name="expected.testresults" value="6 / 8&lt;/span&gt; tests"/>-->
  226. <!--</antcall>-->
  227. </target>
  228. </project>