Add fake build API implementations for config, platform, repository, and test packages. RELNOTES: None. PiperOrigin-RevId: 202642995
diff --git a/src/main/java/com/google/devtools/build/skydoc/BUILD b/src/main/java/com/google/devtools/build/skydoc/BUILD index b80bfab..ebe5f89 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 @@ 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 @@ "//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 8466f20..a6d4584 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.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.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 @@ 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 @@ 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 0000000..337cb58 --- /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 0000000..f40b698 --- /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 0000000..91a9969 --- /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 0000000..2126581 --- /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 0000000..a86c797 --- /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 0000000..8f22cb7 --- /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 0000000..0eb841b --- /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 0000000..fc55450 --- /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 0000000..2605715 --- /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 0000000..ccd2bba --- /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 af9f141..6a2ab76 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 @@ "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 0000000..5880c8c --- /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 0000000..39ca085 --- /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), + }, +)