Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AndroidApp/.idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

7 changes: 5 additions & 2 deletions AndroidApp/app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,11 @@ android {
packaging {
resources.excludes.add("META-INF/DEPENDENCIES")
}
kotlinOptions {
jvmTarget = "17"
}

kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}

Expand Down
6 changes: 4 additions & 2 deletions AndroidApp/data/repository/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ plugins {

android {
namespace = "me.nya_n.notificationnotifier.data.repository"
}

kotlinOptions {
jvmTarget = "17"
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}

Expand Down
6 changes: 4 additions & 2 deletions AndroidApp/domain/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,11 @@ plugins {

android {
namespace = "me.nya_n.notificationnotifier.domain"
}

kotlinOptions {
jvmTarget = "17"
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}

Expand Down
12 changes: 6 additions & 6 deletions AndroidApp/gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -10,20 +10,20 @@ versionName = "1.1"
# ---------------------------------------------------------

# Library
agp = "8.9.3"
kotlin = "2.2.21"
agp = "8.13.2"
kotlin = "2.3.0"
kotlinx-coroutines = "1.10.2"
com-google-devtools-ksp = "2.3.3" # Kotlinのバージョンに合わせる必要がある
com-google-devtools-ksp = "2.3.4"
com-jaredsburrows-license = "0.9.8"
androidx-core = "1.17.0"
androidx-appcompat = "1.7.1"
androidx-security = "1.1.0"
androidx-splashscreen = "1.2.0"
androidx-compose-bom = "2025.12.00"
androidx-compose-activity = "1.12.1"
androidx-compose-bom = "2026.01.00"
androidx-compose-activity = "1.12.2"
androidx-compose-viewmodel = "2.10.0"
androidx-compose-navigation = "2.9.6"
androidx-compose-screenshot = "0.0.1-alpha09"
androidx-compose-screenshot = "0.0.1-alpha13"
junit = "4.13.2"
com-google-truth = "1.4.5"
androidx-test-ext = "1.3.0"
Expand Down
2 changes: 1 addition & 1 deletion AndroidApp/gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.0-bin.zip
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟠 Major

🧩 Analysis chain

🌐 Web query:

Gradle 9.3.0 AGP 8.13.2 compatibility

💡 Result:

Short answer: Not officially — AGP 8.13.2 declares Gradle 8.13 as the required/default Gradle version, so the supported/expected combination is AGP 8.13.2 + Gradle 8.13. (developer.android.com)

Detail important for trying Gradle 9.3.0:

  • Gradle 9.x requires AGP >= 8.4 (so AGP 8.13.2 satisfies Gradle’s minimum supported-AGP check). (docs.gradle.org)
  • However, the AGP 8.13 release notes still list Gradle 8.13 as the minimum/default tested version; using Gradle 9.3 may work but is not the officially documented/tested combination and may expose incompatibilities in AGP or third‑party plugins. (developer.android.com)

Recommendation: stay on Gradle 8.13 with AGP 8.13.2 for guaranteed support. If you need Gradle 9.3, test thoroughly (CI + full clean builds) or upgrade AGP to a 9.x release that explicitly targets Gradle 9.0+. (developer.android.com)

Citations:


🌐 Web query:

Android Gradle Plugin 8.13.2 required Gradle version

💡 Result:

Android Gradle Plugin 8.13.2 requires Gradle 8.13. [1][2]

Sources:
[1] Android Developers — Android Gradle plugin release notes/compatibility.
[2] Gradle 8.13 release notes.


Gradle 9.3.0 は AGP 8.13.2 と互換性がありません。

AGP 8.13.2 の公式要件は Gradle 8.13 です。Gradle 9.3.0 は AGP >= 8.4 を要件としますが、AGP 8.13.2 は Gradle 9.3.0 との組み合わせについて公式にはテストされていません。以下のいずれかの対応が必要です:

  • Gradle を 8.13 にダウングレードする、または
  • AGP を 9.x 系にアップグレードする

現在の構成では、ビルド失敗やプラグイン非互換性が発生する可能性があります。

🤖 Prompt for AI Agents
In `@AndroidApp/gradle/wrapper/gradle-wrapper.properties` at line 3, The Gradle
version in gradle-wrapper.properties (distributionUrl) is set to 9.3.0 which is
not officially compatible with AGP 8.13.2; either downgrade Gradle to 8.13 by
updating distributionUrl to the Gradle 8.13 distribution (e.g.,
gradle-8.13-bin.zip) or upgrade the Android Gradle Plugin to a 9.x release to
match Gradle 9.x; locate the distributionUrl entry in gradle-wrapper.properties
and change it accordingly, or instead update the AGP version in your
build.gradle files (classpath 'com.android.tools.build:gradle:..') so both
Gradle and AGP versions are compatible.

networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Expand Down
6 changes: 4 additions & 2 deletions AndroidApp/model/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ plugins {

android {
namespace = "me.nya_n.notificationnotifier.model"
}

kotlinOptions {
jvmTarget = "17"
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}

Expand Down
11 changes: 9 additions & 2 deletions AndroidApp/ui/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,11 @@ android {
namespace = "me.nya_n.notificationnotifier.ui"
@Suppress("UnstableApiUsage")
experimentalProperties["android.experimental.enableScreenshotTest"] = true
}

kotlinOptions {
jvmTarget = "17"
kotlin {
compilerOptions {
jvmTarget = org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_17
}
}

Expand All @@ -32,4 +34,9 @@ dependencies {
// その他
implementation(libs.io.insert.koin)
implementation(libs.io.insert.koin.compose)
}

tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
failOnNoDiscoveredTests = false
Comment on lines +39 to +41
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

🧩 Analysis chain

🏁 Script executed:

# First, let's examine the build.gradle.kts file
cat -n AndroidApp/ui/build.gradle.kts | head -60

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 1552


🏁 Script executed:

# Search for screenshot test references in the codebase
rg -i "screenshot" AndroidApp/ui/ --type kotlin --type gradle -B 2 -A 2

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 11719


🏁 Script executed:

# Look for Test task configuration and custom tasks
rg -i "tasks\.with|test" AndroidApp/ui/build.gradle.kts -B 2 -A 5

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 891


🏁 Script executed:

# Check if there are other test-related tasks or configurations
rg -i "unitTest|androidTest|paparazzi\|screenshot" AndroidApp/ui/ --type kotlin --type gradle | head -20

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 151


🏁 Script executed:

# Check for other test sources in the ui module
find AndroidApp/ui/src -type d -name "*test*" | head -20

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# List all test-related directories and files
ls -la AndroidApp/ui/src/

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 303


🏁 Script executed:

# Search for any unitTest or androidTest test classes
find AndroidApp/ui -path "*/src/*/kotlin/*Test*.kt" -o -path "*/src/*/java/*Test*.java" 2>/dev/null

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 166


🏁 Script executed:

# Check what other modules look like to see if this pattern is normal
find AndroidApp -name "build.gradle.kts" -exec grep -l "failOnNoDiscoveredTests" {} \;

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 109


🏁 Script executed:

# Check what test tasks paparazzi creates - look for gradle logs or inspect plugin behavior
# by searching for any references to paparazzi or screenshot task naming
rg -i "paparazzi\|screenshot.*test\|test.*screenshot" --type gradle --type kotlin -B 1 -A 1

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# Look for gradle files to understand the test task naming better
find AndroidApp -name "*.gradle.kts" | xargs grep -l "Test" | head -5

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 188


🏁 Script executed:

# Let's verify if there are androidTest or unitTest sources anywhere
find AndroidApp/ui -type d \( -name "androidTest" -o -name "unitTest" -o -name "test" \)

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 61


🏁 Script executed:

# Check all test source sets in the ui module
find AndroidApp/ui/src -maxdepth 1 -type d

Repository: ptkNktq/AndroidNotificationNotifier

Length of output: 152


スクリーンショット関連タスクに限定して failOnNoDiscoveredTests=false を適用してください。

Test タスクに適用すると、スクリーンショット以外のテスト不検出も黙って通り、誤設定に気づけません。Paparazziタスク(recordPaparazziverifyPaparazzi など)に限定するのが安全です。

🛠️ 例: Paparazziタスクのみに限定
 tasks.withType<Test>().configureEach {
     // FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
-    failOnNoDiscoveredTests = false
+    if (name.contains("paparazzi", ignoreCase = true)) {
+        failOnNoDiscoveredTests = false
+    }
 }
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
failOnNoDiscoveredTests = false
tasks.withType<Test>().configureEach {
// FIXME: ScreenshotTestを全部コメントアウトしてるので一時的にfalseにしておく
if (name.contains("paparazzi", ignoreCase = true)) {
failOnNoDiscoveredTests = false
}
}
🤖 Prompt for AI Agents
In `@AndroidApp/ui/build.gradle.kts` around lines 39 - 41, The current
tasks.withType<Test>().configureEach block sets failOnNoDiscoveredTests=false
for all Test tasks; narrow this to only Paparazzi-related test tasks (e.g. tasks
whose names are recordPaparazzi or verifyPaparazzi) so other test tasks still
fail when no tests are discovered. Update the tasks configuration to target only
those Paparazzi tasks (referencing the existing
tasks.withType<Test>().configureEach and the task names recordPaparazzi /
verifyPaparazzi) and set failOnNoDiscoveredTests=false only for that filtered
set.

}