Add test for classes from ClassPath
Bug: 299048934
Test: ./gradlew
Change-Id: Ie9f8c0e326058747dbb9f51af3467223fd3cc8cf
diff --git a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
index a7c445c..c2248a8 100644
--- a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
+++ b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BootstrapSourceModelProviderTest.kt
@@ -282,4 +282,33 @@
assertEquals(true, fieldMod3.isPackagePrivate())
}
}
+
+ @Test
+ /**
+ * Check for the following:
+ * 1) If a class from classpath is needed by some source class, the corresponding classItem is
+ * created
+ * 2) While classpath may contain a lot of classes , only create classItems for the classes
+ * required by source classes directly or indirectly (e.g. superclass of superclass)
+ */
+ fun `130 - check classes from classpath`() {
+ runSourceCodebaseTest(
+ java(
+ """
+ package test.pkg;
+
+ import java.util.Date;
+
+ class Test extends Date{}
+ """
+ ),
+ ) { codebase ->
+ val classItem = codebase.assertClass("test.pkg.Test")
+ val utilClassItem = codebase.assertClass("java.util.Date")
+ val objectClassItem = codebase.assertClass("java.lang.Object")
+ assertEquals(utilClassItem, classItem.superClass())
+ assertEquals(objectClassItem, utilClassItem.superClass())
+ assertEquals(3, utilClassItem.allInterfaces().count())
+ }
+ }
}
diff --git a/metalava-model-turbine/src/test/resources/model-test-suite-baseline.txt b/metalava-model-turbine/src/test/resources/model-test-suite-baseline.txt
index 96fd4e5..964fb23 100644
--- a/metalava-model-turbine/src/test/resources/model-test-suite-baseline.txt
+++ b/metalava-model-turbine/src/test/resources/model-test-suite-baseline.txt
@@ -1,6 +1,7 @@
com.android.tools.metalava.model.testsuite.BootstrapSourceModelProviderTest
060 - check method exists[turbine,java]
070 - check constructor exists[turbine,java]
+ 130 - check classes from classpath[turbine,java]
com.android.tools.metalava.model.testsuite.CommonClassItemTest
Find method with type parameterized by two types[turbine,java]