From d23ff9610bbc12c27e729a9543b8cc551938a147 Mon Sep 17 00:00:00 2001 From: Araz Abishov Date: Sun, 26 Sep 2021 19:45:05 +0200 Subject: [PATCH] Bumping and refactoring dependencies --- android/build.gradle.kts | 97 ++++++++++++------- .../espresso/BottomNavigationViewMatcher.kt | 2 +- .../android/home/trending/TrendingRobot.kt | 12 ++- .../android/common/theme/Typography.kt | 12 +-- .../hexocat/android/components/Avatar.kt | 7 +- .../hexocat/android/components/Contributor.kt | 12 +-- .../hexocat/android/components/Language.kt | 7 +- .../hexocat/android/components/RemoteImage.kt | 28 ++++++ .../hexocat/android/components/Repository.kt | 19 ++-- .../trending/TrendingViewModelUnitTest.kt | 1 - .../abishov/hexocat/buildsrc/Dependencies.kt | 80 +++++++++++---- .../plugins/jacoco-android.gradle.kts | 6 +- gradle/wrapper/gradle-wrapper.properties | 3 +- shared/build.gradle.kts | 10 +- 14 files changed, 197 insertions(+), 99 deletions(-) create mode 100644 android/src/main/java/com/abishov/hexocat/android/components/RemoteImage.kt diff --git a/android/build.gradle.kts b/android/build.gradle.kts index 7548fff..4be19a8 100644 --- a/android/build.gradle.kts +++ b/android/build.gradle.kts @@ -1,5 +1,7 @@ import com.abishov.hexocat.buildsrc.AndroidSdk import com.abishov.hexocat.buildsrc.Libraries +import com.abishov.hexocat.buildsrc.AndroidX +import com.abishov.hexocat.buildsrc.Jetpack plugins { id("com.android.application") @@ -22,12 +24,18 @@ object Version { get() = "${versionMajor}.${versionMinor}.${versionPatch}" } +kotlin { + sourceSets.all { + languageSettings.useExperimentalAnnotation("kotlin.RequiresOptIn") + } +} + android { - compileSdkVersion(AndroidSdk.Version.compile) + compileSdk = AndroidSdk.Version.compile defaultConfig { - targetSdkVersion(AndroidSdk.Version.compile) - minSdkVersion(AndroidSdk.Version.min) + targetSdk = AndroidSdk.Version.compile + minSdk = AndroidSdk.Version.min applicationId = "com.abishov.hexocat.android" versionCode = Version.code @@ -42,7 +50,7 @@ android { composeOptions { kotlinCompilerVersion = Libraries.kotlin - kotlinCompilerExtensionVersion = Libraries.compose + kotlinCompilerExtensionVersion = Jetpack.Compose.version } compileOptions { @@ -55,6 +63,10 @@ android { useIR = true } + testCoverage { + jacocoVersion = "0.8.7" + } + buildTypes { getByName("debug") { isTestCoverageEnabled = true @@ -66,11 +78,17 @@ android { } packagingOptions { - exclude("**/attach_hotspot_windows.dll") - exclude("META-INF/AL2.0") - exclude("META-INF/LGPL2.1") - exclude("META-INF/LICENSE") - exclude("META-INF/licenses/ASM") + resources { + excludes.addAll( + setOf( + "**/attach_hotspot_windows.dll", + "META-INF/AL2.0", + "META-INF/LGPL2.1", + "META-INF/LICENSE", + "META-INF/licenses/ASM", + ) + ) + } } testOptions { @@ -90,26 +108,47 @@ paperwork { ) } +fun DependencyHandlerScope.androidx() { + implementation(AndroidX.Lifecycle.viewmodel) + implementation(AndroidX.Lifecycle.livedata) + + implementation(AndroidX.annotation) + implementation(AndroidX.appcompat) + + testImplementation(AndroidX.Test.androidJUnit) + testImplementation(AndroidX.Test.archCoreTesting) + + androidTestUtil(AndroidX.Test.orchestrator) + androidTestImplementation(AndroidX.Test.rules) + androidTestImplementation(AndroidX.Test.Espresso.core) + androidTestImplementation(AndroidX.Test.Espresso.intents) + androidTestImplementation(AndroidX.Test.Espresso.contrib) + androidTestImplementation(AndroidX.Test.Espresso.idlingResource) +} + +fun DependencyHandlerScope.jetpack() { + implementation(Jetpack.material) + implementation(Jetpack.Compose.ui) + implementation(Jetpack.Compose.uiTooling) + implementation(Jetpack.Compose.foundation) + implementation(Jetpack.Compose.material) + implementation(Jetpack.Compose.icons) + + androidTestImplementation(Jetpack.Compose.Test.uiTest) + androidTestImplementation(Jetpack.Compose.Test.uiTestJUnit) +} + dependencies { implementation(project(":shared")) + androidx() + jetpack() + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk7:${Libraries.kotlin}") implementation("hu.supercluster:paperwork:${Libraries.paperwork}") - implementation("com.google.android.material:material:${Libraries.material}") - implementation("androidx.appcompat:appcompat:${Libraries.appcompat}") - implementation("androidx.annotation:annotation:${Libraries.annotation}") - - implementation("androidx.compose.ui:ui:${Libraries.compose}") - implementation("androidx.compose.ui:ui-tooling:${Libraries.compose}") - implementation("androidx.compose.foundation:foundation:${Libraries.compose}") - implementation("androidx.compose.material:material-icons-extended:${Libraries.compose}") - implementation("androidx.compose.material:material:${Libraries.compose}") - implementation("dev.chrisbanes.accompanist:accompanist-coil:${Libraries.accompanist}") - - implementation("androidx.lifecycle:lifecycle-extensions:${Libraries.lifecycle}") - implementation("androidx.lifecycle:lifecycle-livedata-ktx:${Libraries.lifecycle}") - implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:${Libraries.lifecycle}") + implementation(Libraries.coil) + implementation(Libraries.flowlayout) implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm:${Libraries.coroutines}") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:${Libraries.coroutines}") @@ -137,20 +176,8 @@ dependencies { testImplementation("com.willowtreeapps.assertk:assertk:${Libraries.assertk}") testImplementation("com.nhaarman.mockitokotlin2:mockito-kotlin:${Libraries.mockitok}") testImplementation("org.robolectric:robolectric:${Libraries.roboelectric}") - testImplementation("androidx.test.ext:junit:${Libraries.androidJunit}") - testImplementation("android.arch.core:core-testing:${Libraries.archTesting}") testImplementation("com.apollographql.apollo:apollo-api:${Libraries.apollo}") - androidTestUtil("androidx.test:orchestrator:${Libraries.orchestrator}") - androidTestImplementation("androidx.test:rules:${Libraries.testRules}") - - androidTestImplementation("androidx.compose.ui:ui-test:${Libraries.compose}") - androidTestImplementation("androidx.test.espresso:espresso-idling-resource:${Libraries.espresso}") - androidTestImplementation("androidx.test.espresso:espresso-core:${Libraries.espresso}") - androidTestImplementation("androidx.test.espresso:espresso-intents:${Libraries.espresso}") - androidTestImplementation("androidx.test.espresso:espresso-contrib:${Libraries.espresso}") - androidTestImplementation("androidx.compose.ui:ui-test-junit4:${Libraries.compose}") - androidTestImplementation("com.github.andrzejchm.RESTMock:android:${Libraries.restmock}") androidTestImplementation("com.squareup.okhttp3:mockwebserver:${Libraries.okhttp}") androidTestImplementation("org.mockito:mockito-android:${Libraries.mockito}") diff --git a/android/src/androidTest/java/com/abishov/hexocat/android/common/espresso/BottomNavigationViewMatcher.kt b/android/src/androidTest/java/com/abishov/hexocat/android/common/espresso/BottomNavigationViewMatcher.kt index c74c760..f3e0b44 100644 --- a/android/src/androidTest/java/com/abishov/hexocat/android/common/espresso/BottomNavigationViewMatcher.kt +++ b/android/src/androidTest/java/com/abishov/hexocat/android/common/espresso/BottomNavigationViewMatcher.kt @@ -22,7 +22,7 @@ object BottomNavigationViewMatcher { } override fun matchesSafely(item: BottomNavigationItemView): Boolean { - return isChecked.matches(item.itemData.isChecked) + return isChecked.matches(item.itemData?.isChecked) } } } diff --git a/android/src/androidTest/java/com/abishov/hexocat/android/home/trending/TrendingRobot.kt b/android/src/androidTest/java/com/abishov/hexocat/android/home/trending/TrendingRobot.kt index 4bca692..15646f6 100644 --- a/android/src/androidTest/java/com/abishov/hexocat/android/home/trending/TrendingRobot.kt +++ b/android/src/androidTest/java/com/abishov/hexocat/android/home/trending/TrendingRobot.kt @@ -1,8 +1,11 @@ package com.abishov.hexocat.android.home.trending import android.content.Context -import androidx.compose.ui.test.* +import androidx.compose.ui.test.SemanticsNodeInteraction +import androidx.compose.ui.test.assertIsDisplayed import androidx.compose.ui.test.junit4.ComposeTestRule +import androidx.compose.ui.test.onNodeWithText +import androidx.compose.ui.test.performClick import androidx.test.espresso.Espresso.onView import androidx.test.espresso.action.ViewActions.click import androidx.test.espresso.assertion.ViewAssertions.matches @@ -45,8 +48,11 @@ class TrendingRobot( } fun errorMessage(error: String) { - composeTestRule.onNode(hasSubstring(error), useUnmergedTree = true) - .assertIsDisplayed() + composeTestRule.onNodeWithText( + text = error, + substring = true, + useUnmergedTree = true + ).assertIsDisplayed() } fun retryButtonIsVisible() { diff --git a/android/src/main/java/com/abishov/hexocat/android/common/theme/Typography.kt b/android/src/main/java/com/abishov/hexocat/android/common/theme/Typography.kt index 04b61ef..582186c 100644 --- a/android/src/main/java/com/abishov/hexocat/android/common/theme/Typography.kt +++ b/android/src/main/java/com/abishov/hexocat/android/common/theme/Typography.kt @@ -2,16 +2,16 @@ package com.abishov.hexocat.android.common.theme import androidx.compose.material.Typography import androidx.compose.ui.text.TextStyle +import androidx.compose.ui.text.font.Font +import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight -import androidx.compose.ui.text.font.font -import androidx.compose.ui.text.font.fontFamily import androidx.compose.ui.unit.sp import com.abishov.hexocat.android.R -private val RobotoMonoFontFamily = fontFamily( - font(R.font.robotomono_light, FontWeight.Light), - font(R.font.robotomono_medium, FontWeight.Medium), - font(R.font.robotomono_regular, FontWeight.Normal), +private val RobotoMonoFontFamily = FontFamily( + Font(R.font.robotomono_light, FontWeight.Light), + Font(R.font.robotomono_medium, FontWeight.Medium), + Font(R.font.robotomono_regular, FontWeight.Normal), ) val HexocatTypography = Typography( diff --git a/android/src/main/java/com/abishov/hexocat/android/components/Avatar.kt b/android/src/main/java/com/abishov/hexocat/android/components/Avatar.kt index cbf183b..8990b95 100644 --- a/android/src/main/java/com/abishov/hexocat/android/components/Avatar.kt +++ b/android/src/main/java/com/abishov/hexocat/android/components/Avatar.kt @@ -8,15 +8,14 @@ import androidx.compose.ui.draw.clip import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp -import dev.chrisbanes.accompanist.coil.CoilImage val AvatarCornerSize = 4.dp @Composable fun Avatar(url: Uri, modifier: Modifier, cornerRadius: Dp) { - CoilImage( - data = url, - fadeIn = true, + RemoteImage( + url = url, + contentDescription = "", contentScale = ContentScale.Fit, modifier = modifier.then( Modifier.clip(RoundedCornerShape(cornerRadius)) diff --git a/android/src/main/java/com/abishov/hexocat/android/components/Contributor.kt b/android/src/main/java/com/abishov/hexocat/android/components/Contributor.kt index f3be80f..18e11cb 100644 --- a/android/src/main/java/com/abishov/hexocat/android/components/Contributor.kt +++ b/android/src/main/java/com/abishov/hexocat/android/components/Contributor.kt @@ -13,10 +13,11 @@ import androidx.compose.ui.geometry.CornerRadius import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.Stroke -import androidx.compose.ui.platform.AmbientDensity +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp +import com.google.accompanist.flowlayout.FlowRow private val contributorAvatarSize = 28.dp @@ -31,7 +32,7 @@ data class ContributorViewModel(val id: String, val avatarUrl: Uri) fun Contributor(contributor: ContributorViewModel) { Avatar( url = contributor.avatarUrl, - Modifier.preferredSize(contributorAvatarSize), + Modifier.size(contributorAvatarSize), AvatarCornerSize ) } @@ -46,7 +47,7 @@ fun ContributorOverflow(contributorsOverflow: Int) { modifier: Modifier, content: @Composable BoxScope.() -> Unit ) { - val contributorCornerRadius = with(AmbientDensity.current) { + val contributorCornerRadius = with(LocalDensity.current) { val avatarSizePx = contributorAvatarSize.toPx() val avatarSize = Size(avatarSizePx, avatarSizePx) val cornerSize = CornerSize(avatarCornerSize).toPx(avatarSize, this) @@ -56,7 +57,7 @@ fun ContributorOverflow(contributorsOverflow: Int) { Box( modifier = modifier.then( - Modifier.preferredSize(contributorAvatarSize) + Modifier.size(contributorAvatarSize) ), contentAlignment = Alignment.Center ) { Canvas(modifier = modifier, onDraw = { @@ -73,7 +74,7 @@ fun ContributorOverflow(contributorsOverflow: Int) { ContributorOutline( MaterialTheme.colors.onSurface, AvatarCornerSize, - Modifier.preferredSize(contributorAvatarSize) + Modifier.size(contributorAvatarSize) ) { val overflow = if (contributorsOverflow > 99) 99 else contributorsOverflow @@ -87,7 +88,6 @@ fun ContributorOverflow(contributorsOverflow: Int) { } @Composable -@OptIn(ExperimentalLayout::class) fun Contributors(owner: OwnerViewModel, users: MentionableUsersViewModel, modifier: Modifier) { val topContributors = users.contributors val isOwnerTheOnlyContributor = topContributors.size == 1 && diff --git a/android/src/main/java/com/abishov/hexocat/android/components/Language.kt b/android/src/main/java/com/abishov/hexocat/android/components/Language.kt index def727a..d6604e2 100644 --- a/android/src/main/java/com/abishov/hexocat/android/components/Language.kt +++ b/android/src/main/java/com/abishov/hexocat/android/components/Language.kt @@ -1,10 +1,7 @@ package com.abishov.hexocat.android.components import androidx.compose.foundation.background -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.preferredSize +import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -33,7 +30,7 @@ fun LanguageColor(languageColor: String?, modifier: Modifier = Modifier) { modifier = modifier.then( Modifier .clip(CircleShape) - .preferredSize(10.dp) + .size(10.dp) .background(color) ), ) diff --git a/android/src/main/java/com/abishov/hexocat/android/components/RemoteImage.kt b/android/src/main/java/com/abishov/hexocat/android/components/RemoteImage.kt new file mode 100644 index 0000000..7abcfb3 --- /dev/null +++ b/android/src/main/java/com/abishov/hexocat/android/components/RemoteImage.kt @@ -0,0 +1,28 @@ +package com.abishov.hexocat.android.components + +import android.net.Uri +import androidx.compose.foundation.Image +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.layout.ContentScale +import coil.annotation.ExperimentalCoilApi +import coil.compose.rememberImagePainter + +@Composable +@OptIn(ExperimentalCoilApi::class) +fun RemoteImage( + url: Uri, + contentDescription: String, + contentScale: ContentScale, + modifier: Modifier +) { + Image( + painter = rememberImagePainter(data = url, + builder = { + crossfade(true) + }), + contentDescription = contentDescription, + contentScale = contentScale, + modifier = modifier + ) +} diff --git a/android/src/main/java/com/abishov/hexocat/android/components/Repository.kt b/android/src/main/java/com/abishov/hexocat/android/components/Repository.kt index c57daa0..c095378 100644 --- a/android/src/main/java/com/abishov/hexocat/android/components/Repository.kt +++ b/android/src/main/java/com/abishov/hexocat/android/components/Repository.kt @@ -15,7 +15,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp -import dev.chrisbanes.accompanist.coil.CoilImage +import com.google.accompanist.flowlayout.FlowRow data class OwnerViewModel( val avatarUrl: Uri, @@ -62,7 +62,7 @@ private fun Header(repository: RepositoryViewModel) { ) { Avatar( url = repository.owner.avatarUrl, - modifier = Modifier.preferredSize(40.dp), + modifier = Modifier.size(40.dp), cornerRadius = AvatarCornerSize ) Column(modifier = Modifier.padding(start = 16.dp)) { @@ -85,9 +85,9 @@ private fun Description(description: String) { @Composable private fun Banner(url: Uri) { - CoilImage( - data = url, - fadeIn = true, + RemoteImage( + url = url, + contentDescription = "", contentScale = ContentScale.Crop, modifier = Modifier .fillMaxWidth() @@ -102,7 +102,8 @@ private fun StarButton(stars: Int, modifier: Modifier = Modifier) { Icon( modifier = Modifier .padding(end = ButtonDefaults.IconSpacing) - .preferredSize(ButtonDefaults.IconSize), + .size(ButtonDefaults.IconSize), + contentDescription = "", imageVector = Icons.Outlined.StarOutline, tint = MaterialTheme.colors.secondary, ) @@ -112,7 +113,6 @@ private fun StarButton(stars: Int, modifier: Modifier = Modifier) { } @Composable -@OptIn(ExperimentalLayout::class) private fun Tags( primaryLanguage: LanguageViewModel?, topics: List?, @@ -158,7 +158,6 @@ private fun RepositoryCard( } @Composable -@OptIn(ExperimentalLayout::class) fun Repository( repository: RepositoryViewModel, onRepositoryClick: (repository: RepositoryViewModel) -> Unit @@ -203,8 +202,8 @@ fun Repositories( onRepositoryClick: (RepositoryViewModel) -> Unit ) { LazyColumn(modifier = Modifier.padding(vertical = 4.dp)) { - items(repos) { - Repository(repository = it, onRepositoryClick = onRepositoryClick) + items(repos.size, { index -> repos[index].url }) { index -> + Repository(repository = repos[index], onRepositoryClick = onRepositoryClick) } } } diff --git a/android/src/test/java/com/abishov/hexocat/android/home/trending/TrendingViewModelUnitTest.kt b/android/src/test/java/com/abishov/hexocat/android/home/trending/TrendingViewModelUnitTest.kt index b32b1d5..199fa7d 100644 --- a/android/src/test/java/com/abishov/hexocat/android/home/trending/TrendingViewModelUnitTest.kt +++ b/android/src/test/java/com/abishov/hexocat/android/home/trending/TrendingViewModelUnitTest.kt @@ -221,7 +221,6 @@ class TrendingViewModelUnitTest { val viewStateSuccess = values[1] assertThat(viewStateSuccess!!).isInstanceOf(TrendingViewState.Success::class) - // assertThat((viewStateSuccess as TrendingViewState.Success).items).isEmpty() } } } diff --git a/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/Dependencies.kt b/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/Dependencies.kt index 1d24b0c..b608841 100644 --- a/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/Dependencies.kt +++ b/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/Dependencies.kt @@ -3,40 +3,84 @@ package com.abishov.hexocat.buildsrc object AndroidSdk { object Version { const val min = 24 - const val compile = 29 + const val compile = 30 } } +object Kotlin { + const val version = "1.5.21" + const val coroutines = "1.5.2" +} + +object Jetpack { + + object Compose { + const val version = "1.0.2" + const val ui = "androidx.compose.ui:ui:$version" + const val uiTooling = "androidx.compose.ui:ui-tooling:$version" + const val foundation = "androidx.compose.foundation:foundation:$version" + const val material = "androidx.compose.material:material:$version" + const val icons = "androidx.compose.material:material-icons-extended:$version" + + object Test { + const val uiTest = "androidx.compose.ui:ui-test:$version" + const val uiTestJUnit = "androidx.compose.ui:ui-test-junit4:$version" + } + } + + // TODO: replace with Compose.material + const val material = "com.google.android.material:material:1.4.0" +} + +object AndroidX { + + object Lifecycle { + const val version = "2.3.1" + const val viewmodel = "androidx.lifecycle:lifecycle-viewmodel-ktx:$version" + const val livedata = "androidx.lifecycle:lifecycle-livedata-ktx:$version" + } + + object Test { + const val androidJUnit = "androidx.test.ext:junit:1.1.3" + const val orchestrator = "androidx.test:orchestrator:1.4.0" + const val archCoreTesting = "androidx.arch.core:core-testing:2.1.0" + const val rules = "androidx.test:rules:1.4.0" + + object Espresso { + const val version = "3.3.0" + const val core = "androidx.test.espresso:espresso-core:$version" + const val intents = "androidx.test.espresso:espresso-intents:$version" + const val contrib = "androidx.test.espresso:espresso-contrib:$version" + const val idlingResource = "androidx.test.espresso:espresso-idling-resource:$version" + } + } + + const val annotation = "androidx.annotation:annotation:1.2.0" + const val appcompat = "androidx.appcompat:appcompat:1.3.1" +} + object Libraries { - const val kotlin = "1.4.21" - const val compose = "1.0.0-alpha10" - const val apollo = "2.5.3" - const val lifecycle = "2.2.0" - const val coroutines = "1.4.2" - const val dagger = "2.28.3" + const val flowlayout = "com.google.accompanist:accompanist-flowlayout:0.18.0" + const val coil = "io.coil-kt:coil-compose:1.3.2" + + const val kotlin = Kotlin.version + const val apollo = "2.5.9" + const val coroutines = Kotlin.coroutines + const val dagger = "2.38.1" const val okhttp = "4.9.1" const val leakcanary = "1.5.4" const val threetenabp = "1.2.4" - const val timber = "4.7.1" + const val timber = "5.0.1" const val paperwork = "1.2.7" - const val espresso = "3.3.0" const val junit = "4.13.1" - const val androidJunit = "1.1.2" const val assertj = "2.8.0" const val restmock = "0.4.3" const val mockito = "3.7.7" const val mockitok = "2.2.0" const val assertk = "0.23" const val okhttpIdlingResource = "1.0.0" - const val material = "1.3.0" - const val appcompat = "1.2.0" - const val annotation = "1.1.0" - const val accompanist = "0.4.2" - const val archTesting = "1.1.1" const val roboelectric = "4.5" - const val orchestrator = "1.3.0" - const val testRules = "1.3.0" - const val androidGradlePlugin = "4.2.1" + const val androidGradlePlugin = "7.0.2" const val buildKonfig = "0.7.0" const val gradleVersions = "0.36.0" } diff --git a/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/plugins/jacoco-android.gradle.kts b/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/plugins/jacoco-android.gradle.kts index 6a893bf..749b187 100644 --- a/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/plugins/jacoco-android.gradle.kts +++ b/buildSrc/src/main/java/com/abishov/hexocat/buildsrc/plugins/jacoco-android.gradle.kts @@ -5,7 +5,7 @@ plugins { } jacoco { - toolVersion = "0.8.6" + toolVersion = "0.8.7" } tasks.withType { @@ -18,7 +18,7 @@ tasks.withType { val debugCoverageSourceDirs = files(listOf("src/main/java", "src/debug/java")) val debugExecutionData = fileTree(baseDir = "$buildDir") { - include("jacoco/testDebugUnitTest.exec", "outputs/code-coverage/connected/*coverage.ec") + include("jacoco/testDebugUnitTest.exec", "outputs/code_coverage/debugAndroidTest/connected/**/*.ec") } val debugClassDirectories = fileTree(baseDir = "${project.buildDir}/intermediates/classes/debug") { @@ -75,7 +75,7 @@ if (tasks.findByName("jacocoAndroidCoverageVerification") == null) { violationRules { rule { limit { - minimum = 0.6.toBigDecimal() + minimum = "0.6".toBigDecimal() } } } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 55c32bf..3d21570 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sat Feb 06 10:39:18 CET 2021 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.0.2-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME diff --git a/shared/build.gradle.kts b/shared/build.gradle.kts index 9f137b0..c890bcc 100644 --- a/shared/build.gradle.kts +++ b/shared/build.gradle.kts @@ -59,11 +59,11 @@ android { sourceSets["main"].manifest .srcFile("src/androidMain/AndroidManifest.xml") - compileSdkVersion(AndroidSdk.Version.compile) + compileSdk = AndroidSdk.Version.compile defaultConfig { - targetSdkVersion(AndroidSdk.Version.compile) - minSdkVersion(AndroidSdk.Version.min) + targetSdk = AndroidSdk.Version.compile + minSdk = AndroidSdk.Version.min } } @@ -77,7 +77,7 @@ apollo { fun Project.properties(path: String): Properties? { val properties = Properties() - val localProperties = rootProject.file(path) + val localProperties = file(path) if (localProperties.exists()) { return properties.also { it.load(localProperties.inputStream()) } @@ -99,7 +99,7 @@ fun getGithubPat(): String { return githubPat } - throw InvalidUserDataException( + throw IllegalArgumentException( "Neither 'githubPat' property " + "in the 'local.properties' file or 'GITHUB_PAT' environment variable was set." )