diff --git a/.danger/pr_detekt.df.kts b/.danger/pr_detekt.df.kts new file mode 100644 index 000000000..b4f4f448c --- /dev/null +++ b/.danger/pr_detekt.df.kts @@ -0,0 +1,24 @@ +@file:DependsOn("io.github.vacxe.danger.kotlin:detekt:1.1.0") + +import systems.danger.kotlin.* +import systems.danger.kotlin.models.github.* +import io.github.vacxe.danger.kotlin.detekt.* +import java.io.File + +val detektPlugin = DetektPlugin { it.removePrefix("/home/runner/work/Kakao/Kakao/") } +register.plugin(detektPlugin) + +danger(args) { + detektReport() +} + +fun detektReport() { + val detektReportFile = File("build/reports/detekt/detekt.xml") + if (!detektReportFile.exists()) { + warn( + "Detekt report not exist", + ) + } else { + detektPlugin.parseAndReport(detektReportFile) + } +} diff --git a/.github/workflows/pr-checks.yml b/.github/workflows/pr-checks.yml index 54964f4e1..01ad02d35 100644 --- a/.github/workflows/pr-checks.yml +++ b/.github/workflows/pr-checks.yml @@ -11,9 +11,24 @@ jobs: with: distribution: "temurin" java-version: 17 + cache: gradle - name: detekt run: | ./gradlew clean detekt + - name: Upload Detekt Artifacts + uses: actions/upload-artifact@v4 + if: always() + with: + name: detektArtifacts + path: build/reports/detekt + - name: Danger + uses: danger/kotlin@1.3.1 + if: always() + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + dangerfile: ".danger/pr_detekt.df.kts" + args: "--failOnErrors --no-publish-check" assemble-debug-apk: needs: [ detekt ] @@ -26,6 +41,7 @@ jobs: with: distribution: "temurin" java-version: 17 + cache: gradle - name: Assemble Debug APK run: bash ./gradlew sample:assembleDebug - name: Upload app APK @@ -45,6 +61,7 @@ jobs: with: distribution: "temurin" java-version: 17 + cache: gradle - name: Assemble Instrumental APK run: bash ./gradlew sample:assembleDebugAndroidTest - name: Upload app APK diff --git a/buildSrc/src/main/kotlin/convention.library.gradle.kts b/buildSrc/src/main/kotlin/convention.library.gradle.kts index 66f58bf6b..61134b62d 100644 --- a/buildSrc/src/main/kotlin/convention.library.gradle.kts +++ b/buildSrc/src/main/kotlin/convention.library.gradle.kts @@ -3,3 +3,7 @@ plugins { id("convention.android-base") id("convention.kotlin") } + +kotlin { + jvmToolchain(8) +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 03b358d74..7e2de1963 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,29 +1,29 @@ [versions] -gradle = "8.5" -jvmVersion = "17" +gradle = "8.8" +jvmVersion = "8" targetSdk = "34" compileSdk = "34" -minSdk = "14" +minSdk = "21" -agpVersion = "8.2.1" -kotlinVersion = "1.9.21" +agpVersion = "8.5.0" +kotlinVersion = "2.0.0" -dokkaVersion = "1.9.10" -appcompatVersion = "1.6.1" +dokkaVersion = "1.9.20" +appcompatVersion = "1.7.0" recyclerviewVersion = "1.3.2" -viewPager2Version = "1.0.0" +viewPager2Version = "1.1.0" swiperefreshlayoutVersion = "1.1.0" -annotationVersion = "1.3.0" -testRunnerVersion = "1.5.2" -testRulesVersion = "1.5.0" +annotationVersion = "1.6.0" +testRunnerVersion = "1.6.1" +testRulesVersion = "1.6.1" -espressoVersion = "3.5.1" +espressoVersion = "3.6.1" junitVersion = "4.13.2" -junitExtVersion = "1.1.5" +junitExtVersion = "1.2.1" multidexVersion = "2.0.1" -materialVersion = "1.11.0" +materialVersion = "1.12.0" detekt = "1.17.1" diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 829e1a5a9..8b580b949 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.8-all.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/kakao/src/main/kotlin/io/github/kakaocup/kakao/common/views/KBaseView.kt b/kakao/src/main/kotlin/io/github/kakaocup/kakao/common/views/KBaseView.kt index 23b7f11ad..e11150247 100644 --- a/kakao/src/main/kotlin/io/github/kakaocup/kakao/common/views/KBaseView.kt +++ b/kakao/src/main/kotlin/io/github/kakaocup/kakao/common/views/KBaseView.kt @@ -30,8 +30,8 @@ import org.hamcrest.Matchers * @param T Type of your custom view. Needs to be defined to enable invoke() and perform() for descendants */ @KakaoDslMarker -open class KBaseView : KDSLView, BaseActions, BaseAssertions, Interceptable { - override val view: ViewInteractionDelegate +abstract class KBaseView : KDSLView, BaseActions, BaseAssertions, Interceptable { + final override val view: ViewInteractionDelegate override var root: Matcher = RootMatchers.DEFAULT /** diff --git a/kakao/src/main/kotlin/io/github/kakaocup/kakao/progress/PreciseSwipe.kt b/kakao/src/main/kotlin/io/github/kakaocup/kakao/progress/PreciseSwipe.kt index b80966a22..c45cb365b 100644 --- a/kakao/src/main/kotlin/io/github/kakaocup/kakao/progress/PreciseSwipe.kt +++ b/kakao/src/main/kotlin/io/github/kakaocup/kakao/progress/PreciseSwipe.kt @@ -7,7 +7,6 @@ import android.util.Log import androidx.test.espresso.UiController import androidx.test.espresso.action.MotionEvents import androidx.test.espresso.action.Swiper -import androidx.test.espresso.core.internal.deps.guava.base.Preconditions.checkElementIndex object PreciseSwipe : Swiper { override fun sendSwipe( @@ -53,8 +52,8 @@ object PreciseSwipe : Swiper { } private fun interpolate(start: FloatArray, end: FloatArray, steps: Int): Array { - checkElementIndex(1, start.size) - checkElementIndex(1, end.size) + require(1 in start.indices) + require(1 in end.indices) val res = Array(steps) { FloatArray(2) } diff --git a/kakao/version b/kakao/version index d5c0c9914..9575d51ba 100644 --- a/kakao/version +++ b/kakao/version @@ -1 +1 @@ -3.5.1 +3.6.1