diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index bb1b1f17..37ea4d2e 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -17,10 +17,10 @@ jobs: steps: - uses: actions/checkout@v7 - - name: set up JDK 17 + - name: set up JDK 21 uses: actions/setup-java@v6 with: - java-version: '17' + java-version: '21' distribution: 'temurin' - name: Set up Gradle uses: gradle/actions/setup-gradle@v6 diff --git a/CLAUDE.md b/CLAUDE.md index 2bed59ed..068b79d9 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,7 +10,7 @@ app filtering by package name/signature/regex, and dark mode. - **Package**: `de.psdev.devdrawer` - **Min SDK**: 26 | **Target/Compile SDK**: 37 -- **Language**: Kotlin | **JVM target**: 17 +- **Language**: Kotlin | **JVM target**: 21 (JDK 21 toolchain; CI uses Temurin 21) - **Debug build suffix**: `.debug` (so debug and release can coexist on device) ## Common Commands diff --git a/app/build.gradle b/app/build.gradle index 4cd92090..39f1e498 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -37,16 +37,20 @@ android { buildConfig true } compileOptions { - targetCompatibility JavaVersion.VERSION_17 + targetCompatibility JavaVersion.VERSION_21 } kotlin { compilerOptions { - jvmTarget = JvmTarget.JVM_17 + jvmTarget = JvmTarget.JVM_21 } } testOptions { unitTests { includeAndroidResources = true + all { + // Robolectric reaches into FileDescriptor internals, which Java 17+ only allows when opened explicitly. + jvmArgs '--add-opens=java.base/java.io=ALL-UNNAMED', '--add-exports=java.base/jdk.internal.access=ALL-UNNAMED' + } } } sourceSets { @@ -106,7 +110,7 @@ android { java { toolchain { - languageVersion = JavaLanguageVersion.of(17) + languageVersion = JavaLanguageVersion.of(21) } } diff --git a/app/src/test/java/de/psdev/devdrawer/DialogStringResourcesTest.kt b/app/src/test/java/de/psdev/devdrawer/DialogStringResourcesTest.kt index 1ad131fc..e15f443b 100644 --- a/app/src/test/java/de/psdev/devdrawer/DialogStringResourcesTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/DialogStringResourcesTest.kt @@ -26,8 +26,7 @@ import org.robolectric.annotation.Config * Dialog text comes from string resources, so it is translated: under a German locale every dialog reads German. */ @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33], qualifiers = "de") +@Config(qualifiers = "de") class DialogStringResourcesTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/GermanTranslationTest.kt b/app/src/test/java/de/psdev/devdrawer/GermanTranslationTest.kt index 8ac4a1b7..c42f160c 100644 --- a/app/src/test/java/de/psdev/devdrawer/GermanTranslationTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/GermanTranslationTest.kt @@ -9,8 +9,7 @@ import org.robolectric.RuntimeEnvironment import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33], qualifiers = "de") +@Config(qualifiers = "de") class GermanTranslationTest { private val context: Context = RuntimeEnvironment.getApplication() diff --git a/app/src/test/java/de/psdev/devdrawer/RobolectricSdkTest.kt b/app/src/test/java/de/psdev/devdrawer/RobolectricSdkTest.kt new file mode 100644 index 00000000..74986e75 --- /dev/null +++ b/app/src/test/java/de/psdev/devdrawer/RobolectricSdkTest.kt @@ -0,0 +1,17 @@ +package de.psdev.devdrawer + +import android.os.Build +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner + +/** Guards robolectric.properties: the tests should run on a current Android, not an old fallback. */ +@RunWith(RobolectricTestRunner::class) +class RobolectricSdkTest { + + @Test + fun `given the test setup, when a Robolectric test runs, then it runs on Android 16`() { + assertEquals(36, Build.VERSION.SDK_INT) + } +} diff --git a/app/src/test/java/de/psdev/devdrawer/about/AboutScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/about/AboutScreenTest.kt index 719b7803..8c38c59f 100644 --- a/app/src/test/java/de/psdev/devdrawer/about/AboutScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/about/AboutScreenTest.kt @@ -12,12 +12,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.Shadows.shadowOf -import org.robolectric.annotation.Config import org.robolectric.shadows.ShadowToast @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class AboutScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/analytics/AnalyticsOptInCardTest.kt b/app/src/test/java/de/psdev/devdrawer/analytics/AnalyticsOptInCardTest.kt index b8543580..3a236e48 100644 --- a/app/src/test/java/de/psdev/devdrawer/analytics/AnalyticsOptInCardTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/analytics/AnalyticsOptInCardTest.kt @@ -15,11 +15,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class AnalyticsOptInCardTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/apps/AppMatchingTest.kt b/app/src/test/java/de/psdev/devdrawer/apps/AppMatchingTest.kt index 816bd671..30b0f1c9 100644 --- a/app/src/test/java/de/psdev/devdrawer/apps/AppMatchingTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/apps/AppMatchingTest.kt @@ -10,11 +10,8 @@ import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class AppMatchingTest { private val devDrawer = PackageHashInfo("de.psdev.devdrawer", firstInstallTime = 1, lastUpdateTime = 30, signatureHashSha256 = "key-a") diff --git a/app/src/test/java/de/psdev/devdrawer/appwidget/AppScreensTest.kt b/app/src/test/java/de/psdev/devdrawer/appwidget/AppScreensTest.kt index 64729338..8dcdde91 100644 --- a/app/src/test/java/de/psdev/devdrawer/appwidget/AppScreensTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/appwidget/AppScreensTest.kt @@ -11,11 +11,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class AppScreensTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetContentLoaderTest.kt b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetContentLoaderTest.kt index eb7c52dc..c70009f9 100644 --- a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetContentLoaderTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetContentLoaderTest.kt @@ -12,11 +12,8 @@ import org.junit.Assert.assertNull import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetContentLoaderTest { private val zeta = PackageHashInfo("com.example.zeta", firstInstallTime = 1, lastUpdateTime = 30, signatureHashSha256 = "key") diff --git a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetDeletionTest.kt b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetDeletionTest.kt index 4b1c0c80..da4e9adf 100644 --- a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetDeletionTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetDeletionTest.kt @@ -20,11 +20,8 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.Shadows.shadowOf -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetDeletionTest { private val application: Application = ApplicationProvider.getApplicationContext() diff --git a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetTapHandlerTest.kt b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetTapHandlerTest.kt index 98b01892..05e56563 100644 --- a/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetTapHandlerTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/appwidget/WidgetTapHandlerTest.kt @@ -14,12 +14,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.Shadows.shadowOf -import org.robolectric.annotation.Config import org.robolectric.shadows.ShadowToast @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetTapHandlerTest { private val application: Application = ApplicationProvider.getApplicationContext() diff --git a/app/src/test/java/de/psdev/devdrawer/appwidget/glance/DevDrawerWidgetContentTest.kt b/app/src/test/java/de/psdev/devdrawer/appwidget/glance/DevDrawerWidgetContentTest.kt index 8401fcae..d08e7f55 100644 --- a/app/src/test/java/de/psdev/devdrawer/appwidget/glance/DevDrawerWidgetContentTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/appwidget/glance/DevDrawerWidgetContentTest.kt @@ -10,11 +10,8 @@ import de.psdev.devdrawer.database.WidgetHeaderColor import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class DevDrawerWidgetContentTest { private fun state(apps: List, hiddenAppCount: Int = 0) = WidgetUiState( diff --git a/app/src/test/java/de/psdev/devdrawer/database/MigrationFrom3To4Test.kt b/app/src/test/java/de/psdev/devdrawer/database/MigrationFrom3To4Test.kt index e3210406..03f8f846 100644 --- a/app/src/test/java/de/psdev/devdrawer/database/MigrationFrom3To4Test.kt +++ b/app/src/test/java/de/psdev/devdrawer/database/MigrationFrom3To4Test.kt @@ -9,11 +9,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class MigrationFrom3To4Test { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/WidgetProfilesViewModelTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/WidgetProfilesViewModelTest.kt index 762b3551..163f7a21 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/WidgetProfilesViewModelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/WidgetProfilesViewModelTest.kt @@ -28,12 +28,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config @OptIn(ExperimentalCoroutinesApi::class) @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetProfilesViewModelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/AddAppSignatureFilterSheetTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/AddAppSignatureFilterSheetTest.kt index 1e58be07..cbbfa2c6 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/AddAppSignatureFilterSheetTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/AddAppSignatureFilterSheetTest.kt @@ -12,11 +12,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class AddAppSignatureFilterSheetTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/DialogButtonLabelTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/DialogButtonLabelTest.kt index 81950cce..b2765b8a 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/DialogButtonLabelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/DialogButtonLabelTest.kt @@ -9,14 +9,11 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config /** * Dialog buttons use the string resources' sentence case ("Cancel"), not upper-cased labels ("CANCEL"). */ @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class DialogButtonLabelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/FilterTypeLabelTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/FilterTypeLabelTest.kt index 49bd9265..84b8a610 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/FilterTypeLabelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/FilterTypeLabelTest.kt @@ -10,15 +10,12 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config /** * The filter type labels ("Package name", "App signature") are shown in sentence case, * neither upper-cased ("PACKAGE NAME") nor lower-cased ("package name"). */ @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class FilterTypeLabelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/PackagePatternSheetTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/PackagePatternSheetTest.kt index 52ea5ec9..ae3095b1 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/PackagePatternSheetTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/PackagePatternSheetTest.kt @@ -14,11 +14,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class PackagePatternSheetTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorScreenTest.kt index bae51506..159f639f 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorScreenTest.kt @@ -9,11 +9,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetProfileEditorScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorViewModelTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorViewModelTest.kt index 1b4d64d4..8ff23e46 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorViewModelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/editor/WidgetProfileEditorViewModelTest.kt @@ -27,12 +27,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config @OptIn(ExperimentalCoroutinesApi::class) @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetProfileEditorViewModelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/profiles/ui/list/WidgetProfileListScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/profiles/ui/list/WidgetProfileListScreenTest.kt index 9558d9ac..1d209be8 100644 --- a/app/src/test/java/de/psdev/devdrawer/profiles/ui/list/WidgetProfileListScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/profiles/ui/list/WidgetProfileListScreenTest.kt @@ -8,11 +8,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetProfileListScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/receivers/PinWidgetSuccessReceiverTest.kt b/app/src/test/java/de/psdev/devdrawer/receivers/PinWidgetSuccessReceiverTest.kt index f97d7dc6..b607bc61 100644 --- a/app/src/test/java/de/psdev/devdrawer/receivers/PinWidgetSuccessReceiverTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/receivers/PinWidgetSuccessReceiverTest.kt @@ -9,11 +9,8 @@ import org.junit.Assert.assertNull import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class PinWidgetSuccessReceiverTest { @After diff --git a/app/src/test/java/de/psdev/devdrawer/settings/SettingsScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/settings/SettingsScreenTest.kt index c86b143a..cb95e258 100644 --- a/app/src/test/java/de/psdev/devdrawer/settings/SettingsScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/settings/SettingsScreenTest.kt @@ -8,11 +8,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class SettingsScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/settings/SortOrderLabelTest.kt b/app/src/test/java/de/psdev/devdrawer/settings/SortOrderLabelTest.kt index e9acbb1f..d5d843a2 100644 --- a/app/src/test/java/de/psdev/devdrawer/settings/SortOrderLabelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/settings/SortOrderLabelTest.kt @@ -7,11 +7,8 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class SortOrderLabelTest { @Test diff --git a/app/src/test/java/de/psdev/devdrawer/ui/theme/ShapeTest.kt b/app/src/test/java/de/psdev/devdrawer/ui/theme/ShapeTest.kt index 126689a7..5a7eb115 100644 --- a/app/src/test/java/de/psdev/devdrawer/ui/theme/ShapeTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/ui/theme/ShapeTest.kt @@ -8,11 +8,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class ShapeTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/ui/theme/WidgetHeaderPaletteTest.kt b/app/src/test/java/de/psdev/devdrawer/ui/theme/WidgetHeaderPaletteTest.kt index ca4f976a..0c661c3c 100644 --- a/app/src/test/java/de/psdev/devdrawer/ui/theme/WidgetHeaderPaletteTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/ui/theme/WidgetHeaderPaletteTest.kt @@ -8,11 +8,8 @@ import org.junit.Assert.assertTrue import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetHeaderPaletteTest { private val fixedColors = WidgetHeaderColor.entries - WidgetHeaderColor.DYNAMIC diff --git a/app/src/test/java/de/psdev/devdrawer/utils/ColorsKtTest.kt b/app/src/test/java/de/psdev/devdrawer/utils/ColorsKtTest.kt index fb07d24d..1c5f83c9 100644 --- a/app/src/test/java/de/psdev/devdrawer/utils/ColorsKtTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/utils/ColorsKtTest.kt @@ -9,8 +9,7 @@ import org.robolectric.RobolectricTestRunner import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(manifest = Config.NONE, sdk = [33]) +@Config(manifest = Config.NONE) class ColorsKtTest { @Test diff --git a/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorScreenTest.kt index 57798aaf..516c7512 100644 --- a/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorScreenTest.kt @@ -9,11 +9,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetEditorScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorViewModelTest.kt b/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorViewModelTest.kt index dffd89d2..71a3cbb4 100644 --- a/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorViewModelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/widgets/ui/editor/WidgetEditorViewModelTest.kt @@ -24,12 +24,9 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @OptIn(ExperimentalCoroutinesApi::class) @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetEditorViewModelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenTest.kt b/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenTest.kt index f5f0bea1..b2671ebe 100644 --- a/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenTest.kt @@ -9,11 +9,8 @@ import org.junit.Rule import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner -import org.robolectric.annotation.Config @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetListScreenTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenViewModelTest.kt b/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenViewModelTest.kt index 0f01bee5..764dc410 100644 --- a/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenViewModelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/widgets/ui/list/WidgetListScreenViewModelTest.kt @@ -20,12 +20,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config @OptIn(ExperimentalCoroutinesApi::class) @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetListScreenViewModelTest { @get:Rule diff --git a/app/src/test/java/de/psdev/devdrawer/widgets/ui/setup/WidgetSetupViewModelTest.kt b/app/src/test/java/de/psdev/devdrawer/widgets/ui/setup/WidgetSetupViewModelTest.kt index 739af6c0..03ca8374 100644 --- a/app/src/test/java/de/psdev/devdrawer/widgets/ui/setup/WidgetSetupViewModelTest.kt +++ b/app/src/test/java/de/psdev/devdrawer/widgets/ui/setup/WidgetSetupViewModelTest.kt @@ -24,12 +24,9 @@ import org.junit.Test import org.junit.runner.RunWith import org.robolectric.RobolectricTestRunner import org.robolectric.RuntimeEnvironment -import org.robolectric.annotation.Config @OptIn(ExperimentalCoroutinesApi::class) @RunWith(RobolectricTestRunner::class) -// SDK 36 requires Java 21; use SDK 33 which is compatible with the project's Java 17 toolchain. -@Config(sdk = [33]) class WidgetSetupViewModelTest { @get:Rule diff --git a/app/src/test/resources/robolectric.properties b/app/src/test/resources/robolectric.properties new file mode 100644 index 00000000..6acdc3b7 --- /dev/null +++ b/app/src/test/resources/robolectric.properties @@ -0,0 +1,3 @@ +# Robolectric runs the tests on Android 16 (SDK 36). The app targets SDK 37, but Compose UI tests can't inject input +# there yet: androidx.test calls InputManager.getInstance(), which Android 17 removed. +sdk=36