Advertisement
Guest User

Untitled

a guest
Jun 21st, 2018
57
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.68 KB | None | 0 0
  1. apply plugin: 'jacoco'
  2.  
  3. buildscript {
  4. repositories {
  5. jcenter()
  6. }
  7. dependencies {
  8. classpath 'com.android.tools.build:gradle:2.0.0-beta6'
  9. classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
  10. }
  11. }
  12.  
  13. allprojects {
  14. repositories {
  15. jcenter()
  16. maven { url "https://oss.sonatype.org/content/repositories/snapshots" }
  17. }
  18. }
  19.  
  20. task clean(type: Delete) {
  21. delete rootProject.buildDir
  22. }
  23.  
  24. subprojects { prj ->
  25. apply plugin: 'jacoco'
  26.  
  27. jacoco {
  28. toolVersion '0.7.6.201602180812'
  29. }
  30.  
  31. task jacocoReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
  32. group = 'Reporting'
  33. description = 'Generate Jacoco coverage reports after running tests.'
  34.  
  35. reports {
  36. xml {
  37. enabled = true
  38. destination "${prj.buildDir}/reports/jacoco/jacoco.xml"
  39. }
  40. html {
  41. enabled = true
  42. destination "${prj.buildDir}/reports/jacoco"
  43. }
  44. }
  45.  
  46. classDirectories = fileTree(
  47. dir: 'build/intermediates/classes/debug',
  48. excludes: [
  49. '**/R*.class',
  50. '**/BuildConfig*',
  51. '**/*$$*'
  52. ]
  53. )
  54.  
  55. sourceDirectories = files('src/main/java')
  56. executionData = files('build/jacoco/testDebugUnitTest.exec')
  57.  
  58. doFirst {
  59. files('build/intermediates/classes/debug').getFiles().each { file ->
  60. if (file.name.contains('$$')) {
  61. file.renameTo(file.path.replace('$$', '$'))
  62. }
  63. }
  64. }
  65. }
  66. }
  67.  
  68. jacoco {
  69. toolVersion '0.7.6.201602180812'
  70. }
  71.  
  72. task jacocoFullReport(type: JacocoReport, group: 'Coverage reports') {
  73. group = 'Reporting'
  74. description = 'Generates an aggregate report from all subprojects'
  75.  
  76. //noinspection GrUnresolvedAccess
  77. dependsOn(subprojects.jacocoReport)
  78.  
  79. additionalSourceDirs = project.files(subprojects.jacocoReport.sourceDirectories)
  80. sourceDirectories = project.files(subprojects.jacocoReport.sourceDirectories)
  81. classDirectories = project.files(subprojects.jacocoReport.classDirectories)
  82. executionData = project.files(subprojects.jacocoReport.executionData)
  83.  
  84. reports {
  85. xml {
  86. enabled = true
  87. destination "${buildDir}/reports/jacoco/full/jacoco.xml"
  88. }
  89. html {
  90. enabled = true
  91. destination "${buildDir}/reports/jacoco/full"
  92. }
  93. }
  94.  
  95. doFirst {
  96. //noinspection GroovyAssignabilityCheck
  97. executionData = files(executionData.findAll { it.exists() })
  98. }
  99. }
  100.  
  101. buildscript {
  102. dependencies {
  103. classpath 'org.jacoco:org.jacoco.core:0.7.6.201602180812'
  104. }
  105. }
  106.  
  107. task wrapper( type: Wrapper ) {
  108. gradleVersion = '2.13'
  109. }
  110.  
  111. apply plugin: 'jacoco'
  112.  
  113. android {
  114. testOptions {
  115. unitTests.all {
  116. jacoco {
  117. includeNoLocationClasses = true
  118. }
  119. }
  120. }
  121. }
  122.  
  123. apply plugin: 'jacoco'
  124.  
  125. jacoco {
  126. toolVersion = "0.7.6.201602180812"
  127. }
  128.  
  129. android {
  130. testOptions {
  131. unitTests.all {
  132. jacoco {
  133. includeNoLocationClasses = true
  134. }
  135. }
  136. }
  137. }
  138.  
  139. project.afterEvaluate {
  140. // Grab all build types and product flavors
  141. def buildTypes = android.buildTypes.collect { type -> type.name }
  142. def productFlavors = android.productFlavors.collect { flavor -> flavor.name }
  143. println(buildTypes)
  144. println(productFlavors)
  145. // When no product flavors defined, use empty
  146. if (!productFlavors) productFlavors.add('')
  147.  
  148. productFlavors.each { productFlavorName ->
  149. buildTypes.each { buildTypeName ->
  150. def sourceName, sourcePath
  151. if (!productFlavorName) {
  152. sourceName = sourcePath = "${buildTypeName}"
  153. } else {
  154. sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
  155. sourcePath = "${productFlavorName}/${buildTypeName}"
  156. }
  157. def testTaskName = "test${sourceName.capitalize()}UnitTest"
  158. println("SourceName:${sourceName}")
  159. println("SourcePath:${sourcePath}")
  160. println("testTaskName:${testTaskName}")
  161. // Create coverage task of form 'testFlavorTypeCoverage' depending on 'testFlavorTypeUnitTest'
  162. task "${testTaskName}Coverage" (type:JacocoReport, dependsOn: "$testTaskName") {
  163. group = "Reporting"
  164. description = "Generate Jacoco coverage reports on the ${sourceName.capitalize()} build."
  165.  
  166. classDirectories = fileTree(
  167. dir: "${project.buildDir}/intermediates/classes/${sourcePath}",
  168. excludes: ['**/R.class',
  169. '**/R$*.class',
  170. '**/*$ViewInjector*.*',
  171. '**/*$ViewBinder*.*',
  172. '**/BuildConfig.*',
  173. '**/Manifest*.*']
  174. )
  175.  
  176. def coverageSourceDirs = [
  177. "src/main/java",
  178. "src/$productFlavorName/java",
  179. "src/$buildTypeName/java"
  180. ]
  181. additionalSourceDirs = files(coverageSourceDirs)
  182. sourceDirectories = files(coverageSourceDirs)
  183. executionData = files("${project.buildDir}/jacoco/${testTaskName}.exec")
  184. println("${project.buildDir}/jacoco/${testTaskName}.exec")
  185. reports {
  186. xml.enabled = true
  187. html.enabled = true
  188. }
  189. }
  190. }
  191. }
  192. }
  193.  
  194. apply plugin: 'jacoco'
  195.  
  196. tasks.withType(Test) {
  197. jacoco.includeNoLocationClasses = true
  198. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement