aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
diff options
context:
space:
mode:
authorGravatar Mike Lewis <lewis@squareup.com>2018-03-01 08:19:14 -0800
committerGravatar Copybara-Service <copybara-piper@google.com>2018-03-01 08:20:42 -0800
commitf43df1e29765f75e02838e4139417e914b3ee812 (patch)
tree5f366006c984984aab58d70b1d091dc94b60a627 /src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
parent940dbc531bf79907806bcf4f09543b3a2468d9b1 (diff)
Fixing issue with external j2objc protos
The output files are created without a repository, but the expected filenames have them This resolves issues when having a proto_library from an external build file. This seems to be a regression, so maybe should go into the 0.8.0 branch? Note: Work at Square and we have a signed CLA with google Note, without this fix we get errors like ``` ERROR: /private/var/tmp/_bazel_lewis/4a25cfc2b9b758043413ac58525ef6b4/external/AllProtos/BUILD.bazel:27:1: output 'external/AllProtos/squareup/objc/objc.j2objc.pb.m' was not created ERROR: /private/var/tmp/_bazel_lewis/4a25cfc2b9b758043413ac58525ef6b4/external/AllProtos/BUILD.bazel:27:1: output 'external/AllProtos/squareup/objc/objc.j2objc.pb.h' was not created ``` Closes #4058. PiperOrigin-RevId: 187480864
Diffstat (limited to 'src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
index 6a72c21ef9..45f55abe31 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java
@@ -47,6 +47,7 @@ import com.google.devtools.build.lib.rules.cpp.CppCompileActionTemplate;
import com.google.devtools.build.lib.rules.cpp.CppModuleMapAction;
import com.google.devtools.build.lib.rules.cpp.UmbrellaHeaderAction;
import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.build.lib.vfs.FileSystemUtils;
import com.google.devtools.build.lib.vfs.PathFragment;
import java.io.ByteArrayOutputStream;
import java.util.List;
@@ -277,6 +278,50 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
}
@Test
+ public void testJavaProtoLibraryWithProtoLibrary_external() throws Exception {
+ scratch.file("/bla/WORKSPACE");
+ // Create the rule '@bla//foo:test_proto'.
+ scratch.file(
+ "/bla/foo/BUILD",
+ "package(default_visibility=['//visibility:public'])",
+ j2ObjcCompatibleProtoLibrary(" name = 'test_proto',", " srcs = ['test.proto'],"),
+ "java_proto_library(",
+ " name = 'test_java_proto',",
+ " deps = [':test_proto'])",
+ "");
+
+ String existingWorkspace =
+ new String(FileSystemUtils.readContentAsLatin1(rootDirectory.getRelative("WORKSPACE")));
+ scratch.overwriteFile(
+ "WORKSPACE", "local_repository(name = 'bla', path = '/bla/')", existingWorkspace);
+ invalidatePackages(); // A dash of magic to re-evaluate the WORKSPACE file.
+
+ scratch.file(
+ "x/BUILD",
+ "",
+ "java_library(",
+ " name = 'test',",
+ " srcs = ['test.java'],",
+ " deps = ['@bla//foo:test_java_proto'])");
+
+ ConfiguredTarget target = getJ2ObjCAspectConfiguredTarget("//x:test");
+ ConfiguredTarget test =
+ getConfiguredTarget("@bla//foo:test_proto", getAppleCrosstoolConfiguration());
+
+ J2ObjcMappingFileProvider provider = target.getProvider(J2ObjcMappingFileProvider.class);
+
+ Artifact classMappingFile = getGenfilesArtifact("test.clsmap.properties", test);
+ assertThat(provider.getClassMappingFiles()).containsExactly(classMappingFile);
+
+ ObjcProvider objcProvider = target.get(ObjcProvider.SKYLARK_CONSTRUCTOR);
+
+ Artifact headerFile = getGenfilesArtifact("test.j2objc.pb.h", test);
+ Artifact sourceFile = getGenfilesArtifact("test.j2objc.pb.m", test);
+ assertThat(objcProvider.get(ObjcProvider.HEADER)).contains(headerFile);
+ assertThat(objcProvider.get(ObjcProvider.SOURCE)).contains(sourceFile);
+ }
+
+ @Test
public void testJ2ObjcInfoExportedInJavaImport() throws Exception {
scratch.file("java/com/google/transpile/BUILD",
"java_import(name = 'dummy',",