aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/test/java
diff options
context:
space:
mode:
authorGravatar tomlu <tomlu@google.com>2018-04-26 08:31:52 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-04-26 08:34:42 -0700
commite28711b351c9f413281e638c5ea171128dd99f82 (patch)
tree37d951a1acb64d5a18dfdc65b08fa0e38879db2e /src/test/java
parent8ca66458a42266f11aba77732b05ab06b96e95fb (diff)
Abstract away the param file write action from tests.
Rule authors frequently wants to make assertions on the parameter files their rule implementations have created. However, if they do not explicitly create parameter file write actions, or if indeed _there aren't_ any parameter file write actions inserted into the action graph, the tests will fail. This CL puts an abstraction between the tests and obtaining their parameter files, allowing us to change the implementation without updating hundreds of lines of test code in the same CL. Note that we can no longer sanely assert that the parameter file argument is inserted into the main command line, because the parameter file system controls both whether it is inserted and the name used. Those assertions have been removed where found. RELNOTES: None PiperOrigin-RevId: 194400303
Diffstat (limited to 'src/test/java')
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/BazelJ2ObjcLibraryTest.java31
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcImportTest.java2
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java7
-rw-r--r--src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java19
4 files changed, 14 insertions, 45 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 d632a3c030..29db32ad0c 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
@@ -23,6 +23,7 @@ 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.Action;
import com.google.devtools.build.lib.actions.ActionAnalysisMetadata;
import com.google.devtools.build.lib.actions.ActionExecutionContext;
import com.google.devtools.build.lib.actions.ActionInputHelper;
@@ -34,7 +35,6 @@ 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.config.BuildConfiguration;
import com.google.devtools.build.lib.cmdline.Label;
@@ -51,7 +51,6 @@ 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;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.JUnit4;
@@ -439,11 +438,8 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
SpawnAction j2objcAction = (SpawnAction) getGeneratingAction(headers);
assertThat(j2objcAction.getOutputs()).containsAllOf(headers, sources);
- Artifact paramFile = getFirstArtifactEndingWith(j2objcAction.getInputs(), ".param.j2objc");
- ParameterFileWriteAction paramFileAction =
- (ParameterFileWriteAction) getGeneratingAction(paramFile);
assertContainsSublist(
- ImmutableList.copyOf(paramFileAction.getContents()),
+ ImmutableList.copyOf(paramFileArgsForAction(j2objcAction)),
ImmutableList.of(
"--output_gen_source_dir",
sources.getExecPathString(),
@@ -677,15 +673,10 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
")");
CommandAction linkAction = linkAction("//x:test");
- List<String> linkArgs = normalizeBashArgs(linkAction.getArguments());
ConfiguredTarget target = getConfiguredTargetInAppleBinaryTransition("//x:test");
String binDir =
getConfiguration(target).getBinDirectory(RepositoryName.MAIN).getExecPathString();
- Artifact fileList = getFirstArtifactEndingWith(linkAction.getInputs(), "test-linker.objlist");
- ParameterFileWriteAction filelistWriteAction =
- (ParameterFileWriteAction) getGeneratingAction(fileList);
- assertThat(linkArgs).contains(fileList.getExecPathString());
- assertThat(filelistWriteAction.getContents())
+ assertThat(paramFileArgsForAction(linkAction))
.containsAllOf(
binDir + "/java/c/y/libylib_j2objc.a",
// All jre libraries mus appear after java libraries in the link order.
@@ -706,18 +697,13 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
addSimpleJ2ObjcLibraryWithJavaPlugin();
Artifact archive = j2objcArchive("//java/com/google/app/test:transpile", "test");
CommandAction archiveAction = (CommandAction) getGeneratingAction(archive);
- Artifact archiveObjList =
- getFirstArtifactEndingWith(archiveAction.getInputs(), "-archive.objlist");
Artifact objectFilesFromGenJar =
getFirstArtifactEndingWith(archiveAction.getInputs(), "source_files");
Artifact normalObjectFile = getFirstArtifactEndingWith(archiveAction.getInputs(), "test.o");
- ParameterFileWriteAction paramFileAction =
- (ParameterFileWriteAction) getGeneratingAction(archiveObjList);
-
// Test that the archive obj list param file contains the individual object files inside
// the object file tree artifact.
- assertThat(paramFileAction.getContents(DUMMY_ARTIFACT_EXPANDER))
+ assertThat(paramFileCommandLineForAction(archiveAction).arguments(DUMMY_ARTIFACT_EXPANDER))
.containsExactly(
objectFilesFromGenJar.getExecPathString() + "/children1",
objectFilesFromGenJar.getExecPathString() + "/children2",
@@ -1008,9 +994,7 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
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);
-
+ Action action = getGeneratingAction(prunedArchive);
ConfiguredTarget javaTarget =
getConfiguredTargetInAppleBinaryTransition("//java/com/google/app/test:test");
Artifact inputArchive = getBinArtifact("libtest_j2objc.a", javaTarget);
@@ -1021,10 +1005,8 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
String execPath =
getConfiguration(javaTarget).getBinDirectory(RepositoryName.MAIN).getExecPath() + "/";
- ParameterFileWriteAction paramFileAction =
- (ParameterFileWriteAction) getGeneratingAction(paramFile);
assertContainsSublist(
- ImmutableList.copyOf(paramFileAction.getContents()),
+ ImmutableList.copyOf(paramFileArgsForAction(action)),
new ImmutableList.Builder<String>()
.add("--input_archive")
.add(inputArchive.getExecPathString())
@@ -1052,7 +1034,6 @@ public class BazelJ2ObjcLibraryTest extends J2ObjcLibraryTest {
.add(
TestConstants.TOOLS_REPOSITORY_PATH_PREFIX
+ "tools/objc/j2objc_dead_code_pruner.py")
- .add("@" + paramFile.getExecPathString())
.build());
assertThat(deadCodeRemovalAction.getOutputs()).containsExactly(prunedArchive);
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcImportTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcImportTest.java
index d312405810..e5c52271a4 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcImportTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcImportTest.java
@@ -72,7 +72,7 @@ public class ObjcImportTest extends ObjcRuleTestCase {
addTrivialImportLibrary();
createBinaryTargetWriter("//bin:bin").setList("deps", "//imp:imp").write();
CommandAction linkBinAction = linkAction("//bin:bin");
- verifyObjlist(linkBinAction, "bin-linker.objlist", "imp/precomp_lib.a");
+ verifyObjlist(linkBinAction, "imp/precomp_lib.a");
assertThat(Artifact.toExecPaths(linkBinAction.getInputs()))
.contains("imp/precomp_lib.a");
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
index 061eac34e4..abecb86aa7 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcLibraryTest.java
@@ -44,7 +44,6 @@ import com.google.devtools.build.lib.actions.CommandAction;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.analysis.ConfiguredTarget;
import com.google.devtools.build.lib.analysis.RunfilesProvider;
-import com.google.devtools.build.lib.analysis.actions.ParameterFileWriteAction;
import com.google.devtools.build.lib.analysis.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.CompilationMode;
import com.google.devtools.build.lib.analysis.util.ScratchAttributeWriter;
@@ -1226,9 +1225,9 @@ public class ObjcLibraryTest extends ObjcRuleTestCase {
scratch.file("lib/b.m");
scratch.file("lib/BUILD", "objc_library(name = 'lib1', srcs = ['a.m', 'b.m'])");
ConfiguredTarget target = getConfiguredTarget("//lib:lib1");
- Artifact objlist = getBinArtifact("lib1-archive.objlist", target);
- ParameterFileWriteAction action = (ParameterFileWriteAction) getGeneratingAction(objlist);
- assertThat(action.getContents())
+ Artifact lib = getBinArtifact("liblib1.a", target);
+ Action action = getGeneratingAction(lib);
+ assertThat(paramFileArgsForAction(action))
.containsExactlyElementsIn(
Artifact.toExecPaths(inputsEndingWith(archiveAction("//lib:lib1"), ".o")));
}
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
index 7ce1f00446..f6e31af4fc 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/ObjcRuleTestCase.java
@@ -44,7 +44,6 @@ import com.google.devtools.build.lib.analysis.OutputGroupInfo;
import com.google.devtools.build.lib.analysis.actions.BinaryFileWriteAction;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.Builder;
import com.google.devtools.build.lib.analysis.actions.CustomCommandLine.VectorArg;
-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.config.BuildConfiguration;
import com.google.devtools.build.lib.analysis.config.BuildOptions;
@@ -313,22 +312,14 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
* Verifies a {@code -filelist} file's contents.
*
* @param originalAction the action which uses the filelist artifact
- * @param objlistName the path suffix of the filelist artifact
* @param inputArchives path suffixes of the expected contents of the filelist
*/
- protected void verifyObjlist(Action originalAction, String objlistName, String... inputArchives)
- throws Exception {
- Artifact filelistArtifact =
- getFirstArtifactEndingWith(originalAction.getInputs(), objlistName);
-
- ParameterFileWriteAction fileWriteAction =
- (ParameterFileWriteAction) getGeneratingAction(filelistArtifact);
+ protected void verifyObjlist(Action originalAction, String... inputArchives) throws Exception {
ImmutableList.Builder<String> execPaths = ImmutableList.builder();
for (String inputArchive : inputArchives) {
execPaths.add(execPathEndingWith(originalAction.getInputs(), inputArchive));
}
-
- assertThat(fileWriteAction.getContents()).containsExactlyElementsIn(execPaths.build());
+ assertThat(paramFileArgsForAction(originalAction)).containsExactlyElementsIn(execPaths.build());
}
/**
@@ -1612,10 +1603,8 @@ public abstract class ObjcRuleTestCase extends BuildViewTestCase {
CommandAction x8664BinAction = (CommandAction) getGeneratingAction(
getFirstArtifactEndingWith(appLipoAction.getInputs(), x8664Prefix + "x/x_bin"));
- verifyObjlist(
- i386BinAction, "x/x-linker.objlist", "package/libcclib.a");
- verifyObjlist(
- x8664BinAction, "x/x-linker.objlist", "package/libcclib.a");
+ verifyObjlist(i386BinAction, "package/libcclib.a");
+ verifyObjlist(x8664BinAction, "package/libcclib.a");
assertThat(Artifact.toExecPaths(i386BinAction.getInputs()))
.containsAllOf(