Add test suite tests for handling hidden packages
Bug: 312028307
Test: ./gradlew
Change-Id: Ie2c275301fa229cef4cabb73acc840276e974f24
diff --git a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BaseModelTest.kt b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BaseModelTest.kt
index ad51260..f78ea62 100644
--- a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BaseModelTest.kt
+++ b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/BaseModelTest.kt
@@ -109,8 +109,12 @@
throw IllegalStateException("Must provide at least one source file")
}
- // Make sure that all the test files are the same InputFormat.
- val byInputFormat = testFiles.groupBy { InputFormat.fromFilename(it.targetRelativePath) }
+ val (htmlFiles, nonHtmlFiles) =
+ testFiles.partition { it.targetRelativePath.endsWith(".html") }
+
+ // Make sure that all the test files are the same InputFormat. Ignore HTML files.
+ val byInputFormat = nonHtmlFiles.groupBy { InputFormat.fromFilename(it.targetRelativePath) }
+
val inputFormatCount = byInputFormat.size
if (inputFormatCount != 1) {
throw IllegalStateException(
@@ -120,14 +124,14 @@
)
byInputFormat.forEach { (format, files) ->
append(" $format\n")
- files.forEach { append(" $it") }
+ files.forEach { append(" $it\n") }
}
}
)
}
val (inputFormat, files) = byInputFormat.entries.single()
- return InputSet(inputFormat, files)
+ return InputSet(inputFormat, files + htmlFiles)
}
/**
diff --git a/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/packageitem/CommonPackageItemTest.kt b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/packageitem/CommonPackageItemTest.kt
new file mode 100644
index 0000000..94208ae
--- /dev/null
+++ b/metalava-model-testsuite/src/main/java/com/android/tools/metalava/model/testsuite/packageitem/CommonPackageItemTest.kt
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2023 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.tools.metalava.model.testsuite.packageitem
+
+import com.android.tools.metalava.model.testsuite.BaseModelTest
+import com.android.tools.metalava.model.testsuite.TestParameters
+import com.android.tools.metalava.testing.html
+import com.android.tools.metalava.testing.java
+import kotlin.test.assertEquals
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+
+@RunWith(Parameterized::class)
+class CommonPackageItemTest(parameters: TestParameters) : BaseModelTest(parameters) {
+
+ @Test
+ fun `Test @hide in package html`() {
+ runSourceCodebaseTest(
+ inputSet(
+ html(
+ "src/test/pkg/package.html",
+ """
+ <HTML>
+ <BODY>
+ @hide
+ </BODY>
+ </HTML>
+ """
+ .trimIndent(),
+ ),
+ java(
+ """
+ package test.pkg;
+
+ public class Foo {}
+ """
+ .trimIndent()
+ ),
+ ),
+ ) { codebase ->
+ val packageItem = codebase.assertPackage("test.pkg")
+ assertEquals(true, packageItem.originallyHidden)
+ }
+ }
+
+ @Test
+ fun `Test @hide in package info`() {
+ runSourceCodebaseTest(
+ inputSet(
+ java(
+ """
+ /**
+ * @hide
+ */
+ package test.pkg;
+ """
+ .trimIndent()
+ ),
+ java(
+ """
+ package test.pkg;
+
+ public class Foo {}
+ """
+ .trimIndent()
+ ),
+ ),
+ ) { codebase ->
+ val packageItem = codebase.assertPackage("test.pkg")
+ assertEquals(true, packageItem.originallyHidden)
+ }
+ }
+}
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 04282c6..5c3e194 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
@@ -11,6 +11,10 @@
MethodItem superMethods() on simple method[turbine,java]
MethodItem type[turbine,java]
+com.android.tools.metalava.model.testsuite.packageitem.CommonPackageItemTest
+ Test @hide in package html[turbine,java]
+ Test @hide in package info[turbine,java]
+
com.android.tools.metalava.model.testsuite.typeitem.CommonTypeItemTest
Test array of type with parameter used as type parameter[turbine,java]
Test class array types[turbine,java]