diff options
author | cparsons <cparsons@google.com> | 2018-06-29 07:19:22 -0700 |
---|---|---|
committer | Copybara-Service <copybara-piper@google.com> | 2018-06-29 07:20:37 -0700 |
commit | 574eb16e9ac0f5d73ee8f5f69ecda51514fca443 (patch) | |
tree | b6269184e1c3c49ebc24005f2036b813b49685e0 /src | |
parent | 626fe0cba10a9d8d7c0401063940b8192f99b6c0 (diff) |
Add fake build API implementations for config, platform, repository, and test packages.
RELNOTES: None.
PiperOrigin-RevId: 202642995
Diffstat (limited to 'src')
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), + }, +) |