aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorGravatar cparsons <cparsons@google.com>2018-06-29 07:19:22 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-29 07:20:37 -0700
commit574eb16e9ac0f5d73ee8f5f69ecda51514fca443 (patch)
treeb6269184e1c3c49ebc24005f2036b813b49685e0 /src
parent626fe0cba10a9d8d7c0401063940b8192f99b6c0 (diff)
Add fake build API implementations for config, platform, repository, and test packages.
RELNOTES: None. PiperOrigin-RevId: 202642995
Diffstat (limited to 'src')
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/BUILD12
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/SkydocMain.java16
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD23
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigSkylarkCommon.java30
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD23
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/FakePlatformCommon.java35
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD22
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java33
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD23
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java45
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java46
-rw-r--r--src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingModule.java36
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/BUILD7
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt4
-rw-r--r--src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/input.bzl21
15 files changed, 376 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index b80bfab727..ebe5f89918 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -17,6 +17,10 @@ filegroup(
srcs = glob(["**"]) + [
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi:srcs",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test:srcs",
"//src/main/java/com/google/devtools/build/skydoc/rendering:srcs",
],
)
@@ -37,9 +41,17 @@ java_library(
"//src/main/java/com/google/devtools/build/lib:syntax",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test",
"//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
"//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test",
"//src/main/java/com/google/devtools/build/skydoc/rendering",
"//third_party:guava",
"//third_party:jsr305",
diff --git a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
index 8466f205b4..a6d45847f0 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -20,6 +20,10 @@ import com.google.common.collect.ImmutableMap;
import com.google.devtools.build.lib.events.EventHandler;
import com.google.devtools.build.lib.skylarkbuildapi.TopLevelBootstrap;
import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.repository.RepositoryBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.test.TestingBootstrap;
import com.google.devtools.build.lib.syntax.BaseFunction;
import com.google.devtools.build.lib.syntax.BuildFileAST;
import com.google.devtools.build.lib.syntax.Environment;
@@ -41,6 +45,10 @@ import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkNativeModuleApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkRuleFunctionsApi;
import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi.FakeStructProviderApi;
import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.config.FakeConfigSkylarkCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.platform.FakePlatformCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.repository.FakeRepositoryModule;
+import com.google.devtools.build.skydoc.fakebuildapi.test.FakeTestingModule;
import com.google.devtools.build.skydoc.rendering.RuleInfo;
import java.io.IOException;
import java.io.PrintWriter;
@@ -228,6 +236,10 @@ public class SkydocMain {
new FakeActionsInfoProvider(),
new FakeDefaultInfoProvider());
AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
+ ConfigBootstrap configBootstrap = new ConfigBootstrap(new FakeConfigSkylarkCommon());
+ PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
+ RepositoryBootstrap repositoryBootstrap = new RepositoryBootstrap(new FakeRepositoryModule());
+ TestingBootstrap testingBootstrap = new TestingBootstrap(new FakeTestingModule());
ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder();
@@ -235,6 +247,10 @@ public class SkydocMain {
MethodLibrary.addBindingsToBuilder(envBuilder);
topLevelBootstrap.addBindingsToBuilder(envBuilder);
appleBootstrap.addBindingsToBuilder(envBuilder);
+ configBootstrap.addBindingsToBuilder(envBuilder);
+ platformBootstrap.addBindingsToBuilder(envBuilder);
+ repositoryBootstrap.addBindingsToBuilder(envBuilder);
+ testingBootstrap.addBindingsToBuilder(envBuilder);
return GlobalFrame.createForBuiltins(envBuilder.build());
}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD
new file mode 100644
index 0000000000..337cb58758
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/BUILD
@@ -0,0 +1,23 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "config",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/config",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigSkylarkCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigSkylarkCommon.java
new file mode 100644
index 0000000000..f40b698a83
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/config/FakeConfigSkylarkCommon.java
@@ -0,0 +1,30 @@
+// 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.fakebuildapi.config;
+
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.config.ConfigSkylarkCommonApi;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
+
+/**
+ * Fake implementation of {@link ConfigSkylarkCommonApi}.
+ */
+public class FakeConfigSkylarkCommon implements ConfigSkylarkCommonApi {
+
+ @Override
+ public ProviderApi getConfigFeatureFlagProviderConstructor() {
+ return new FakeProviderApi();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD
new file mode 100644
index 0000000000..91a996900a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/BUILD
@@ -0,0 +1,23 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "platform",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/platform",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/FakePlatformCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/FakePlatformCommon.java
new file mode 100644
index 0000000000..21265819c5
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/platform/FakePlatformCommon.java
@@ -0,0 +1,35 @@
+// 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.fakebuildapi.platform;
+
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.platform.PlatformCommonApi;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
+
+/**
+ * Fake implementation of {@link PlatformCommonApi}.
+ */
+public class FakePlatformCommon implements PlatformCommonApi {
+
+ @Override
+ public ProviderApi getMakeVariableProvider() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public ProviderApi getToolchainInfoConstructor() {
+ return new FakeProviderApi();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD
new file mode 100644
index 0000000000..a86c797c9a
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/BUILD
@@ -0,0 +1,22 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "repository",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/repository",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
new file mode 100644
index 0000000000..8f22cb7585
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/repository/FakeRepositoryModule.java
@@ -0,0 +1,33 @@
+// 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.fakebuildapi.repository;
+
+import com.google.devtools.build.lib.skylarkbuildapi.repository.RepositoryModuleApi;
+import com.google.devtools.build.lib.syntax.BaseFunction;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.FuncallExpression;
+import com.google.devtools.build.lib.syntax.SkylarkList;
+
+/**
+ * Fake implementation of {@link RepositoryModuleApi}.
+ */
+public class FakeRepositoryModule implements RepositoryModuleApi {
+
+ @Override
+ public BaseFunction repositoryRule(BaseFunction implementation, Object attrs, Boolean local,
+ SkylarkList<String> environ, FuncallExpression ast, Environment env) {
+ return implementation;
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
new file mode 100644
index 0000000000..0eb841b680
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/BUILD
@@ -0,0 +1,23 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "test",
+ srcs = glob(["*.java"]),
+ deps = [
+ "//src/main/java/com/google/devtools/build/lib:events",
+ "//src/main/java/com/google/devtools/build/lib:skylarkinterface",
+ "//src/main/java/com/google/devtools/build/lib:syntax",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/test",
+ "//third_party:guava",
+ "//third_party:jsr305",
+ ],
+)
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java
new file mode 100644
index 0000000000..fc554502fd
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeExecutionInfo.java
@@ -0,0 +1,45 @@
+// 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.fakebuildapi.test;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.test.ExecutionInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link ExecutionInfoApi}.
+ */
+public class FakeExecutionInfo implements ExecutionInfoApi {
+
+ @Override
+ public ImmutableMap<String, String> getExecutionInfo() {
+ return ImmutableMap.of();
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java
new file mode 100644
index 0000000000..2605715d26
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingEnvironmentInfo.java
@@ -0,0 +1,46 @@
+// 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.fakebuildapi.test;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.test.TestEnvironmentInfoApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.EvalException;
+import java.util.Map;
+
+/**
+ * Fake implementation of {@link TestEnvironmentInfoApi}.
+ */
+public class FakeTestingEnvironmentInfo implements TestEnvironmentInfoApi {
+
+ @Override
+ public Map<String, String> getEnvironment() {
+ return ImmutableMap.of();
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingModule.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingModule.java
new file mode 100644
index 0000000000..ccd2bba402
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/test/FakeTestingModule.java
@@ -0,0 +1,36 @@
+// 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.fakebuildapi.test;
+
+import com.google.devtools.build.lib.skylarkbuildapi.test.ExecutionInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.test.TestEnvironmentInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.test.TestingModuleApi;
+import com.google.devtools.build.lib.syntax.SkylarkDict;
+
+/**
+ * Fake implementation of {@link TestingModuleApi}.
+ */
+public class FakeTestingModule implements TestingModuleApi {
+
+ @Override
+ public ExecutionInfoApi executionInfo(SkylarkDict<String, String> requirements) {
+ return new FakeExecutionInfo();
+ }
+
+ @Override
+ public TestEnvironmentInfoApi testEnvironment(SkylarkDict<String, String> environment) {
+ return new FakeTestingEnvironmentInfo();
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
index af9f14112f..6a2ab769b5 100644
--- a/src/test/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -69,3 +69,10 @@ skydoc_test(
"testdata/multiple_files_test/inner_dep.bzl",
],
)
+
+skydoc_test(
+ name = "misc_apis_test",
+ golden_file = "testdata/misc_apis_test/golden.txt",
+ input_file = "testdata/misc_apis_test/input.bzl",
+ skydoc = "//src/main/java/com/google/devtools/build/skydoc",
+)
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
new file mode 100644
index 0000000000..5880c8c67c
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/golden.txt
@@ -0,0 +1,4 @@
+my_rule
+This rule exercises some of the build API.
+first,second,third,fourth
+
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/input.bzl
new file mode 100644
index 0000000000..39ca085697
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/misc_apis_test/input.bzl
@@ -0,0 +1,21 @@
+def my_rule_impl(ctx):
+ return struct()
+
+def exercise_the_api():
+ var1 = config_common.FeatureFlagInfo
+ var2 = platform_common.TemplateVariableInfo
+ var3 = repository_rule(implementation = my_rule_impl)
+ var4 = testing.ExecutionInfo({})
+
+exercise_the_api()
+
+my_rule = rule(
+ implementation = my_rule_impl,
+ doc = "This rule exercises some of the build API.",
+ 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),
+ },
+)