Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 7421e2c

Browse files
committed
tests: revert to using JUnit4 runner but with Mockito
1 parent 1de48ed commit 7421e2c

File tree

4 files changed

+56
-9
lines changed

4 files changed

+56
-9
lines changed

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

android-tree-sitter/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,5 @@ dependencies {
3838
testImplementation(libs.tests.google.truth)
3939
testImplementation(libs.tests.junit)
4040
testImplementation(libs.tests.robolectric)
41+
testImplementation(libs.tests.mockito)
4142
}

android-tree-sitter/src/test/java/com/itsaky/androidide/treesitter/ParserTest.java

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import static com.google.common.truth.Truth.assertThat;
2121
import static com.itsaky.androidide.treesitter.TestUtils.readString;
2222

23+
import android.text.TextUtils;
2324
import com.itsaky.androidide.treesitter.aidl.TSLanguageAidl;
2425
import com.itsaky.androidide.treesitter.java.TSLanguageJava;
2526
import com.itsaky.androidide.treesitter.json.TSLanguageJson;
@@ -33,15 +34,38 @@
3334
import java.util.List;
3435
import java.util.Map;
3536
import java.util.stream.Collectors;
37+
import org.junit.After;
38+
import org.junit.Before;
3639
import org.junit.Test;
3740
import org.junit.runner.RunWith;
38-
import org.robolectric.RobolectricTestRunner;
41+
import org.junit.runners.JUnit4;
42+
import org.mockito.ArgumentMatchers;
43+
import org.mockito.MockedStatic;
44+
import org.mockito.Mockito;
3945

40-
@RunWith(RobolectricTestRunner.class)
46+
@RunWith(JUnit4.class)
4147
public class ParserTest extends TreeSitterTest {
4248

43-
private static String readResource(String... names) {
44-
return readString(Paths.get("./src/test/resources", names));
49+
private MockedStatic<TextUtils> mockedTextUtils;
50+
51+
@Before
52+
public void setupMocks() {
53+
mockedTextUtils = Mockito.mockStatic(TextUtils.class);
54+
mockedTextUtils.when(() -> TextUtils.getTrimmedLength(ArgumentMatchers.anyString()))
55+
.thenAnswer(invocation -> {
56+
final var arguments = invocation.getArguments();
57+
if (arguments == null || arguments.length != 1 || !(arguments[0] instanceof CharSequence)) {
58+
throw new IllegalArgumentException();
59+
}
60+
return getTrimmedLength(((CharSequence) arguments[0]));
61+
});
62+
}
63+
64+
@After
65+
public void releaseMocks() {
66+
if (mockedTextUtils != null) {
67+
mockedTextUtils.close();
68+
}
4569
}
4670

4771
@Test
@@ -219,9 +243,9 @@ public void testAIDLGrammar_interfaceDecl() {
219243
assertThat(rootNode.hasErrors()).isFalse();
220244

221245
//noinspection DataFlowIssue
222-
final var packages = substrings(execQueryGroupByCaptures(
223-
"(package_declaration name: (_) @package)",
224-
TSLanguageAidl.getInstance(), rootNode).get("package"), source);
246+
final var packages = substrings(
247+
execQueryGroupByCaptures("(package_declaration name: (_) @package)",
248+
TSLanguageAidl.getInstance(), rootNode).get("package"), source);
225249
assertThat(packages).containsExactly("com.itsaky.androidide.treesitter.test");
226250

227251
//noinspection DataFlowIssue
@@ -271,7 +295,8 @@ public void testAIDLGrammar_parcelableDecl() {
271295
final var interfaces = substrings(
272296
execQueryGroupByCaptures("(parcelable_declaration name: (_) @parcelable)",
273297
TSLanguageAidl.getInstance(), rootNode).get("parcelable"), source);
274-
assertThat(interfaces).containsExactly("SomethingDefinedSomewhere", "CanWeDefineAsManyAsWeWant", "SomethingParcelable");
298+
assertThat(interfaces).containsExactly("SomethingDefinedSomewhere",
299+
"CanWeDefineAsManyAsWeWant", "SomethingParcelable");
275300

276301
//noinspection DataFlowIssue
277302
final var variables = substrings(
@@ -306,4 +331,24 @@ private static List<String> substrings(List<TSNode> nodes, String source) {
306331
.map(node -> source.substring(node.getStartByte() / 2, node.getEndByte() / 2))
307332
.collect(Collectors.toList());
308333
}
334+
335+
private static int getTrimmedLength(CharSequence s) {
336+
int len = s.length();
337+
338+
int start = 0;
339+
while (start < len && s.charAt(start) <= ' ') {
340+
start++;
341+
}
342+
343+
int end = len;
344+
while (end > start && s.charAt(end - 1) <= ' ') {
345+
end--;
346+
}
347+
348+
return end - start;
349+
}
350+
351+
private static String readResource(String... names) {
352+
return readString(Paths.get("./src/test/resources", names));
353+
}
309354
}

gradle/libs.versions.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ tests-google-truth = { module = "com.google.truth:truth", version = "1.1.5" }
1515
tests-androidx-ext-junit = { module = "androidx.test.ext:junit", version = "1.1.5" }
1616
tests-androidx-espresso-core = { module = "androidx.test.espresso:espresso-core", version = "3.5.1" }
1717
tests-robolectric = { module = "org.robolectric:robolectric", version = "4.10.3" }
18+
tests-mockito = { module = "org.mockito:mockito-core", version = "5.4.0" }
1819

1920
gradle-android = { module = "com.android.tools.build:gradle", version.ref = "agp" }
2021

0 commit comments

Comments
 (0)