ArtifactRoot correctly switches output base when serializing.
PiperOrigin-RevId: 190779535
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
index 26efc19..e7ead54 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ArtifactTest.java
@@ -346,6 +346,7 @@
PathFragment.create("src/c"),
new LabelArtifactOwner(Label.parseAbsoluteUnchecked("//foo:bar"))))
.addDependency(FileSystem.class, scratch.getFileSystem())
+ .addDependency(OutputBaseSupplier.class, () -> scratch.getFileSystem().getPath("/"))
.runTests();
}
diff --git a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
index fedc601..83e3f31 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/ExecutableSymlinkActionTest.java
@@ -37,6 +37,7 @@
@RunWith(JUnit4.class)
public class ExecutableSymlinkActionTest {
private Scratch scratch = new Scratch();
+ private Path execRoot;
private ArtifactRoot inputRoot;
private ArtifactRoot outputRoot;
TestFileOutErr outErr;
@@ -46,7 +47,7 @@
@Before
public final void createExecutor() throws Exception {
final Path inputDir = scratch.dir("/in");
- Path execRoot = scratch.getFileSystem().getPath("/");
+ execRoot = scratch.getFileSystem().getPath("/");
inputRoot = ArtifactRoot.asDerivedRoot(execRoot, inputDir);
outputRoot = ArtifactRoot.asDerivedRoot(execRoot, scratch.dir("/out"));
outErr = new TestFileOutErr();
@@ -125,6 +126,7 @@
ExecutableSymlinkAction action = new ExecutableSymlinkAction(NULL_ACTION_OWNER, input, output);
new SerializationTester(action)
.addDependency(FileSystem.class, scratch.getFileSystem())
+ .addDependency(OutputBaseSupplier.class, () -> execRoot)
.setVerificationFunction(
(in, out) -> {
ExecutableSymlinkAction inAction = (ExecutableSymlinkAction) in;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
index b304558..cdd4760 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkActionTest.java
@@ -22,6 +22,7 @@
import com.google.devtools.build.lib.actions.ActionResult;
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.Executor;
+import com.google.devtools.build.lib.actions.OutputBaseSupplier;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
import com.google.devtools.build.lib.skyframe.serialization.testutils.SerializationTester;
@@ -47,7 +48,7 @@
private SymlinkAction action;
@Before
- public final void setUp() throws Exception {
+ public final void setUp() throws Exception {
input = scratch.file("input.txt", "Hello, world.");
inputArtifact = getSourceArtifact("input.txt");
Path linkedInput =
@@ -98,6 +99,7 @@
public void testCodec() throws Exception {
new SerializationTester(action)
.addDependency(FileSystem.class, scratch.getFileSystem())
+ .addDependency(OutputBaseSupplier.class, () -> outputBase)
.setVerificationFunction(
(in, out) -> {
SymlinkAction inAction = (SymlinkAction) in;
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
index 7580624..637bd39 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BuildViewTestCase.java
@@ -1999,8 +1999,7 @@
Artifact inputManifest = Iterables.getOnlyElement(symlinkTreeAction.getInputs());
SourceManifestAction inputManifestAction =
(SourceManifestAction) getGeneratingAction(inputManifest);
- // Ask the manifest to write itself to a byte array so that we can
- // read its contents.
+ // Ask the manifest to write itself to a byte array so that we can read its contents.
ByteArrayOutputStream stream = new ByteArrayOutputStream();
inputManifestAction.writeOutputFile(stream, reporter);
String contents = stream.toString();
@@ -2053,4 +2052,8 @@
return view.getArtifactFactory()
.getDerivedArtifact(target.getLabel().getPackageFragment().getRelative(path), root, owner);
}
+
+ public Path getExecRoot() {
+ return directories.getExecRoot(ruleClassProvider.getRunfilesPrefix());
+ }
}
diff --git a/src/test/java/com/google/devtools/build/lib/exec/MiddlemanActionTest.java b/src/test/java/com/google/devtools/build/lib/exec/MiddlemanActionTest.java
index 5c176fe..c49d5e5 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/MiddlemanActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/MiddlemanActionTest.java
@@ -23,6 +23,7 @@
import com.google.devtools.build.lib.actions.Artifact;
import com.google.devtools.build.lib.actions.MiddlemanAction;
import com.google.devtools.build.lib.actions.MiddlemanFactory;
+import com.google.devtools.build.lib.actions.OutputBaseSupplier;
import com.google.devtools.build.lib.analysis.util.AnalysisTestUtil;
import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
import com.google.devtools.build.lib.cmdline.RepositoryName;
@@ -142,6 +143,7 @@
public void testCodec() throws Exception {
new SerializationTester(getGeneratingAction(middle))
.addDependency(FileSystem.class, scratch.getFileSystem())
+ .addDependency(OutputBaseSupplier.class, () -> outputBase)
.setVerificationFunction(MiddlemanActionTest::verifyEquivalent)
.runTests();
}
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
index a7b4602..2905030 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TreeArtifactBuildTest.java
@@ -42,6 +42,7 @@
import com.google.devtools.build.lib.actions.ArtifactRoot;
import com.google.devtools.build.lib.actions.BuildFailedException;
import com.google.devtools.build.lib.actions.MutableActionGraph.ActionConflictException;
+import com.google.devtools.build.lib.actions.OutputBaseSupplier;
import com.google.devtools.build.lib.actions.cache.MetadataHandler;
import com.google.devtools.build.lib.actions.util.ActionsTestUtil;
import com.google.devtools.build.lib.actions.util.TestAction;
@@ -117,6 +118,8 @@
public void testCodec() throws Exception {
new SerializationTester(outOne, outOneFileOne)
.addDependency(FileSystem.class, scratch.getFileSystem())
+ .addDependency(
+ OutputBaseSupplier.class, () -> scratch.getFileSystem().getPath(TestUtils.tmpDir()))
.runTests();
}