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]