aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'src/test')
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/BUILD83
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/SkydocTest.java67
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/simple_test/golden.txt3
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/simple_test/input.txt13
-rwxr-xr-xsrc/test/java/com/google/devtools/build/skydoc/skydoc_e2e_test_runner.sh38
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/unknown_name_test/golden.txt2
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/unknown_name_test/input.txt12
7 files changed, 218 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
new file mode 100644
index 0000000000..2416d5a339
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -0,0 +1,83 @@
+package(
+ default_testonly = 1,
+ default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+ name = "srcs",
+ testonly = 0,
+ srcs = glob(["**"]),
+ visibility = ["//src:__pkg__"],
+)
+
+java_test(
+ name = "SkydocTest",
+ size = "medium",
+ srcs = ["SkydocTest.java"],
+ shard_count = 1,
+ visibility = ["//devtools/blaze/main:__pkg__"],
+ deps = [
+ "//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/rendering",
+ "//src/test/java/com/google/devtools/build/lib:testutil",
+ "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+ "//third_party:guava",
+ "//third_party:junit4",
+ "//third_party:truth",
+ ],
+)
+
+# TODO(cparsons): Make test cases and golden-genrules into a macro.
+sh_test(
+ name = "simple_skydoc_e2e_test",
+ srcs = ["skydoc_e2e_test_runner.sh"],
+ args = [
+ "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc)",
+ "$(location simple_test/input.txt)",
+ "$(location simple_test/golden.txt)",
+ ],
+ data = [
+ "simple_test/golden.txt",
+ "simple_test/input.txt",
+ "//src/main/java/com/google/devtools/build/skydoc",
+ ],
+)
+
+genrule(
+ name = "regenerate_simple_golden",
+ srcs = [
+ "simple_test/input.txt",
+ ],
+ outs = ["simple_output.txt"],
+ cmd = "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc) " +
+ "$(location simple_test/input.txt) $(location simple_output.txt)",
+ tools = ["//src/main/java/com/google/devtools/build/skydoc"],
+)
+
+sh_test(
+ name = "unknown_name_skydoc_e2e_test",
+ srcs = ["skydoc_e2e_test_runner.sh"],
+ args = [
+ "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc)",
+ "$(location unknown_name_test/input.txt)",
+ "$(location unknown_name_test/golden.txt)",
+ ],
+ data = [
+ "unknown_name_test/golden.txt",
+ "unknown_name_test/input.txt",
+ "//src/main/java/com/google/devtools/build/skydoc",
+ ],
+)
+
+genrule(
+ name = "regenerate_unknown_name_golden",
+ srcs = [
+ "unknown_name_test/input.txt",
+ ],
+ outs = ["unknown_name_output.txt"],
+ cmd = "$(location //src/main/java/com/google/devtools/build/skydoc:skydoc) " +
+ "$(location unknown_name_test/input.txt) $(location unknown_name_output.txt)",
+ tools = ["//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
new file mode 100644
index 0000000000..d80fe4ed35
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/SkydocTest.java
@@ -0,0 +1,67 @@
+// Copyright 2018 The Bazel Authors. All rights reserved.
+//
+// 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.google.devtools.build.skydoc;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.Iterables;
+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.rendering.RuleInfo;
+import java.util.List;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+/**
+ * Java tests for Skydoc.
+ */
+@RunWith(JUnit4.class)
+public final class SkydocTest extends SkylarkTestCase {
+
+ @Test
+ public void testRuleInfoAttrs() throws Exception {
+ Path file =
+ scratch.file(
+ "/test/test.bzl",
+ "def rule_impl(ctx):",
+ " return struct()",
+ "",
+ "my_rule = rule(",
+ " 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),",
+ " },",
+ ")");
+ byte[] bytes = FileSystemUtils.readWithKnownFileSize(file, file.getFileSize());
+
+ ParserInputSource parserInputSource =
+ ParserInputSource.create(bytes, file.asFragment());
+
+ List<RuleInfo> ruleInfos = new SkydocMain().eval(parserInputSource);
+ assertThat(ruleInfos).hasSize(1);
+
+ RuleInfo ruleInfo = Iterables.getOnlyElement(ruleInfos);
+ assertThat(ruleInfo.getDocString()).isEqualTo("This is my rule. It does stuff.");
+ assertThat(ruleInfo.getAttrNames()).containsExactly(
+ "first", "second", "third", "fourth");
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/skydoc/simple_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/simple_test/golden.txt
new file mode 100644
index 0000000000..0bf3a8c96a
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/simple_test/golden.txt
@@ -0,0 +1,3 @@
+my_rule
+This is my rule. It does stuff.
+first,second,third,fourth
diff --git a/src/test/java/com/google/devtools/build/skydoc/simple_test/input.txt b/src/test/java/com/google/devtools/build/skydoc/simple_test/input.txt
new file mode 100644
index 0000000000..de1548b420
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/simple_test/input.txt
@@ -0,0 +1,13 @@
+def my_rule_impl(ctx):
+ return struct()
+
+my_rule = rule(
+ implementation = my_rule_impl,
+ doc = "This is my rule. It does stuff.",
+ 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),
+ },
+)
diff --git a/src/test/java/com/google/devtools/build/skydoc/skydoc_e2e_test_runner.sh b/src/test/java/com/google/devtools/build/skydoc/skydoc_e2e_test_runner.sh
new file mode 100755
index 0000000000..c32973c17c
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/skydoc_e2e_test_runner.sh
@@ -0,0 +1,38 @@
+#!/bin/bash
+#
+# Copyright 2018 The Bazel Authors. All rights reserved.
+#
+# 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.
+#
+# Test skydoc output matches the expected golden file output.
+
+set -u
+
+skydoc_bin=$1
+input_file=$2
+golden_file=$3
+
+actual_file="${TEST_TMPDIR}/actual"
+
+${skydoc_bin} ${input_file} ${actual_file}
+
+DIFF="$(diff ${actual_file} ${golden_file})"
+
+if [ "$DIFF" != "" ]
+then
+ echo "Actual did not match golden."
+ echo "${DIFF}"
+ exit 1
+else
+ echo "Result matches golden file"
+fi
diff --git a/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/golden.txt
new file mode 100644
index 0000000000..9b49c77015
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/golden.txt
@@ -0,0 +1,2 @@
+<unknown name>
+first,second,third,fourth
diff --git a/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/input.txt b/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/input.txt
new file mode 100644
index 0000000000..24c69d2905
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/unknown_name_test/input.txt
@@ -0,0 +1,12 @@
+def my_rule_impl(ctx):
+ return struct()
+
+rule(
+ implementation = my_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),
+ },
+)