diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/skydoc')
13 files changed, 450 insertions, 56 deletions
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD index c12329f597..31b365d394 100644 --- a/src/test/java/com/google/devtools/build/skydoc/BUILD +++ b/src/test/java/com/google/devtools/build/skydoc/BUILD @@ -22,6 +22,7 @@ java_test( "//src/main/java/com/google/devtools/build/lib:syntax", "//src/main/java/com/google/devtools/build/lib/vfs", "//src/main/java/com/google/devtools/build/skydoc:skydoc_lib", + "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi", "//src/main/java/com/google/devtools/build/skydoc/rendering", "//src/test/java/com/google/devtools/build/lib:testutil", "//src/test/java/com/google/devtools/build/lib/skylark:testutil", @@ -97,3 +98,10 @@ skydoc_test( input_file = "testdata/misc_apis_test/input.bzl", skydoc = "//src/main/java/com/google/devtools/build/skydoc", ) + +skydoc_test( + name = "attribute_types_test", + golden_file = "testdata/attribute_types_test/golden.txt", + input_file = "testdata/attribute_types_test/input.bzl", + skydoc = "//src/main/java/com/google/devtools/build/skydoc", +) diff --git a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java index 89327e3f26..5bf7a95704 100644 --- a/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java +++ b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java @@ -24,6 +24,7 @@ import com.google.devtools.build.lib.skylark.util.SkylarkTestCase; import com.google.devtools.build.lib.syntax.ParserInputSource; import com.google.devtools.build.lib.vfs.FileSystemUtils; import com.google.devtools.build.lib.vfs.Path; +import com.google.devtools.build.skydoc.fakebuildapi.FakeDescriptor.Type; import com.google.devtools.build.skydoc.rendering.RuleInfo; import java.io.IOException; import java.nio.file.Paths; @@ -67,10 +68,10 @@ public final class SkydocTest extends SkylarkTestCase { " doc = 'This is my rule. It does stuff.',", " implementation = rule_impl,", " attrs = {", - " 'first': attr.label(mandatory=True, allow_files=True, single_file=True),", - " 'second': attr.string_dict(mandatory=True),", - " 'third': attr.output(mandatory=True),", - " 'fourth': attr.bool(default=False, mandatory=False),", + " 'a': attr.label(mandatory=True, allow_files=True, single_file=True),", + " 'b': attr.string_dict(mandatory=True),", + " 'c': attr.output(mandatory=True),", + " 'd': attr.bool(default=False, mandatory=False),", " },", ")"); @@ -88,7 +89,13 @@ public final class SkydocTest extends SkylarkTestCase { assertThat(ruleInfo.getKey()).isEqualTo("my_rule"); assertThat(ruleInfo.getValue().getDocString()).isEqualTo("This is my rule. It does stuff."); assertThat(getAttrNames(ruleInfo.getValue())).containsExactly( - "first", "fourth", "second", "third").inOrder(); + "name", "a", "b", "c", "d").inOrder(); + assertThat(getAttrTypes(ruleInfo.getValue())).containsExactly( + Type.STRING.getDescription(), + Type.LABEL.getDescription(), + Type.STRING_DICT.getDescription(), + Type.LABEL.getDescription(), + Type.BOOLEAN.getDescription()).inOrder(); assertThat(unexportedRuleInfos.build()).isEmpty(); } @@ -97,6 +104,11 @@ public final class SkydocTest extends SkylarkTestCase { .collect(Collectors.toList()); } + private static Iterable<String> getAttrTypes(RuleInfo ruleInfo) { + return ruleInfo.getAttributes().stream().map(attr -> attr.getTypeString()) + .collect(Collectors.toList()); + } + @Test public void testMultipleRuleNames() throws Exception { scratch.file( diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt index e7c4c5f090..a69252b207 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/android_basic_test/golden.txt @@ -2,7 +2,7 @@ ## android_related_rule <pre> -android_related_rule(first, fourth, second, third) +android_related_rule(name, first, fourth, second, third) </pre> This rule does android-related things. @@ -15,21 +15,38 @@ This rule does android-related things. <col class="col-description" /> </colgroup> <tbody> + <tr id="#android_related_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#android_related_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#android_related_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#android_related_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#android_related_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt index 882f540741..4cbc0be44e 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/apple_basic_test/golden.txt @@ -2,7 +2,7 @@ ## apple_related_rule <pre> -apple_related_rule(first, fourth, second, third) +apple_related_rule(name, first, fourth, second, third) </pre> This rule does apple-related things. @@ -15,21 +15,38 @@ This rule does apple-related things. <col class="col-description" /> </colgroup> <tbody> + <tr id="#apple_related_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#apple_related_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#apple_related_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#apple_related_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#apple_related_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt new file mode 100644 index 0000000000..746e3fe229 --- /dev/null +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/golden.txt @@ -0,0 +1,147 @@ +<a name="#my_rule"></a> +## my_rule + +<pre> +my_rule(name, a, b, c, d, e, f, g, h, i, j, k, l, m) +</pre> + +This is my rule. It does stuff. + +### Attributes + +<table class="params-table"> + <colgroup> + <col class="col-param" /> + <col class="col-description" /> + </colgroup> + <tbody> + <tr id="#my_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> + <tr id="#my_rule_a"> + <td><code>a</code></td> + <td> + Boolean; required + <p> + Some bool + </p> + </td> + </tr> + <tr id="#my_rule_b"> + <td><code>b</code></td> + <td> + Integer; required + <p> + Some int + </p> + </td> + </tr> + <tr id="#my_rule_c"> + <td><code>c</code></td> + <td> + List of integers; required + <p> + Some int_list + </p> + </td> + </tr> + <tr id="#my_rule_d"> + <td><code>d</code></td> + <td> + Label; required + <p> + Some label + </p> + </td> + </tr> + <tr id="#my_rule_e"> + <td><code>e</code></td> + <td> + Dictionary: Label -> String; required + <p> + Some label_keyed_string_dict + </p> + </td> + </tr> + <tr id="#my_rule_f"> + <td><code>f</code></td> + <td> + List of labels; required + <p> + Some label_list + </p> + </td> + </tr> + <tr id="#my_rule_g"> + <td><code>g</code></td> + <td> + List of strings; optional + <p> + Some license + </p> + </td> + </tr> + <tr id="#my_rule_h"> + <td><code>h</code></td> + <td> + Label; optional + <p> + Some output + </p> + </td> + </tr> + <tr id="#my_rule_i"> + <td><code>i</code></td> + <td> + List of labels; optional + <p> + Some output_list + </p> + </td> + </tr> + <tr id="#my_rule_j"> + <td><code>j</code></td> + <td> + String; required + <p> + Some string + </p> + </td> + </tr> + <tr id="#my_rule_k"> + <td><code>k</code></td> + <td> + Dictionary: String -> String; required + <p> + Some string_dict + </p> + </td> + </tr> + <tr id="#my_rule_l"> + <td><code>l</code></td> + <td> + List of strings; required + <p> + Some string_list + </p> + </td> + </tr> + <tr id="#my_rule_m"> + <td><code>m</code></td> + <td> + Dictionary: String -> List of strings; optional + <p> + Some string_list_dict + </p> + </td> + </tr> + </tbody> +</table> + + diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl new file mode 100644 index 0000000000..edcef5f043 --- /dev/null +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/attribute_types_test/input.bzl @@ -0,0 +1,22 @@ +def my_rule_impl(ctx): + return struct() + +my_rule = rule( + implementation = my_rule_impl, + doc = "This is my rule. It does stuff.", + attrs = { + "a": attr.bool(mandatory = True, doc = "Some bool"), + "b": attr.int(mandatory = True, doc = "Some int"), + "c": attr.int_list(mandatory = True, doc = "Some int_list"), + "d": attr.label(mandatory = True, doc = "Some label"), + "e": attr.label_keyed_string_dict(mandatory = True, doc = "Some label_keyed_string_dict"), + "f": attr.label_list(mandatory = True, doc = "Some label_list"), + "g": attr.license(mandatory = False, doc = "Some license"), + "h": attr.output(mandatory = False, doc = "Some output"), + "i": attr.output_list(mandatory = False, doc = "Some output_list"), + "j": attr.string(mandatory = True, doc = "Some string"), + "k": attr.string_dict(mandatory = True, doc = "Some string_dict"), + "l": attr.string_list(mandatory = True, doc = "Some string_list"), + "m": attr.string_list_dict(mandatory = False, doc = "Some string_list_dict"), + }, +) diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt index 9674b82f4d..ee379d9e50 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/cpp_basic_test/golden.txt @@ -2,7 +2,7 @@ ## cpp_related_rule <pre> -cpp_related_rule(first, fourth, second, third) +cpp_related_rule(name, first, fourth, second, third) </pre> This rule does cpp-related things. @@ -15,21 +15,38 @@ This rule does cpp-related things. <col class="col-description" /> </colgroup> <tbody> + <tr id="#cpp_related_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#cpp_related_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#cpp_related_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#cpp_related_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#cpp_related_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt index 7ab9fc0247..83f6ea40bf 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt @@ -2,7 +2,7 @@ ## java_related_rule <pre> -java_related_rule(first, fourth, second, third) +java_related_rule(name, first, fourth, second, third) </pre> This rule does java-related things. @@ -15,21 +15,38 @@ This rule does java-related things. <col class="col-description" /> </colgroup> <tbody> + <tr id="#java_related_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#java_related_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#java_related_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#java_related_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#java_related_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt index 0619f29bcb..810c90bfb7 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt @@ -2,7 +2,7 @@ ## my_rule <pre> -my_rule(first, fourth, second, third) +my_rule(name, first, fourth, second, third) </pre> This rule exercises some of the build API. @@ -15,21 +15,38 @@ This rule exercises some of the build API. <col class="col-description" /> </colgroup> <tbody> + <tr id="#my_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#my_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#my_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#my_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#my_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt index 1b2d0a0b52..771e5021e5 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_files_test/golden.txt @@ -2,7 +2,7 @@ ## my_rule <pre> -my_rule(first, second) +my_rule(name, first, second) </pre> This is my rule. It does stuff. @@ -15,13 +15,29 @@ This is my rule. It does stuff. <col class="col-description" /> </colgroup> <tbody> + <tr id="#my_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#my_rule_first"> <td><code>first</code></td> - <td>first my_rule doc string</td> + <td> + Label; required + <p> + first my_rule doc string + </p> + </td> </tr> <tr id="#my_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> </tbody> </table> @@ -31,7 +47,7 @@ This is my rule. It does stuff. ## other_rule <pre> -other_rule(fourth, third) +other_rule(name, fourth, third) </pre> This is another rule. @@ -44,13 +60,29 @@ This is another rule. <col class="col-description" /> </colgroup> <tbody> + <tr id="#other_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#other_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#other_rule_third"> <td><code>third</code></td> - <td>third other_rule doc string</td> + <td> + Label; required + <p> + third other_rule doc string + </p> + </td> </tr> </tbody> </table> @@ -60,7 +92,7 @@ This is another rule. ## yet_another_rule <pre> -yet_another_rule(fifth) +yet_another_rule(name, fifth) </pre> This is yet another rule @@ -73,9 +105,20 @@ This is yet another rule <col class="col-description" /> </colgroup> <tbody> + <tr id="#yet_another_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#yet_another_rule_fifth"> <td><code>fifth</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt index 7d37f798f3..3bf31da608 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/multiple_rules_test/golden.txt @@ -2,7 +2,7 @@ ## my_rule <pre> -my_rule(first, second) +my_rule(name, first, second) </pre> This is my rule. It does stuff. @@ -15,13 +15,26 @@ This is my rule. It does stuff. <col class="col-description" /> </colgroup> <tbody> + <tr id="#my_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#my_rule_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#my_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> </tbody> </table> @@ -31,7 +44,7 @@ This is my rule. It does stuff. ## other_rule <pre> -other_rule(fourth, third) +other_rule(name, fourth, third) </pre> This is another rule. @@ -44,13 +57,26 @@ This is another rule. <col class="col-description" /> </colgroup> <tbody> + <tr id="#other_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#other_rule_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#other_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> @@ -60,7 +86,7 @@ This is another rule. ## yet_another_rule <pre> -yet_another_rule(fifth) +yet_another_rule(name, fifth) </pre> This is yet another rule @@ -73,9 +99,20 @@ This is yet another rule <col class="col-description" /> </colgroup> <tbody> + <tr id="#yet_another_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#yet_another_rule_fifth"> <td><code>fifth</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt index d86c0c70d5..b9f8cec597 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/simple_test/golden.txt @@ -2,7 +2,7 @@ ## my_rule <pre> -my_rule(first, fourth, second, third) +my_rule(name, first, fourth, second, third) </pre> This is my rule. It does stuff. @@ -15,21 +15,44 @@ This is my rule. It does stuff. <col class="col-description" /> </colgroup> <tbody> + <tr id="#my_rule_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#my_rule_first"> <td><code>first</code></td> - <td>first doc string</td> + <td> + Label; required + <p> + first doc string + </p> + </td> </tr> <tr id="#my_rule_fourth"> <td><code>fourth</code></td> - <td>fourth doc string</td> + <td> + Boolean; optional + <p> + fourth doc string + </p> + </td> </tr> <tr id="#my_rule_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#my_rule_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt index 44040ee908..4f78cdf0a4 100644 --- a/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt +++ b/src/test/java/com/google/devtools/build/skydoc/testdata/unknown_name_test/golden.txt @@ -2,7 +2,7 @@ ## <unknown name> <pre> -<unknown name>(first, fourth, second, third) +<unknown name>(name, first, fourth, second, third) </pre> @@ -15,21 +15,38 @@ <col class="col-description" /> </colgroup> <tbody> + <tr id="#<unknown name>_name"> + <td><code>name</code></td> + <td> + String; required + <p> + A unique name for this rule. + </p> + </td> + </tr> <tr id="#<unknown name>_first"> <td><code>first</code></td> - <td></td> + <td> + Label; required + </td> </tr> <tr id="#<unknown name>_fourth"> <td><code>fourth</code></td> - <td></td> + <td> + Boolean; optional + </td> </tr> <tr id="#<unknown name>_second"> <td><code>second</code></td> - <td></td> + <td> + Dictionary: String -> String; required + </td> </tr> <tr id="#<unknown name>_third"> <td><code>third</code></td> - <td></td> + <td> + Label; required + </td> </tr> </tbody> </table> |