Introduce a stardoc test for Python.

RELNOTES: None
PiperOrigin-RevId: 250960882
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
index cff1161..952a3c7 100644
--- a/src/test/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -187,6 +187,14 @@
     skydoc = "//src/main/java/com/google/devtools/build/skydoc",
 )
 
+skydoc_test(
+    name = "py_rule_test",
+    golden_file = "testdata/py_rule_test/golden.txt",
+    input_file = "testdata/py_rule_test/input.bzl",
+    skydoc = "//src/main/java/com/google/devtools/build/skydoc",
+    whitelisted_symbols = ["py_related_rule"],
+)
+
 genrule(
     name = "generate_bzl_test_dep",
     srcs = ["testdata/generated_bzl_test/dep.bzl.tpl"],
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/golden.txt
new file mode 100644
index 0000000..76ffdb8
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/golden.txt
@@ -0,0 +1,81 @@
+<!-- Generated with Stardoc: http://skydoc.bazel.build -->
+
+<a name="#py_related_rule"></a>
+
+## py_related_rule
+
+<pre>
+py_related_rule(<a href="#py_related_rule-name">name</a>, <a href="#py_related_rule-fifth">fifth</a>, <a href="#py_related_rule-first">first</a>, <a href="#py_related_rule-fourth">fourth</a>, <a href="#py_related_rule-second">second</a>, <a href="#py_related_rule-sixth">sixth</a>, <a href="#py_related_rule-third">third</a>)
+</pre>
+
+This rule does python-related things.
+
+### Attributes
+
+<table class="params-table">
+  <colgroup>
+    <col class="col-param" />
+    <col class="col-description" />
+  </colgroup>
+  <tbody>
+    <tr id="py_related_rule-name">
+      <td><code>name</code></td>
+      <td>
+        <a href="https://bazel.build/docs/build-ref.html#name">Name</a>; required
+        <p>
+          A unique name for this target.
+        </p>
+      </td>
+    </tr>
+    <tr id="py_related_rule-fifth">
+      <td><code>fifth</code></td>
+      <td>
+        Boolean; optional
+        <p>
+          Hey look, its the fifth thing!
+        </p>
+      </td>
+    </tr>
+    <tr id="py_related_rule-first">
+      <td><code>first</code></td>
+      <td>
+        <a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; required
+        <p>
+          this is the first doc string!
+        </p>
+      </td>
+    </tr>
+    <tr id="py_related_rule-fourth">
+      <td><code>fourth</code></td>
+      <td>
+        Boolean; optional
+        <p>
+          the fourth doc string.
+        </p>
+      </td>
+    </tr>
+    <tr id="py_related_rule-second">
+      <td><code>second</code></td>
+      <td>
+        <a href="https://bazel.build/docs/skylark/lib/dict.html">Dictionary: String -> String</a>; required
+      </td>
+    </tr>
+    <tr id="py_related_rule-sixth">
+      <td><code>sixth</code></td>
+      <td>
+        List of integers; optional
+        <p>
+          it's the sixth thing.
+        </p>
+      </td>
+    </tr>
+    <tr id="py_related_rule-third">
+      <td><code>third</code></td>
+      <td>
+        <a href="https://bazel.build/docs/build-ref.html#labels">Label</a>; required
+      </td>
+    </tr>
+  </tbody>
+</table>
+
+
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/input.bzl
new file mode 100644
index 0000000..0d6bc16
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/py_rule_test/input.bzl
@@ -0,0 +1,32 @@
+"""The input file for the python rule test"""
+
+def exercise_the_api():
+    var1 = PyRuntimeInfo
+    var2 = PyInfo
+
+exercise_the_api()
+
+def my_rule_impl(ctx):
+    return []
+
+py_related_rule = rule(
+    implementation = my_rule_impl,
+    doc = "This rule does python-related things.",
+    attrs = {
+        "first": attr.label(
+            mandatory = True,
+            doc = "this is the first doc string!",
+            allow_single_file = True,
+        ),
+        "second": attr.string_dict(mandatory = True),
+        "third": attr.output(mandatory = True),
+        "fourth": attr.bool(default = False, doc = "the fourth doc string.", mandatory = False),
+        "fifth": attr.bool(default = True, doc = "Hey look, its the fifth thing!"),
+        "sixth": attr.int_list(
+            default = range(10),
+            doc = "it's the sixth thing.",
+            mandatory = False,
+        ),
+        "_hidden": attr.string(),
+    },
+)