diff options
author | 2018-03-01 08:19:14 -0800 | |
---|---|---|
committer | 2018-03-01 08:20:42 -0800 | |
commit | f43df1e29765f75e02838e4139417e914b3ee812 (patch) | |
tree | 5f366006c984984aab58d70b1d091dc94b60a627 /src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java | |
parent | 940dbc531bf79907806bcf4f09543b3a2468d9b1 (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.java | 45 |
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',", |