diff options
15 files changed, 747 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 d3bcf4b101..b80bfab727 100644 --- a/src/main/java/com/google/devtools/build/skydoc/BUILD +++ b/src/main/java/com/google/devtools/build/skydoc/BUILD @@ -16,6 +16,7 @@ filegroup( name = "srcs", 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/rendering:srcs", ], ) @@ -35,8 +36,10 @@ java_library( "//src/main/java/com/google/devtools/build/lib:events", "//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/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/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 1d9043f8b7..6a5628368e 100644 --- a/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java +++ b/src/main/java/com/google/devtools/build/skydoc/SkydocMain.java @@ -19,6 +19,7 @@ import com.google.common.collect.ImmutableList; 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.syntax.BaseFunction; import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.syntax.Environment; @@ -38,6 +39,7 @@ import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkCommandLineApi; 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.rendering.RuleInfo; import java.io.IOException; import java.io.PrintWriter; @@ -180,12 +182,14 @@ public class SkydocMain { new FakeOutputGroupInfoProvider(), new FakeActionsInfoProvider(), new FakeDefaultInfoProvider()); + AppleBootstrap appleBootstrap = new AppleBootstrap(new FakeAppleCommon()); ImmutableMap.Builder<String, Object> envBuilder = ImmutableMap.builder(); Runtime.addConstantsToBuilder(envBuilder); MethodLibrary.addBindingsToBuilder(envBuilder); topLevelBootstrap.addBindingsToBuilder(envBuilder); + appleBootstrap.addBindingsToBuilder(envBuilder); return GlobalFrame.createForBuiltins(envBuilder.build()); } diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java new file mode 100644 index 0000000000..cdf8ef1f6e --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeProviderApi.java @@ -0,0 +1,27 @@ +// 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; + +import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; + +/** + * Fake implementation of {@link ProviderApi}. + */ +public class FakeProviderApi implements ProviderApi { + + @Override + public void repr(SkylarkPrinter printer) {} +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java new file mode 100644 index 0000000000..7cd6e108c3 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSkylarkAspect.java @@ -0,0 +1,27 @@ +// 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; + +import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; + +/** + * Fake implementation of {@link SkylarkAspectApi}. + */ +public class FakeSkylarkAspect implements SkylarkAspectApi { + + @Override + public void repr(SkylarkPrinter printer) {} +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java new file mode 100644 index 0000000000..3d76190adc --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/FakeSplitTransitionProvider.java @@ -0,0 +1,22 @@ +// 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; + +import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi; + +/** + * Fake implementation of {@link SplitTransitionProviderApi}. + */ +public class FakeSplitTransitionProvider implements SplitTransitionProviderApi {} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD new file mode 100644 index 0000000000..25246fd421 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/BUILD @@ -0,0 +1,26 @@ +package( + default_visibility = ["//src:__subpackages__"], +) + +licenses(["notice"]) # Apache 2.0 + +filegroup( + name = "srcs", + srcs = glob(["**"]), +) + +java_library( + name = "apple", + 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/collect/nestedset", + "//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/skydoc/fakebuildapi", + "//third_party:guava", + "//third_party:jsr305", + ], +) diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java new file mode 100644 index 0000000000..59a2acfeef --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleCommon.java @@ -0,0 +1,155 @@ +// 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.apple; + +import com.google.common.collect.ImmutableMap; +import com.google.devtools.build.lib.skylarkbuildapi.FileApi; +import com.google.devtools.build.lib.skylarkbuildapi.ProviderApi; +import com.google.devtools.build.lib.skylarkbuildapi.SkylarkAspectApi; +import com.google.devtools.build.lib.skylarkbuildapi.SkylarkRuleContextApi; +import com.google.devtools.build.lib.skylarkbuildapi.SplitTransitionProviderApi; +import com.google.devtools.build.lib.skylarkbuildapi.StructApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleCommonApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleDynamicFrameworkInfoApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.ApplePlatformApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi.AppleStaticLibraryInfoProvider; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleToolchainApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.DottedVersionApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.XcodeConfigProviderApi; +import com.google.devtools.build.lib.syntax.Environment; +import com.google.devtools.build.lib.syntax.SkylarkDict; +import com.google.devtools.build.skydoc.fakebuildapi.FakeProviderApi; +import com.google.devtools.build.skydoc.fakebuildapi.FakeSkylarkAspect; +import com.google.devtools.build.skydoc.fakebuildapi.FakeSplitTransitionProvider; +import com.google.devtools.build.skydoc.fakebuildapi.FakeStructApi; +import com.google.devtools.build.skydoc.fakebuildapi.apple.FakeAppleStaticLibraryInfo.FakeAppleStaticLibraryInfoProvider; + +/** + * Fake implementation of {@link AppleCommonApi}. + */ +public class FakeAppleCommon implements AppleCommonApi< + FileApi, + ObjcProviderApi<?>, + XcodeConfigProviderApi<?, ?>, + ApplePlatformApi> { + + @Override + public AppleToolchainApi<?> getAppleToolchain() { + return new FakeAppleToolchain(); + } + + @Override + public StructApi getPlatformTypeStruct() { + return new FakeStructApi(); + } + + @Override + public StructApi getPlatformStruct() { + return new FakeStructApi(); + } + + @Override + public ProviderApi getXcodeVersionPropertiesConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getXcodeVersionConfigConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getObjcProviderConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getAppleDynamicFrameworkConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getAppleDylibBinaryConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getAppleExecutableBinaryConstructor() { + return new FakeProviderApi(); + } + + @Override + public AppleStaticLibraryInfoProvider<?, ?> getAppleStaticLibraryProvider() { + return new FakeAppleStaticLibraryInfoProvider(); + } + + @Override + public ProviderApi getAppleDebugOutputsConstructor() { + return new FakeProviderApi(); + } + + @Override + public ProviderApi getAppleLoadableBundleBinaryConstructor() { + return new FakeProviderApi(); + } + + @Override + public SplitTransitionProviderApi getMultiArchSplitProvider() { + return new FakeSplitTransitionProvider(); + } + + @Override + public StructApi linkMultiArchBinary( + SkylarkRuleContextApi skylarkRuleContext, Environment environment) { + return new FakeStructApi(); + } + + @Override + public DottedVersionApi<?> dottedVersion(String version) { + return new FakeDottedVersion(); + } + + @Override + public SkylarkAspectApi getObjcProtoAspect() { + return new FakeSkylarkAspect(); + } + + @Override + public AppleDynamicFrameworkInfoApi<?, ?> newDynamicFrameworkProvider(FileApi dylibBinary, + ObjcProviderApi<?> depsObjcProvider, Object dynamicFrameworkDirs, + Object dynamicFrameworkFiles) { + return new FakeAppleDynamicFrameworkInfo(); + } + + @Override + public ObjcProviderApi<?> newObjcProvider(Boolean usesSwift, SkylarkDict<?, ?> kwargs, + Environment environment) { + return new FakeObjcProvider(); + } + + @Override + public ImmutableMap<String, String> getTargetAppleEnvironment( + XcodeConfigProviderApi<?, ?> xcodeConfig, + ApplePlatformApi platform) { + return ImmutableMap.of(); + } + + @Override + public ImmutableMap<String, String> getAppleHostSystemEnv( + XcodeConfigProviderApi<?, ?> xcodeConfig) { + return ImmutableMap.of(); + } +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java new file mode 100644 index 0000000000..fc9f236554 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleDynamicFrameworkInfo.java @@ -0,0 +1,63 @@ +// 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.apple; + +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.apple.AppleDynamicFrameworkInfoApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.syntax.EvalException; + +/** + * Fake implementation of {@link AppleDynamicFrameworkInfoApi}. + */ +public class FakeAppleDynamicFrameworkInfo + implements AppleDynamicFrameworkInfoApi<Object, FileApi> { + + @Override + public NestedSet<Object> getDynamicFrameworkDirs() { + return null; + } + + @Override + public NestedSet<FileApi> getDynamicFrameworkFiles() { + return null; + } + + @Override + public FileApi getAppleDylibBinary() { + return null; + } + + @Override + public ObjcProviderApi<FileApi> getDepsObjcProvider() { + return new FakeObjcProvider(); + } + + @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/apple/FakeAppleStaticLibraryInfo.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java new file mode 100644 index 0000000000..bc246bb8b3 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleStaticLibraryInfo.java @@ -0,0 +1,68 @@ +// 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.apple; + +import com.google.devtools.build.lib.events.Location; +import com.google.devtools.build.lib.skylarkbuildapi.FileApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleStaticLibraryInfoApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.ObjcProviderApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.syntax.EvalException; + +/** + * Fake implementation of {@link AppleStaticLibraryInfoApi}. + */ +public class FakeAppleStaticLibraryInfo implements AppleStaticLibraryInfoApi { + + @Override + public FileApi getMultiArchArchive() { + return null; + } + + @Override + public ObjcProviderApi<?> getDepsObjcProvider() { + 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 AppleStaticLibraryInfoProvider}. + */ + public static class FakeAppleStaticLibraryInfoProvider + implements AppleStaticLibraryInfoProvider<FileApi, ObjcProviderApi<FileApi>> { + + @Override + public AppleStaticLibraryInfoApi appleStaticLibrary(FileApi archive, + ObjcProviderApi<FileApi> objcProvider) + throws EvalException { + return new FakeAppleStaticLibraryInfo(); + } + + @Override + public void repr(SkylarkPrinter printer) {} + } +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java new file mode 100644 index 0000000000..95c4344a9e --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeAppleToolchain.java @@ -0,0 +1,42 @@ +// 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.apple; + +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleConfigurationApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.ApplePlatformTypeApi; +import com.google.devtools.build.lib.skylarkbuildapi.apple.AppleToolchainApi; + +/** + * Fake implementation of {@link AppleToolchainApi}. + */ +public class FakeAppleToolchain + implements AppleToolchainApi<AppleConfigurationApi<ApplePlatformTypeApi>> { + + @Override + public String sdkDirConstant() { + return ""; + } + + @Override + public String developerDirConstant() { + return ""; + } + + @Override + public String platformFrameworkDirFromConfig( + AppleConfigurationApi<ApplePlatformTypeApi> configuration) { + return ""; + } +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java new file mode 100644 index 0000000000..6ef2fe5a32 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeDottedVersion.java @@ -0,0 +1,37 @@ +// 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.apple; + +import com.google.devtools.build.lib.skylarkbuildapi.apple.DottedVersionApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; + +/** + * Fake implementation of {@link DottedVersionApi}. + */ +public class FakeDottedVersion implements DottedVersionApi<FakeDottedVersion> { + + @Override + public int compareTo_skylark(FakeDottedVersion other) { + return 0; + } + + @Override + public void repr(SkylarkPrinter printer) {} + + @Override + public int compareTo(FakeDottedVersion o) { + return 0; + } +} diff --git a/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java new file mode 100644 index 0000000000..b5dcbf4fe6 --- /dev/null +++ b/src/main/java/com/google/devtools/build/skydoc/fakebuildapi/apple/FakeObjcProvider.java @@ -0,0 +1,242 @@ +// 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.apple; + +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.apple.ObjcProviderApi; +import com.google.devtools.build.lib.skylarkinterface.SkylarkPrinter; +import com.google.devtools.build.lib.syntax.EvalException; +import com.google.devtools.build.lib.syntax.SkylarkNestedSet; + +/** + * Fake implementation of {@link ObjcProviderApi}. + */ +public class FakeObjcProvider implements ObjcProviderApi<FileApi> { + + @Override + public NestedSet<FileApi> assetCatalog() { + return null; + } + + @Override + public SkylarkNestedSet bundleFile() { + return null; + } + + @Override + public NestedSet<String> define() { + return null; + } + + @Override + public SkylarkNestedSet dynamicFrameworkDir() { + return null; + } + + @Override + public NestedSet<FileApi> dynamicFrameworkFile() { + return null; + } + + @Override + public NestedSet<FileApi> debugSymbols() { + return null; + } + + @Override + public NestedSet<FileApi> debugSymbolsPlist() { + return null; + } + + @Override + public NestedSet<FileApi> exportedDebugArtifacts() { + return null; + } + + @Override + public SkylarkNestedSet frameworkSearchPathOnly() { + return null; + } + + @Override + public NestedSet<FileApi> forceLoadLibrary() { + return null; + } + + @Override + public NestedSet<FileApi> header() { + return null; + } + + @Override + public NestedSet<FileApi> importedLibrary() { + return null; + } + + @Override + public SkylarkNestedSet include() { + return null; + } + + @Override + public SkylarkNestedSet includeSystem() { + return null; + } + + @Override + public SkylarkNestedSet iquote() { + return null; + } + + @Override + public NestedSet<FileApi> j2objcLibrary() { + return null; + } + + @Override + public NestedSet<FileApi> jreLibrary() { + return null; + } + + @Override + public NestedSet<FileApi> library() { + return null; + } + + @Override + public NestedSet<FileApi> linkInputs() { + return null; + } + + @Override + public NestedSet<FileApi> linkedBinary() { + return null; + } + + @Override + public NestedSet<FileApi> linkmapFile() { + return null; + } + + @Override + public NestedSet<String> linkopt() { + return null; + } + + @Override + public NestedSet<FileApi> mergeZip() { + return null; + } + + @Override + public NestedSet<FileApi> moduleMap() { + return null; + } + + @Override + public NestedSet<FileApi> multiArchDynamicLibraries() { + return null; + } + + @Override + public NestedSet<FileApi> multiArchLinkedArchives() { + return null; + } + + @Override + public NestedSet<FileApi> multiArchLinkedBinaries() { + return null; + } + + @Override + public NestedSet<FileApi> rootMergeZip() { + return null; + } + + @Override + public NestedSet<String> sdkDylib() { + return null; + } + + @Override + public SkylarkNestedSet sdkFramework() { + return null; + } + + @Override + public NestedSet<FileApi> source() { + return null; + } + + @Override + public NestedSet<FileApi> staticFrameworkFile() { + return null; + } + + @Override + public NestedSet<FileApi> storyboard() { + return null; + } + + @Override + public NestedSet<FileApi> strings() { + return null; + } + + @Override + public NestedSet<FileApi> umbrellaHeader() { + return null; + } + + @Override + public SkylarkNestedSet weakSdkFramework() { + return null; + } + + @Override + public SkylarkNestedSet xcassetsDir() { + return null; + } + + @Override + public NestedSet<FileApi> xcdatamodel() { + return null; + } + + @Override + public NestedSet<FileApi> xib() { + return null; + } + + @Override + public SkylarkNestedSet getStaticFrameworkDirsForSkylark() { + 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) {} +} diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD index e5a80fd54d..5e98b403f2 100644 --- a/src/test/java/com/google/devtools/build/skydoc/BUILD +++ b/src/test/java/com/google/devtools/build/skydoc/BUILD @@ -51,3 +51,10 @@ skydoc_test( input_file = "multiple_rules_test/input.txt", skydoc = "//src/main/java/com/google/devtools/build/skydoc", ) + +skydoc_test( + name = "apple_basic_test", + golden_file = "apple_basic_test/golden.txt", + input_file = "apple_basic_test/input.txt", + skydoc = "//src/main/java/com/google/devtools/build/skydoc", +) diff --git a/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/golden.txt b/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/golden.txt new file mode 100644 index 0000000000..36642e45dc --- /dev/null +++ b/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/golden.txt @@ -0,0 +1,4 @@ +apple_related_rule +This rule does apple-related things. +first,second,third,fourth + diff --git a/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/input.txt b/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/input.txt new file mode 100644 index 0000000000..165176ef0e --- /dev/null +++ b/src/test/java/com/google/devtools/build/skydoc/apple_basic_test/input.txt @@ -0,0 +1,20 @@ +def exercise_the_api(): + var1 = apple_common.platform_type + var2 = apple_common.AppleDynamicFramework + +exercise_the_api() + +def my_rule_impl(ctx): + return struct() + + +apple_related_rule = rule( + implementation = my_rule_impl, + doc = "This rule does apple-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), + }, +) |