• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
<lambda>null17 plugins {
18     alias(libs.plugins.android.library)
19     alias(libs.plugins.kotlin.android)
20     jacoco
21 }
22 
23 val jetpackComposeVersion: String? by extra
24 
<lambda>null25 android {
26     namespace = "com.android.settingslib.spa"
27 
28     defaultConfig {
29         testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
30     }
31 
32     sourceSets {
33         sourceSets.getByName("main") {
34             kotlin.setSrcDirs(listOf("src"))
35             res.setSrcDirs(listOf("res"))
36             manifest.srcFile("AndroidManifest.xml")
37         }
38         sourceSets.getByName("androidTest") {
39             kotlin.setSrcDirs(listOf("../tests/src"))
40             res.setSrcDirs(listOf("../tests/res"))
41             manifest.srcFile("../tests/AndroidManifest.xml")
42         }
43     }
44     buildFeatures {
45         compose = true
46     }
47     buildTypes {
48         getByName("debug") {
49             enableAndroidTestCoverage = true
50         }
51     }
52 }
53 
<lambda>null54 dependencies {
55     api(project(":SettingsLibColor"))
56     api("androidx.appcompat:appcompat:1.7.0-rc01")
57     api("androidx.slice:slice-builders:1.1.0-alpha02")
58     api("androidx.slice:slice-core:1.1.0-alpha02")
59     api("androidx.slice:slice-view:1.1.0-alpha02")
60     api("androidx.compose.material3:material3:1.3.0-beta02")
61     api("androidx.compose.material:material-icons-extended:$jetpackComposeVersion")
62     api("androidx.compose.runtime:runtime-livedata:$jetpackComposeVersion")
63     api("androidx.compose.ui:ui-tooling-preview:$jetpackComposeVersion")
64     api("androidx.lifecycle:lifecycle-livedata-ktx")
65     api("androidx.lifecycle:lifecycle-runtime-compose")
66     api("androidx.navigation:navigation-compose:2.8.0-beta02")
67     api("com.github.PhilJay:MPAndroidChart:v3.1.0-alpha")
68     api("com.google.android.material:material:1.11.0")
69     debugApi("androidx.compose.ui:ui-tooling:$jetpackComposeVersion")
70     implementation("com.airbnb.android:lottie-compose:6.4.0")
71 
72     androidTestImplementation(project(":testutils"))
73     androidTestImplementation(libs.dexmaker.mockito)
74 }
75 
<lambda>null76 tasks.register<JacocoReport>("coverageReport") {
77     group = "Reporting"
78     description = "Generate Jacoco coverage reports after running tests."
79     dependsOn("connectedDebugAndroidTest")
80     sourceDirectories.setFrom(files("src"))
81     classDirectories.setFrom(
82         fileTree(layout.buildDirectory.dir("tmp/kotlin-classes/debug")) {
83             setExcludes(
84                 listOf(
85                     "com/android/settingslib/spa/debug/**",
86 
87                     // Excludes files forked from AndroidX.
88                     "com/android/settingslib/spa/widget/scaffold/CustomizedAppBar*",
89                     "com/android/settingslib/spa/widget/scaffold/TopAppBarColors*",
90 
91                     // Excludes files forked from Accompanist.
92                     "com/android/settingslib/spa/framework/compose/DrawablePainter*",
93 
94                     // Excludes inline functions, which is not covered in Jacoco reports.
95                     "com/android/settingslib/spa/framework/util/Collections*",
96                     "com/android/settingslib/spa/framework/util/Flows*",
97 
98                     // Excludes debug functions
99                     "com/android/settingslib/spa/framework/compose/TimeMeasurer*",
100 
101                     // Excludes slice demo presenter & provider
102                     "com/android/settingslib/spa/slice/presenter/Demo*",
103                     "com/android/settingslib/spa/slice/provider/Demo*",
104                 )
105             )
106         }
107     )
108     executionData.setFrom(
109         fileTree(layout.buildDirectory.dir("outputs/code_coverage/debugAndroidTest/connected"))
110     )
111 }
112