diff options
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java new file mode 100644 index 0000000000..3fff23e56c --- /dev/null +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java @@ -0,0 +1,101 @@ +// Copyright 2017 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.rules.objc; + +import com.google.devtools.build.lib.actions.ActionInputHelper; +import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.ArtifactExpander; +import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.config.BuildConfiguration; +import com.google.devtools.build.lib.cmdline.Label; +import com.google.devtools.build.lib.packages.util.MockJ2ObjcSupport; +import com.google.devtools.build.lib.packages.util.MockObjcSupport; +import com.google.devtools.build.lib.packages.util.MockProtoSupport; +import java.util.Collection; +import org.junit.Before; + +/** + * Setup for unit tests for j2objc transpilation. + */ +public class J2ObjcLibraryTest extends ObjcRuleTestCase { + protected static final ArtifactExpander DUMMY_ARTIFACT_EXPANDER = + new ArtifactExpander() { + @Override + public void expand(Artifact artifact, Collection<? super Artifact> output) { + output.add(ActionInputHelper.treeFileArtifact(artifact, "children1")); + output.add(ActionInputHelper.treeFileArtifact(artifact, "children2")); + } + }; + + /** + * The configuration to be used for genfiles artifacts. + */ + protected BuildConfiguration getGenfilesConfig() throws InterruptedException { + return getAppleCrosstoolConfiguration(); + } + + /** + * Creates and injects a j2objc_library target that depends upon the given label, then returns the + * ConfiguredTarget for the label with the aspects added. + */ + protected ConfiguredTarget getJ2ObjCAspectConfiguredTarget(String label) throws Exception { + // Blaze exposes no interface to summon aspects ex nihilo. + // To get an aspect, you must create a dependent target that requires the aspect. + scratch.file("java/com/google/dummy/aspect/BUILD", + "j2objc_library(", + " name = 'transpile',", + " deps = ['" + label + "'],", + ")"); + + return view.getPrerequisiteConfiguredTargetForTesting( + reporter, + getConfiguredTarget("//java/com/google/dummy/aspect:transpile"), + Label.parseAbsoluteUnchecked(label), + masterConfig); + } + + @Before + public final void setup() throws Exception { + scratch.file("java/com/google/dummy/test/test.java"); + scratch.file("java/com/google/dummy/test/BUILD", + "package(default_visibility=['//visibility:public'])", + "java_library(", + " name = 'test',", + " srcs = ['test.java'])", + "", + "j2objc_library(", + " name = 'transpile',", + " deps = ['test'])"); + MockObjcSupport.setup(mockToolsConfig); + MockObjcSupport.setupIosSimDevice(mockToolsConfig); + MockObjcSupport.setupIosTest(mockToolsConfig); + MockJ2ObjcSupport.setup(mockToolsConfig); + MockProtoSupport.setup(mockToolsConfig); + MockObjcSupport.setupObjcProto(mockToolsConfig); + + useConfiguration("--proto_toolchain_for_java=//tools/proto/toolchains:java"); + + mockToolsConfig.create( + "tools/proto/toolchains/BUILD", + "package(default_visibility=['//visibility:public'])", + "proto_lang_toolchain(name = 'java', command_line = 'dont_care')", + "proto_lang_toolchain(name='java_stubby1_immutable', command_line = 'dont_care')", + "proto_lang_toolchain(name='java_stubby3_immutable', command_line = 'dont_care')", + "proto_lang_toolchain(name='java_stubby_compatible13_immutable', " + + "command_line = 'dont_care')"); + + invalidatePackages(); + } +} |