diff options
author | 2017-08-18 20:29:31 +0200 | |
---|---|---|
committer | 2017-08-21 14:15:54 +0200 | |
commit | f3ec180d0373289b25d96c9d00d2d2d027ae147d (patch) | |
tree | d491daadf7b4f1c2b3363cf82441d876965b64fb /src/test | |
parent | 3e0277ab880c9126883e73c78c7431e836ebb32e (diff) |
j2objc java tests work for --experimental_objc_crosstool=all
PiperOrigin-RevId: 165730337
Diffstat (limited to 'src/test')
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java | 248 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/rules/objc/LegacyBazelJ2ObjcLibraryTest.java | 228 |
2 files changed, 258 insertions, 218 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 a7b9e1e7ab..684426ef22 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 @@ -17,20 +17,29 @@ package com.google.devtools.build.lib.rules.objc; import static com.google.common.truth.Truth.assertThat; import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.getFirstArtifactEndingWith; +import com.google.common.base.Joiner; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Iterables; import com.google.devtools.build.lib.actions.AbstractAction; +import com.google.devtools.build.lib.actions.ActionAnalysisMetadata; import com.google.devtools.build.lib.actions.ActionExecutionContext; +import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.ActionInputPrefetcher; import com.google.devtools.build.lib.actions.Artifact; +import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; +import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.CommandAction; import com.google.devtools.build.lib.analysis.ConfiguredTarget; +import com.google.devtools.build.lib.analysis.actions.ActionTemplate.ActionTemplateExpansionException; import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction; import com.google.devtools.build.lib.analysis.actions.SpawnAction; import com.google.devtools.build.lib.cmdline.Label; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.packages.util.MockObjcSupport; +import com.google.devtools.build.lib.rules.apple.AppleConfiguration; +import com.google.devtools.build.lib.rules.apple.AppleToolchain; +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.vfs.PathFragment; @@ -47,6 +56,7 @@ import org.junit.runners.JUnit4; */ @RunWith(JUnit4.class) public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest { + @Test public void testJ2ObjCInformationExportedFromJ2ObjcLibrary() throws Exception { ConfiguredTarget j2objcLibraryTarget = getConfiguredTarget( @@ -432,8 +442,8 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest { Artifact archiveFile, String objFileName, Iterable<String> compilationInputExecPaths) throws Exception { CommandAction compileAction = getObjcCompileAction(archiveFile, objFileName); - assertThat(Artifact.toRootRelativePaths(compileAction.getInputs())).containsAllIn( - compilationInputExecPaths); + assertThat(Artifact.toRootRelativePaths(compileAction.getPossibleInputsForTesting())) + .containsAllIn(compilationInputExecPaths); } protected CommandAction getObjcCompileAction(Artifact archiveFile, String objFileName) @@ -746,4 +756,238 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest { Iterables.getOnlyElement(linkAction.getOutputs()).getExecPathString(); assertThat(fullyLinkBinaryPath).contains("transpile_fully_linked.a"); } + + @Test + public void testObjcCompileAction() throws Exception { + Artifact archive = j2objcArchive("//java/com/google/dummy/test:transpile", "test"); + CommandAction compileAction = getObjcCompileAction(archive, "test.o"); + assertThat(Artifact.toRootRelativePaths(compileAction.getPossibleInputsForTesting())) + .containsAllOf( + "third_party/java/j2objc/jre_core.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m"); + assertThat(compileAction.getArguments()).containsAllOf("-fno-objc-arc", "-fno-strict-overflow"); + } + + @Test + public void testJ2ObjcSourcesCompilationAndLinking() throws Exception { + addSimpleBinaryTarget("//java/com/google/dummy/test:transpile"); + + checkObjcArchiveAndLinkActions( + "//app:app", + "libtest_j2objc.a", + "test.o", + ImmutableList.of( + "third_party/java/j2objc/jre_core.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m")); + } + + @Test + public void testNestedJ2ObjcLibraryDeps() throws Exception { + scratch.file("java/com/google/dummy/dummy.java"); + scratch.file( + "java/com/google/dummy/BUILD", + "package(default_visibility=['//visibility:public'])", + "java_library(", + " name = 'dummy',", + " srcs = ['dummy.java'])", + "", + "j2objc_library(", + " name = 'transpile',", + " deps = [", + " ':dummy',", + " '//java/com/google/dummy/test:transpile',", + " ])"); + addSimpleBinaryTarget("//java/com/google/dummy:transpile"); + + checkObjcArchiveAndLinkActions( + "//app:app", + "libtest_j2objc.a", + "test.o", + ImmutableList.of( + "third_party/java/j2objc/jre_core.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m")); + + checkObjcArchiveAndLinkActions( + "//app:app", + "libdummy_j2objc.a", + "dummy.o", + ImmutableList.of( + "third_party/java/j2objc/jre_core.h", + "java/com/google/dummy/_j2objc/dummy/java/com/google/dummy/dummy.h", + "java/com/google/dummy/_j2objc/dummy/java/com/google/dummy/dummy.m")); + } + + @Test + public void testJ2ObjcTranspiledHeaderInCompilationAction() throws Exception { + scratch.file("app/lib.m"); + scratch.file( + "app/BUILD", + "package(default_visibility=['//visibility:public'])", + "objc_library(", + " name = 'lib',", + " srcs = ['lib.m'],", + " deps = ['//java/com/google/dummy/test:transpile'])"); + + checkObjcCompileActions( + getBinArtifact("liblib.a", getConfiguredTarget("//app:lib")), + "lib.o", + ImmutableList.of( + "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h")); + } + + @Test + public void testJ2ObjcDeadCodeRemovalActionWithOptFlag() throws Exception { + useConfiguration("--j2objc_dead_code_removal"); + addSimpleJ2ObjcLibraryWithEntryClasses(); + addSimpleBinaryTarget("//java/com/google/app/test:transpile"); + + ConfiguredTarget appTarget = getConfiguredTarget("//app:app", getAppleCrosstoolConfiguration()); + Artifact prunedArchive = + getBinArtifact( + "_j2objc_pruned/app/java/com/google/app/test/libtest_j2objc_pruned.a", appTarget); + Artifact paramFile = + getBinArtifact("_j2objc_pruned/app/java/com/google/app/test/test.param.j2objc", appTarget); + + ConfiguredTarget javaTarget = + getConfiguredTarget("//java/com/google/app/test:test", getAppleCrosstoolConfiguration()); + Artifact inputArchive = getBinArtifact("libtest_j2objc.a", javaTarget); + Artifact headerMappingFile = getBinArtifact("test.mapping.j2objc", javaTarget); + Artifact dependencyMappingFile = getBinArtifact("test.dependency_mapping.j2objc", javaTarget); + Artifact archiveSourceMappingFile = + getBinArtifact("test.archive_source_mapping.j2objc", javaTarget); + String execPath = + javaTarget.getConfiguration().getBinDirectory(RepositoryName.MAIN).getExecPath() + "/"; + + ParameterFileWriteAction paramFileAction = + (ParameterFileWriteAction) getGeneratingAction(paramFile); + assertContainsSublist( + ImmutableList.copyOf(paramFileAction.getContents()), + new ImmutableList.Builder<String>() + .add("--input_archive") + .add(inputArchive.getExecPathString()) + .add("--output_archive") + .add(prunedArchive.getExecPathString()) + .add("--dummy_archive") + .add(execPath + "tools/objc/libdummy_lib.a") + .add("--xcrunwrapper") + .add("tools/objc/xcrunwrapper") + .add("--dependency_mapping_files") + .add(dependencyMappingFile.getExecPathString()) + .add("--header_mapping_files") + .add(headerMappingFile.getExecPathString()) + .add("--archive_source_mapping_files") + .add(archiveSourceMappingFile.getExecPathString()) + .add("--entry_classes") + .add("com.google.app.test.test") + .build()); + + SpawnAction deadCodeRemovalAction = (SpawnAction) getGeneratingAction(prunedArchive); + assertContainsSublist( + deadCodeRemovalAction.getArguments(), + new ImmutableList.Builder<String>() + .add("tools/objc/j2objc_dead_code_pruner.py") + .add("@" + paramFile.getExecPathString()) + .build()); + assertThat(deadCodeRemovalAction.getOutputs()).containsExactly(prunedArchive); + } + + /** Returns the actions created by the action template corresponding to given artifact. */ + protected Iterable<CommandAction> getActionsForInputsOfGeneratingActionTemplate( + Artifact artifact, TreeFileArtifact treeFileArtifact) + throws ActionTemplateExpansionException { + CppCompileActionTemplate template = + (CppCompileActionTemplate) getActionGraph().getGeneratingAction(artifact); + return ImmutableList.<CommandAction>builder() + .addAll( + template.generateActionForInputArtifacts( + ImmutableList.of(treeFileArtifact), ArtifactOwner.NULL_OWNER)) + .build(); + } + + @Test + public void testCompileActionTemplateFromGenJar() throws Exception { + useConfiguration("--cpu=ios_i386", "--ios_minimum_os=1.0"); + addSimpleJ2ObjcLibraryWithJavaPlugin(); + Artifact archive = j2objcArchive("//java/com/google/app/test:transpile", "test"); + CommandAction archiveAction = (CommandAction) getGeneratingAction(archive); + Artifact objectFilesFromGenJar = + getFirstArtifactEndingWith(archiveAction.getInputs(), "source_files"); + + assertThat(objectFilesFromGenJar.isTreeArtifact()).isTrue(); + assertThat(objectFilesFromGenJar.getRootRelativePathString()) + .isEqualTo( + "java/com/google/app/test/_objs/test/java/com/google/app/test/_j2objc/" + + "src_jar_files/test/source_files"); + + ActionAnalysisMetadata actionTemplate = + getActionGraph().getGeneratingAction(objectFilesFromGenJar); + Artifact sourceFilesFromGenJar = + getFirstArtifactEndingWith(actionTemplate.getInputs(), "source_files"); + Artifact headerFilesFromGenJar = + getFirstArtifactEndingWith(actionTemplate.getInputs(), "header_files"); + assertThat(sourceFilesFromGenJar.getRootRelativePathString()) + .isEqualTo("java/com/google/app/test/_j2objc/src_jar_files/test/source_files"); + assertThat(headerFilesFromGenJar.getRootRelativePathString()) + .isEqualTo("java/com/google/app/test/_j2objc/src_jar_files/test/header_files"); + + // The files contained inside the tree artifacts are not known until execution time. + // Therefore we need to fake some files inside them to test the action template in this + // analysis-time test. + TreeFileArtifact oneSourceFileFromGenJar = + ActionInputHelper.treeFileArtifact(sourceFilesFromGenJar, "children1.m"); + TreeFileArtifact oneObjFileFromGenJar = + ActionInputHelper.treeFileArtifact(objectFilesFromGenJar, "children1.o"); + Iterable<CommandAction> compileActions = + getActionsForInputsOfGeneratingActionTemplate( + objectFilesFromGenJar, oneSourceFileFromGenJar); + CommandAction compileAction = Iterables.getOnlyElement(compileActions); + ConfiguredTarget j2objcLibraryTarget = + getConfiguredTarget("//java/com/google/dummy/test:transpile"); + String genfilesFragment = + j2objcLibraryTarget.getConfiguration().getGenfilesFragment().toString(); + String binFragment = j2objcLibraryTarget.getConfiguration().getBinFragment().toString(); + AppleConfiguration appleConfiguration = + j2objcLibraryTarget.getConfiguration().getFragment(AppleConfiguration.class); + + String commandLine = Joiner.on(" ").join(compileAction.getArguments()); + ImmutableList<String> expectedArgs = + new ImmutableList.Builder<String>() + .addAll(AppleToolchain.DEFAULT_WARNINGS.values()) + .add("-fexceptions") + .add("-fasm-blocks") + .add("-fobjc-abi-version=2") + .add("-fobjc-legacy-dispatch") + .add("-DOS_IOS") + .add("-mios-simulator-version-min=1.0") + .add("-arch", "i386") + .add("-isysroot") + .add(AppleToolchain.sdkDir()) + .add("-F") + .add(AppleToolchain.sdkDir() + "/Developer/Library/Frameworks") + .add("-F") + .add(AppleToolchain.platformDeveloperFrameworkDir(appleConfiguration)) + .add("-O0") + .add("-DDEBUG=1") + .add("-iquote") + .add(".") + .add("-iquote") + .add(genfilesFragment) + .add("-I") + .add(binFragment + "/java/com/google/app/test/_j2objc/test") + .add("-I") + .add(headerFilesFromGenJar.getExecPathString()) + .add("-fno-strict-overflow") + .add("-fno-objc-arc") + .add("-c") + .add(oneSourceFileFromGenJar.getExecPathString()) + .add("-o") + .add(oneObjFileFromGenJar.getExecPathString()) + .build(); + for (String expectedArg : expectedArgs) { + assertThat(commandLine).contains(expectedArg); + } + } } diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/LegacyBazelJ2ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/LegacyBazelJ2ObjcLibraryTest.java index 669cac0d4b..8fe79b5526 100644 --- a/src/test/java/com/google/devtools/build/lib/rules/objc/LegacyBazelJ2ObjcLibraryTest.java +++ b/src/test/java/com/google/devtools/build/lib/rules/objc/LegacyBazelJ2ObjcLibraryTest.java @@ -14,26 +14,15 @@ package com.google.devtools.build.lib.rules.objc; -import static com.google.common.truth.Truth.assertThat; -import static com.google.devtools.build.lib.actions.util.ActionsTestUtil.getFirstArtifactEndingWith; - import com.google.common.collect.ImmutableList; -import com.google.common.collect.Iterables; -import com.google.devtools.build.lib.actions.ActionInputHelper; import com.google.devtools.build.lib.actions.Artifact; import com.google.devtools.build.lib.actions.Artifact.TreeFileArtifact; import com.google.devtools.build.lib.actions.ArtifactOwner; import com.google.devtools.build.lib.actions.CommandAction; -import com.google.devtools.build.lib.analysis.ConfiguredTarget; -import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction; -import com.google.devtools.build.lib.analysis.actions.SpawnAction; +import com.google.devtools.build.lib.analysis.actions.ActionTemplate.ActionTemplateExpansionException; import com.google.devtools.build.lib.analysis.actions.SpawnActionTemplate; import com.google.devtools.build.lib.analysis.config.BuildConfiguration; -import com.google.devtools.build.lib.cmdline.RepositoryName; -import com.google.devtools.build.lib.rules.apple.AppleConfiguration; -import com.google.devtools.build.lib.rules.apple.AppleToolchain; import com.google.devtools.build.lib.rules.objc.ObjcCommandLineOptions.ObjcCrosstoolMode; -import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -53,209 +42,16 @@ public class LegacyBazelJ2ObjcLibraryTest extends BazelJ2ObjcLibraryTest { return targetConfig; } - @Test - public void testObjcCompileAction() throws Exception { - Artifact archive = j2objcArchive("//java/com/google/dummy/test:transpile", "test"); - CommandAction compileAction = getObjcCompileAction(archive, "test.o"); - assertThat(Artifact.toRootRelativePaths(compileAction.getInputs())).containsExactly( - "third_party/java/j2objc/jre_core.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m", - "tools/objc/xcrunwrapper"); - assertThat(compileAction.getArguments()).containsAllOf("-fno-objc-arc", "-fno-strict-overflow"); - } - - @Test - public void testJ2ObjcSourcesCompilationAndLinking() throws Exception { - addSimpleBinaryTarget("//java/com/google/dummy/test:transpile"); - - checkObjcArchiveAndLinkActions("//app:app", "libtest_j2objc.a", "test.o", ImmutableList.of( - "third_party/java/j2objc/jre_core.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m")); - } - - @Test - public void testNestedJ2ObjcLibraryDeps() throws Exception { - scratch.file("java/com/google/dummy/dummy.java"); - scratch.file("java/com/google/dummy/BUILD", - "package(default_visibility=['//visibility:public'])", - "java_library(", - " name = 'dummy',", - " srcs = ['dummy.java'])", - "", - "j2objc_library(", - " name = 'transpile',", - " deps = [", - " ':dummy',", - " '//java/com/google/dummy/test:transpile',", - " ])"); - addSimpleBinaryTarget("//java/com/google/dummy:transpile"); - - checkObjcArchiveAndLinkActions("//app:app", "libtest_j2objc.a", "test.o", ImmutableList.of( - "third_party/java/j2objc/jre_core.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h", - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.m")); - - checkObjcArchiveAndLinkActions("//app:app", "libdummy_j2objc.a", "dummy.o", ImmutableList.of( - "third_party/java/j2objc/jre_core.h", - "java/com/google/dummy/_j2objc/dummy/java/com/google/dummy/dummy.h", - "java/com/google/dummy/_j2objc/dummy/java/com/google/dummy/dummy.m")); - } - - @Test - public void testJ2ObjcTranspiledHeaderInCompilationAction() throws Exception { - scratch.file("app/lib.m"); - scratch.file("app/BUILD", - "package(default_visibility=['//visibility:public'])", - "objc_library(", - " name = 'lib',", - " srcs = ['lib.m'],", - " deps = ['//java/com/google/dummy/test:transpile'])"); - - checkObjcCompileActions(getBinArtifact("liblib.a", getConfiguredTarget("//app:lib")), "lib.o", - ImmutableList.of( - "java/com/google/dummy/test/_j2objc/test/java/com/google/dummy/test/test.h")); - } - - @Test - public void testJ2ObjcDeadCodeRemovalActionWithOptFlag() throws Exception { - useConfiguration("--j2objc_dead_code_removal"); - addSimpleJ2ObjcLibraryWithEntryClasses(); - addSimpleBinaryTarget("//java/com/google/app/test:transpile"); - - ConfiguredTarget appTarget = getConfiguredTarget("//app:app", getAppleCrosstoolConfiguration()); - Artifact prunedArchive = - getBinArtifact( - "_j2objc_pruned/app/java/com/google/app/test/libtest_j2objc_pruned.a", appTarget); - Artifact paramFile = - getBinArtifact("_j2objc_pruned/app/java/com/google/app/test/test.param.j2objc", appTarget); - - ConfiguredTarget javaTarget = - getConfiguredTarget("//java/com/google/app/test:test", getAppleCrosstoolConfiguration()); - Artifact inputArchive = getBinArtifact("libtest_j2objc.a", javaTarget); - Artifact headerMappingFile = getBinArtifact("test.mapping.j2objc", javaTarget); - Artifact dependencyMappingFile = getBinArtifact("test.dependency_mapping.j2objc", javaTarget); - Artifact archiveSourceMappingFile = - getBinArtifact("test.archive_source_mapping.j2objc", javaTarget); - String execPath = - javaTarget.getConfiguration().getBinDirectory(RepositoryName.MAIN).getExecPath() + "/"; - - ParameterFileWriteAction paramFileAction = - (ParameterFileWriteAction) getGeneratingAction(paramFile); - assertContainsSublist( - ImmutableList.copyOf(paramFileAction.getContents()), - new ImmutableList.Builder<String>() - .add("--input_archive") - .add(inputArchive.getExecPathString()) - .add("--output_archive") - .add(prunedArchive.getExecPathString()) - .add("--dummy_archive") - .add(execPath + "tools/objc/libdummy_lib.a") - .add("--xcrunwrapper") - .add("tools/objc/xcrunwrapper") - .add("--dependency_mapping_files") - .add(dependencyMappingFile.getExecPathString()) - .add("--header_mapping_files") - .add(headerMappingFile.getExecPathString()) - .add("--archive_source_mapping_files") - .add(archiveSourceMappingFile.getExecPathString()) - .add("--entry_classes") - .add("com.google.app.test.test") - .build()); - - SpawnAction deadCodeRemovalAction = (SpawnAction) getGeneratingAction(prunedArchive); - assertContainsSublist( - deadCodeRemovalAction.getArguments(), - new ImmutableList.Builder<String>() - .add("tools/objc/j2objc_dead_code_pruner.py") - .add("@" + paramFile.getExecPathString()) - .build()); - assertThat(deadCodeRemovalAction.getOutputs()).containsExactly(prunedArchive); - } - - @Test - public void testCompileActionTemplateFromGenJar() throws Exception { - useConfiguration("--cpu=ios_i386", "--ios_minimum_os=1.0"); - addSimpleJ2ObjcLibraryWithJavaPlugin(); - Artifact archive = j2objcArchive("//java/com/google/app/test:transpile", "test"); - CommandAction archiveAction = (CommandAction) getGeneratingAction(archive); - Artifact objectFilesFromGenJar = - getFirstArtifactEndingWith(archiveAction.getInputs(), "source_files"); - - assertThat(objectFilesFromGenJar.isTreeArtifact()).isTrue(); - assertThat(objectFilesFromGenJar.getRootRelativePathString()) - .isEqualTo( - "java/com/google/app/test/_objs/test/java/com/google/app/test/_j2objc/" - + "src_jar_files/test/source_files"); - - SpawnActionTemplate actionTemplate = - (SpawnActionTemplate) getActionGraph().getGeneratingAction(objectFilesFromGenJar); - Artifact sourceFilesFromGenJar = - getFirstArtifactEndingWith(actionTemplate.getInputs(), "source_files"); - Artifact headerFilesFromGenJar = - getFirstArtifactEndingWith(actionTemplate.getInputs(), "header_files"); - assertThat(sourceFilesFromGenJar.getRootRelativePathString()) - .isEqualTo("java/com/google/app/test/_j2objc/src_jar_files/test/source_files"); - assertThat(headerFilesFromGenJar.getRootRelativePathString()) - .isEqualTo("java/com/google/app/test/_j2objc/src_jar_files/test/header_files"); - - // The files contained inside the tree artifacts are not known until execution time. - // Therefore we need to fake some files inside them to test the action template in this - // analysis-time test. - TreeFileArtifact oneSourceFileFromGenJar = - ActionInputHelper.treeFileArtifact(sourceFilesFromGenJar, "children1.m"); - TreeFileArtifact oneObjFileFromGenJar = - ActionInputHelper.treeFileArtifact(objectFilesFromGenJar, "children1.o"); - Iterable<SpawnAction> compileActions = - actionTemplate.generateActionForInputArtifacts( - ImmutableList.of(oneSourceFileFromGenJar), ArtifactOwner.NULL_OWNER); - SpawnAction compileAction = Iterables.getOnlyElement(compileActions); - ConfiguredTarget j2objcLibraryTarget = - getConfiguredTarget("//java/com/google/dummy/test:transpile"); - String genfilesFragment = - j2objcLibraryTarget.getConfiguration().getGenfilesFragment().toString(); - String binFragment = j2objcLibraryTarget.getConfiguration().getBinFragment().toString(); - AppleConfiguration appleConfiguration = - j2objcLibraryTarget.getConfiguration().getFragment(AppleConfiguration.class); - - assertThat(compileAction.getArguments()) - .containsExactlyElementsIn( - new ImmutableList.Builder<String>() - .add(MOCK_XCRUNWRAPPER_PATH) - .add("clang") - .addAll(AppleToolchain.DEFAULT_WARNINGS.values()) - .add("-fexceptions") - .add("-fasm-blocks") - .add("-fobjc-abi-version=2") - .add("-fobjc-legacy-dispatch") - .add("-DOS_IOS") - .add("-mios-simulator-version-min=1.0") - .add("-arch", "i386") - .add("-isysroot") - .add(AppleToolchain.sdkDir()) - .add("-F") - .add(AppleToolchain.sdkDir() + "/Developer/Library/Frameworks") - .add("-F") - .add(AppleToolchain.platformDeveloperFrameworkDir(appleConfiguration)) - .add("-O0") - .add("-DDEBUG=1") - .add("-iquote") - .add(".") - .add("-iquote") - .add(genfilesFragment) - .add("-I") - .add(binFragment + "/java/com/google/app/test/_j2objc/test") - .add("-I") - .add(headerFilesFromGenJar.getExecPathString()) - .add("-fno-strict-overflow") - .add("-fno-objc-arc") - .add("-c") - .add(oneSourceFileFromGenJar.getExecPathString()) - .add("-o") - .add(oneObjFileFromGenJar.getExecPathString()) - .build()) - .inOrder(); + @Override + protected Iterable<CommandAction> getActionsForInputsOfGeneratingActionTemplate( + Artifact artifact, TreeFileArtifact treeFileArtifact) + throws ActionTemplateExpansionException { + SpawnActionTemplate template = + (SpawnActionTemplate) getActionGraph().getGeneratingAction(artifact); + return ImmutableList.<CommandAction>builder() + .addAll( + template.generateActionForInputArtifacts( + ImmutableList.of(treeFileArtifact), ArtifactOwner.NULL_OWNER)) + .build(); } - } |