aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/objc/J2ObjcLibraryTest.java
diff options
context:
space:
mode:
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.java101
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();
+ }
+}