Dependency Updates (September 2026) + Android SDK Tracker + Test Fix - #12
Merged
Merged
Conversation
Update 7 direct dependencies: - AGP 9.3.1 → 9.3.2 - Spotless 8.9.0 → 8.10.1 - ben-manes 0.58.0 → 0.61.0 - compose-bom 2026.06.01 → 2026.08.00 - glance 1.1.1 → 1.2.0 - okhttp 5.4.0 → 5.5.0 - JUnit 6.1.2 → 6.1.3 Remaining 15 updates from issue #10 are transitive dependencies that update automatically via BOM and AGP versions. Build verification: assembleDebug + assembleRelease successful. Note: 3 pre-existing test failures in WidgetStateResolverTest (confirmed on main branch) are unrelated to these updates. Closes #10
Add automated tracking of Android SDK versions (compileSdk/targetSdk) to the monthly master sanity check workflow. New workflow: - Reads current SDK versions from app/build.gradle.kts - Compares against latest known versions (37/37) - Creates issue with label 'outdated-android-sdk' if outdated - Auto-closes issue when versions are updated Integrated into monthly check: - New check-android-sdk-versions job - Added to results reporting Maintenance: Update LATEST_COMPILE_SDK/LATEST_TARGET_SDK in reusable-android-sdk-version-checker.yml when Google releases new Android versions. Addresses gap where SDK version bumps weren't tracked automatically.
Fixed 3 failing unit tests in WidgetStateResolverTest that were crashing with "Method d in android.util.Log not mocked" errors. Root cause: WidgetStateResolver.resolve() calls Log.d() for battery debug logging. In unit tests, Android framework classes throw exceptions unless mocked. Solution: Added testOptions.unitTests.isReturnDefaultValues = true to build.gradle.kts, which makes unmocked Android framework methods return default values instead of throwing. This is the standard approach for unit testing Android code that uses framework logging. Test results: - Before: 79 tests, 3 failed - After: 79 tests, 0 failed ✅ All WidgetStateResolverTest cases now pass: - resolves face, passes through alarm+weather+settings, maps battery - charging battery maps to the charging glyph - resolve clamps over-100 percent to full fraction
Auto-fixed pre-existing code style violations flagged by CI: - SettingsViewModel.kt: single-line function signatures - SettingsScreen.kt: removed unused imports - BatteryDataSource.kt: multiline expression formatting - WidgetStateResolver.kt: multiline expression formatting All issues fixed via `./gradlew ktlintFormat`. ktlintCheck now passes.
This was referenced Sep 11, 2026
Merged
shining-cat
added a commit
that referenced
this pull request
Sep 11, 2026
Version bump for September 2026 release. Changes: - versionCode: 6 → 7 - versionName: 1.1.0 → 1.1.1 This release includes: - September dependency updates (2 batches: PR #12 + PR #16) - Gradle upgrade to 9.7.1 - Android SDK version tracker - Test fix for unmocked Log.d - Deprecation check improvements - Dependency check workflow fixes (Gradle extraction + RC filter) Total: 34 dependency updates + 1 test fix + 3 workflow improvements Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Dependency Updates + Infrastructure Improvements
Summary
Monthly dependency updates + automated Android SDK version tracking + unit test fix.
Three commits:
Dependency Updates
Updated (7 direct dependencies)
Transitive Updates
The remaining 15 updates from issue #10 are transitive dependencies that update automatically via the BOM and AGP versions.
Android SDK Version Tracking
New workflow:
reusable-android-sdk-version-checker.ymlAdds automated tracking of Android SDK versions (compileSdk/targetSdk) to the monthly master sanity check.
What it does:
app/build.gradle.ktsoutdated-android-sdkif outdatedMaintenance:
When Google releases new Android versions, update:
Why:
Before this, SDK version bumps weren't tracked automatically. We'd discover we were behind when Google Play started warning about minimum target SDK requirements.
Unit Test Fix
Fixed: 3 failing tests in
WidgetStateResolverTestRoot cause:
WidgetStateResolver.resolve()callsLog.d()for battery debug logging. In unit tests, unmocked Android framework methods throw exceptions.Solution: Added
testOptions.unitTests.isReturnDefaultValues = truetobuild.gradle.kts. This is the standard Android approach for unit tests that use framework logging.Test results:
Testing
✅ Clean build verified:
./gradlew clean build✅ All unit tests pass:
./gradlew testDebugUnitTest(79/79)✅ Debug + Release assemblies successful
Closes
Closes #10