Create and integrate JavaBootstrap, and use fake top-level Java skylark objects for Skydoc.
RELNOTES: None.
PiperOrigin-RevId: 202697176
diff --git a/src/main/java/com/google/devtools/build/lib/BUILD b/src/main/java/com/google/devtools/build/lib/BUILD
index ec1cc12..eae6943 100644
--- a/src/main/java/com/google/devtools/build/lib/BUILD
+++ b/src/main/java/com/google/devtools/build/lib/BUILD
@@ -658,6 +658,7 @@
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/android",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/apple",
"//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/cpp",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
"//src/main/java/com/google/devtools/build/lib/vfs",
"//src/main/java/com/google/devtools/build/skyframe",
"//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
diff --git a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
index e670f9f..84f1661 100644
--- a/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
+++ b/src/main/java/com/google/devtools/build/lib/bazel/rules/JavaRules.java
@@ -43,6 +43,7 @@
import com.google.devtools.build.lib.rules.java.JavaToolchainRule;
import com.google.devtools.build.lib.rules.java.ProguardLibraryRule;
import com.google.devtools.build.lib.rules.java.proto.JavaProtoSkylarkCommon;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaBootstrap;
import com.google.devtools.build.lib.util.ResourceFileLoader;
import java.io.IOException;
@@ -85,10 +86,10 @@
builder.addRuleDefinition(new ExtraActionRule());
builder.addRuleDefinition(new ActionListenerRule());
- builder.addSkylarkAccessibleTopLevels("java_common",
- new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE));
- builder.addSkylarkAccessibleTopLevels("JavaInfo", JavaInfo.PROVIDER);
- builder.addSkylarkAccessibleTopLevels("java_proto_common", new JavaProtoSkylarkCommon());
+ builder.addSkylarkBootstrap(new JavaBootstrap(
+ new JavaSkylarkCommon(BazelJavaSemantics.INSTANCE),
+ JavaInfo.PROVIDER,
+ new JavaProtoSkylarkCommon()));
try {
builder.addWorkspaceFilePrefix(
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
new file mode 100644
index 0000000..bb65735
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java/JavaBootstrap.java
@@ -0,0 +1,44 @@
+// 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.lib.skylarkbuildapi.java;
+
+import com.google.common.collect.ImmutableMap;
+import com.google.devtools.build.lib.skylarkbuildapi.Bootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi.JavaInfoProviderApi;
+
+/**
+ * {@link Bootstrap} for skylark objects related to the java language.
+ */
+public class JavaBootstrap implements Bootstrap {
+
+ private final JavaCommonApi<?, ?, ?, ?, ?> javaCommonApi;
+ private final JavaInfoProviderApi javaInfoProviderApi;
+ private final JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi;
+
+ public JavaBootstrap(JavaCommonApi<?, ?, ?, ?, ?> javaCommonApi,
+ JavaInfoProviderApi javaInfoProviderApi,
+ JavaProtoCommonApi<?, ?, ?> javaProtoCommonApi) {
+ this.javaCommonApi = javaCommonApi;
+ this.javaInfoProviderApi = javaInfoProviderApi;
+ this.javaProtoCommonApi = javaProtoCommonApi;
+ }
+
+ @Override
+ public void addBindingsToBuilder(ImmutableMap.Builder<String, Object> builder) {
+ builder.put("java_common", javaCommonApi);
+ builder.put("JavaInfo", javaInfoProviderApi);
+ builder.put("java_proto_common", javaProtoCommonApi);
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD
index 6299f09..3573bb5 100644
--- a/src/main/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/main/java/com/google/devtools/build/skydoc/BUILD
@@ -20,6 +20,7 @@
"//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/cpp:srcs",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java: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",
@@ -46,6 +47,7 @@
"//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/cpp",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
"//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",
@@ -55,6 +57,7 @@
"//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/cpp",
+ "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java",
"//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",
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 34e98bc..c47a20a 100644
--- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
+++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java
@@ -23,6 +23,7 @@
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.cpp.CcBootstrap;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaBootstrap;
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;
@@ -55,6 +56,9 @@
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.cpp.FakeCcModule;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaCommon;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaInfo.FakeJavaInfoProvider;
+import com.google.devtools.build.skydoc.fakebuildapi.java.FakeJavaProtoCommon;
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;
@@ -252,6 +256,9 @@
AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon());
ConfigBootstrap configBootstrap = new ConfigBootstrap(new FakeConfigSkylarkCommon());
CcBootstrap ccBootstrap = new CcBootstrap(new FakeCcModule());
+ JavaBootstrap javaBootstrap = new JavaBootstrap(new FakeJavaCommon(),
+ new FakeJavaInfoProvider(),
+ new FakeJavaProtoCommon());
PlatformBootstrap platformBootstrap = new PlatformBootstrap(new FakePlatformCommon());
RepositoryBootstrap repositoryBootstrap = new RepositoryBootstrap(new FakeRepositoryModule());
TestingBootstrap testingBootstrap = new TestingBootstrap(new FakeTestingModule());
@@ -265,6 +272,7 @@
appleBootstrap.addBindingsToBuilder(envBuilder);
ccBootstrap.addBindingsToBuilder(envBuilder);
configBootstrap.addBindingsToBuilder(envBuilder);
+ javaBootstrap.addBindingsToBuilder(envBuilder);
platformBootstrap.addBindingsToBuilder(envBuilder);
repositoryBootstrap.addBindingsToBuilder(envBuilder);
testingBootstrap.addBindingsToBuilder(envBuilder);
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
new file mode 100644
index 0000000..37cb809
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/BUILD
@@ -0,0 +1,27 @@
+package(
+ default_visibility = ["//src:__subpackages__"],
+)
+
+licenses(["notice"]) # Apache 2.0
+
+filegroup(
+ name = "srcs",
+ srcs = glob(["**"]),
+)
+
+java_library(
+ name = "java",
+ 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/cmdline",
+ "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi",
+ "//src/main/java/com/google/devtools/build/lib/skylarkbuildapi/java",
+ "//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/java/FakeJavaCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
new file mode 100644
index 0000000..8ca3718
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaCommon.java
@@ -0,0 +1,103 @@
+// 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.java;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkActionFactoryApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCommonApi;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi;
+import javax.annotation.Nullable;
+
+/**
+ * Fake implementation of {@link JavaCommonApi}.
+ */
+public class FakeJavaCommon implements JavaCommonApi<FileApi, FakeJavaInfo, SkylarkRuleContextApi,
+ TransitiveInfoCollectionApi, SkylarkActionFactoryApi> {
+
+ @Override
+ public FakeJavaInfo create(@Nullable Object actionsUnchecked, Object compileTimeJars,
+ Object runtimeJars, Boolean useIjar, @Nullable Object javaToolchainUnchecked,
+ Object transitiveCompileTimeJars, Object transitiveRuntimeJars, Object sourceJars,
+ Location location, Environment environment) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ProviderApi getJavaProvider() {
+ return new FakeProviderApi();
+ }
+
+ @Override
+ public FakeJavaInfo createJavaCompileAction(SkylarkRuleContextApi skylarkRuleContext,
+ SkylarkList<FileApi> sourceJars, SkylarkList<FileApi> sourceFiles, FileApi outputJar,
+ SkylarkList<String> javacOpts, SkylarkList<FakeJavaInfo> deps,
+ SkylarkList<FakeJavaInfo> exports, SkylarkList<FakeJavaInfo> plugins,
+ SkylarkList<FakeJavaInfo> exportedPlugins, String strictDepsMode,
+ TransitiveInfoCollectionApi javaToolchain, TransitiveInfoCollectionApi hostJavabase,
+ SkylarkList<FileApi> sourcepathEntries, SkylarkList<FileApi> resources, Boolean neverlink,
+ Environment environment) throws EvalException, InterruptedException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public FileApi runIjar(SkylarkActionFactoryApi actions, FileApi jar, Object targetLabel,
+ TransitiveInfoCollectionApi javaToolchain) throws EvalException {
+ return null;
+ }
+
+ @Override
+ public FileApi stampJar(SkylarkActionFactoryApi actions, FileApi jar, Label targetLabel,
+ TransitiveInfoCollectionApi javaToolchain) throws EvalException {
+ return null;
+ }
+
+ @Override
+ public FileApi packSources(SkylarkActionFactoryApi actions, FileApi outputJar,
+ SkylarkList<FileApi> sourceFiles, SkylarkList<FileApi> sourceJars,
+ TransitiveInfoCollectionApi javaToolchain, TransitiveInfoCollectionApi hostJavabase)
+ throws EvalException {
+ return null;
+ }
+
+ @Override
+ public ImmutableList<String> getDefaultJavacOpts(SkylarkRuleContextApi skylarkRuleContext,
+ String javaToolchainAttr) throws EvalException {
+ return ImmutableList.of();
+ }
+
+ @Override
+ public FakeJavaInfo mergeJavaProviders(SkylarkList<FakeJavaInfo> providers) {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public FakeJavaInfo makeNonStrict(FakeJavaInfo javaInfo) {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ProviderApi getJavaRuntimeProvider() {
+ return new FakeProviderApi();
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
new file mode 100644
index 0000000..ee09908
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaInfo.java
@@ -0,0 +1,131 @@
+// 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.java;
+
+import com.google.devtools.build.lib.cmdline.Label;
+import com.google.devtools.build.lib.collect.nestedset.NestedSet;
+import com.google.devtools.build.lib.events.Location;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaAnnotationProcessingApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaCompilationInfoProviderApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaRuleOutputJarsProviderApi;
+import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter;
+import com.google.devtools.build.lib.syntax.Environment;
+import com.google.devtools.build.lib.syntax.EvalException;
+import com.google.devtools.build.lib.syntax.SkylarkList;
+import com.google.devtools.build.lib.syntax.SkylarkNestedSet;
+
+/**
+ * Fake implementation of {@link JavaInfoApi}.
+ */
+public class FakeJavaInfo implements JavaInfoApi<FileApi> {
+
+ @Override
+ public SkylarkNestedSet getTransitiveRuntimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getTransitiveCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkNestedSet getFullCompileTimeJars() {
+ return null;
+ }
+
+ @Override
+ public SkylarkList<FileApi> getSourceJars() {
+ return null;
+ }
+
+ @Override
+ public JavaRuleOutputJarsProviderApi<?> getOutputJars() {
+ return null;
+ }
+
+ @Override
+ public JavaAnnotationProcessingApi<?> getGenJarsProvider() {
+ return null;
+ }
+
+ @Override
+ public JavaCompilationInfoProviderApi<?> getCompilationInfoProvider() {
+ return null;
+ }
+
+ @Override
+ public SkylarkList<FileApi> getRuntimeOutputJars() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveDeps() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveRuntimeDeps() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<FileApi> getTransitiveSourceJars() {
+ return null;
+ }
+
+ @Override
+ public NestedSet<Label> getTransitiveExports() {
+ return null;
+ }
+
+ @Override
+ public String toProto(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public String toJson(Location loc) throws EvalException {
+ return "";
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+
+ /**
+ * Fake implementation of {@link JavaInfoProviderApi}.
+ */
+ public static class FakeJavaInfoProvider implements JavaInfoProviderApi {
+
+ @Override
+ public JavaInfoApi<?> javaInfo(FileApi outputJarApi, Object compileJarApi, Object sourceJarApi,
+ Boolean neverlink, SkylarkList<?> deps, SkylarkList<?> runtimeDeps, SkylarkList<?> exports,
+ Object actionsApi, Object sourcesApi, Object sourceJarsApi, Object useIjarApi,
+ Object javaToolchainApi, Object hostJavabaseApi, Object jdepsApi, Location loc,
+ Environment env) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public void repr(SkylarkPrinter printer) {}
+ }
+}
diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
new file mode 100644
index 0000000..49af579
--- /dev/null
+++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/java/FakeJavaProtoCommon.java
@@ -0,0 +1,52 @@
+// 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.java;
+
+import com.google.common.collect.ImmutableList;
+import com.google.devtools.build.lib.skylarkbuildapi.FileApi;
+import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi;
+import com.google.devtools.build.lib.skylarkbuildapi.TransitiveInfoCollectionApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaInfoApi;
+import com.google.devtools.build.lib.skylarkbuildapi.java.JavaProtoCommonApi;
+import com.google.devtools.build.lib.syntax.EvalException;
+
+/**
+ * Fake implementation of {@link JavaProtoCommonApi}.
+ */
+public class FakeJavaProtoCommon
+ implements JavaProtoCommonApi<FileApi, SkylarkRuleContextApi, TransitiveInfoCollectionApi> {
+
+ @Override
+ public void createProtoCompileAction(SkylarkRuleContextApi skylarkRuleContext,
+ TransitiveInfoCollectionApi target, FileApi sourceJar, String protoToolchainAttr,
+ String flavour) throws EvalException {}
+
+ @Override
+ public boolean hasProtoSources(TransitiveInfoCollectionApi target) {
+ return false;
+ }
+
+ @Override
+ public JavaInfoApi<FileApi> getRuntimeToolchainProvider(SkylarkRuleContextApi skylarkRuleContext,
+ String protoToolchainAttr) throws EvalException {
+ return new FakeJavaInfo();
+ }
+
+ @Override
+ public ImmutableList<String> getJavacOpts(SkylarkRuleContextApi skylarkRuleContext,
+ String javaToolchainAttr) throws EvalException {
+ return ImmutableList.of();
+ }
+}
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
index 1c495da..d235bf8 100644
--- a/src/test/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -67,6 +67,13 @@
)
skydoc_test(
+ name = "java_basic_test",
+ golden_file = "testdata/java_basic_test/golden.txt",
+ input_file = "testdata/java_basic_test/input.bzl",
+ skydoc = "//src/main/java/com/google/devtools/build/skydoc",
+)
+
+skydoc_test(
name = "multiple_files_test",
golden_file = "testdata/multiple_files_test/golden.txt",
input_file = "testdata/multiple_files_test/input.bzl",
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
new file mode 100644
index 0000000..274e1f2
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/golden.txt
@@ -0,0 +1,4 @@
+java_related_rule
+This rule does java-related things.
+first,second,third,fourth
+
diff --git a/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/input.bzl b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/input.bzl
new file mode 100644
index 0000000..f724b7d
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/skydoc/testdata/java_basic_test/input.bzl
@@ -0,0 +1,21 @@
+def exercise_the_api():
+ var1 = java_common.JavaRuntimeInfo
+ var2 = JavaInfo
+ var3 = java_proto_common
+
+exercise_the_api()
+
+def my_rule_impl(ctx):
+ return struct()
+
+
+java_related_rule = rule(
+ implementation = my_rule_impl,
+ doc = "This rule does java-related things.",
+ 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),
+ },
+)