Skip to content

Commit 2182c3e

Browse files
david-allisoncriticalAY
authored andcommitted
refactor(compat): move tests to ":compat"
This makes use of test fixtures. See fbf2dd0 Assisted-by: Claude Opus 4.6 Issue 20547
1 parent 80a7a55 commit 2182c3e

17 files changed

Lines changed: 32 additions & 12 deletions

File tree

AnkiDroid/build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -458,6 +458,8 @@ dependencies {
458458
implementation libs.leakcanary.android
459459

460460
testImplementation project(":libanki:testutils")
461+
testImplementation testFixtures(project(":common"))
462+
testImplementation testFixtures(project(":compat"))
461463

462464
// A path for a testing library which provide Parameterized Test
463465
testImplementation libs.junit.jupiter

AnkiDroid/jacoco.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ tasks.register('jacocoTestReport', JacocoReport) {
129129
}
130130

131131
// modules do not yet support flavors (play/full)
132-
def modulesToUnitTest = [":common", ":libanki"]
132+
def modulesToUnitTest = [":common", ":libanki", ":compat"]
133133

134134
// A unit-test only report task
135135
tasks.register('jacocoUnitTestReport', JacocoReport) {report ->

common/build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ android {
1010
// but we can define files in 'com.ichi2.anki' inside 'common'
1111
// even with this namespace
1212
namespace = "com.ichi2.anki.common"
13+
testFixtures.enable = true
1314
compileSdk =
1415
libs.versions.compileSdk
1516
.get()
@@ -61,4 +62,11 @@ dependencies {
6162
androidTestImplementation(libs.androidx.test.junit)
6263
androidTestImplementation(libs.androidx.espresso.core)
6364
testImplementation(kotlin("test"))
65+
66+
testFixturesImplementation(libs.hamcrest)
67+
testFixturesImplementation(libs.jakewharton.timber)
68+
testFixturesImplementation(libs.androidx.annotation)
69+
// Required so the ExperimentalCoroutinesApi opt-in (applied globally) doesn't cause
70+
// an "unresolved" warning, which is treated as an error due to allWarningsAsErrors
71+
testFixturesImplementation(libs.kotlinx.coroutines.core)
6472
}

AnkiDroid/src/test/java/com/ichi2/anki/TestUtils.kt renamed to common/src/testFixtures/java/com/ichi2/anki/TestUtils.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,6 @@ package com.ichi2.anki
1818

1919
import com.ichi2.utils.FileOperation.Companion.getFileContentsBytes
2020
import java.io.File
21-
import java.lang.Exception
22-
import java.lang.StringBuilder
2321
import java.security.MessageDigest
2422

2523
open class TestUtils {

AnkiDroid/src/test/java/com/ichi2/testutils/FileSystemUtils.kt renamed to common/src/testFixtures/java/com/ichi2/testutils/FileSystemUtils.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.ichi2.testutils
1818

1919
import androidx.annotation.CheckResult
20-
import org.acra.util.IOUtils
2120
import org.hamcrest.CoreMatchers
2221
import org.hamcrest.MatcherAssert
2322
import timber.log.Timber
@@ -129,7 +128,7 @@ fun createTransientFile(
129128
.pathString,
130129
).also {
131130
it.deleteOnExit()
132-
IOUtils.writeStringToFile(it, content)
131+
it.writeText(content)
133132
}
134133

135134
/** Creates a sub-directory with the given name which is deleted on exit */

AnkiDroid/src/test/java/com/ichi2/testutils/FileUtil.kt renamed to common/src/testFixtures/java/com/ichi2/testutils/FileUtil.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.ichi2.testutils
1818

1919
import com.ichi2.anki.model.Directory
20-
import org.acra.util.IOUtils
2120
import java.io.File
2221
import java.util.Scanner
2322

@@ -74,7 +73,7 @@ fun File.addTempFile(
7473
content: String = "default content",
7574
): File =
7675
File(this, fileName).also {
77-
IOUtils.writeStringToFile(it, content)
76+
it.writeText(content)
7877
it.deleteOnExit()
7978
}
8079

AnkiDroid/src/test/java/com/ichi2/testutils/HamcrestUtils.kt renamed to common/src/testFixtures/java/com/ichi2/testutils/HamcrestUtils.kt

File renamed without changes.

AnkiDroid/src/test/java/com/ichi2/utils/FileOperation.kt renamed to common/src/testFixtures/java/com/ichi2/utils/FileOperation.kt

File renamed without changes.

compat/build.gradle.kts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ plugins {
77

88
android {
99
namespace = "com.ichi2.anki.compat"
10+
testFixtures.enable = true
1011
compileSdk =
1112
libs.versions.compileSdk
1213
.get()
@@ -40,9 +41,23 @@ dependencies {
4041
implementation(libs.androidx.appcompat)
4142
implementation(libs.jakewharton.timber)
4243

44+
testImplementation(testFixtures(project(":common")))
45+
testImplementation(testFixtures(project(":compat")))
4346
testImplementation(libs.junit.jupiter)
4447
testImplementation(libs.junit.vintage.engine)
4548
testImplementation(libs.hamcrest)
4649
testImplementation(libs.junit.platform.launcher)
50+
testImplementation(libs.mockk)
51+
testImplementation(libs.mockito.kotlin)
4752
testImplementation(kotlin("test"))
53+
54+
testFixturesImplementation(project(":common"))
55+
testFixturesImplementation(testFixtures(project(":common")))
56+
testFixturesImplementation(libs.mockk)
57+
testFixturesImplementation(libs.mockito.kotlin)
58+
testFixturesImplementation(libs.junit.vintage.engine)
59+
testFixturesImplementation(kotlin("test"))
60+
// Required so the ExperimentalCoroutinesApi opt-in (applied globally) doesn't cause
61+
// an "unresolved" warning, which is treated as an error due to allWarningsAsErrors
62+
testFixturesImplementation(libs.kotlinx.coroutines.core)
4863
}

AnkiDroid/src/test/java/com/ichi2/anki/model/DirectoryTest.kt renamed to compat/src/test/java/com/ichi2/anki/model/DirectoryTest.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import com.ichi2.anki.compat.hasFiles
2020
import com.ichi2.compat.Test21And26
2121
import com.ichi2.testutils.HamcrestUtils.containsInAnyOrder
2222
import com.ichi2.testutils.withTempFile
23-
import org.acra.util.IOUtils
2423
import org.hamcrest.CoreMatchers.equalTo
2524
import org.hamcrest.CoreMatchers.not
2625
import org.hamcrest.CoreMatchers.nullValue
@@ -106,7 +105,7 @@ class DirectoryTest : Test21And26() {
106105
@Test
107106
fun has_files_is_true_if_file() {
108107
val dir = createValidTempDir()
109-
IOUtils.writeStringToFile(File(dir.directory, "aa.txt"), "aa")
108+
File(dir.directory, "aa.txt").writeText("aa")
110109
MatcherAssert.assertThat(
111110
"non-empty directory should have files",
112111
dir.hasFiles(),

0 commit comments

Comments
 (0)