Thread FileSystem through to a single Path#delete call site.

This requires a fairly large amount of changes to fundamental objects like BlazeRuntime, Executor, and so on, as well as changing a lot of test code to thread the file system through. I expect future CLs to be much smaller.

PiperOrigin-RevId: 173678144
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 1849284..7b73cf3 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
@@ -46,7 +46,7 @@
     inputRoot = Root.asDerivedRoot(inputDir);
     outputRoot = Root.asDerivedRoot(scratch.dir("/out"));
     outErr = new TestFileOutErr();
-    executor = new DummyExecutor(inputDir);
+    executor = new DummyExecutor(scratch.getFileSystem(), inputDir);
   }
 
   private ActionExecutionContext createContext() {
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java b/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
index 19043b2..34f6283 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/DummyExecutor.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.clock.BlazeClock;
 import com.google.devtools.build.lib.clock.Clock;
 import com.google.devtools.build.lib.events.EventHandler;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.Path;
 import com.google.devtools.common.options.OptionsClassProvider;
 
@@ -28,23 +29,30 @@
  */
 public final class DummyExecutor implements Executor {
 
+  private final FileSystem fileSystem;
   private final Path inputDir;
   private final EventHandler eventHandler;
 
-  public DummyExecutor(Path inputDir) {
-    this(inputDir, null);
+  public DummyExecutor(FileSystem fileSystem, Path inputDir) {
+    this(fileSystem, inputDir, null);
   }
 
   public DummyExecutor(EventHandler eventHandler) {
-    this(null, eventHandler);
+    this(null, null, eventHandler);
   }
 
-  public DummyExecutor(Path inputDir, EventHandler eventHandler) {
+  public DummyExecutor(FileSystem fileSystem, Path inputDir, EventHandler eventHandler) {
+    this.fileSystem = fileSystem;
     this.inputDir = inputDir;
     this.eventHandler = eventHandler;
   }
 
   @Override
+  public FileSystem getFileSystem() {
+    return fileSystem;
+  }
+
+  @Override
   public Path getExecRoot() {
     return inputDir;
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
index 1d07a72..be8da53 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/FileWriteActionTestCase.java
@@ -54,7 +54,7 @@
 
   @Before
   public final void createExecutorAndContext() throws Exception {
-    executor = new TestExecutorBuilder(directories, binTools).build();
+    executor = new TestExecutorBuilder(fileSystem, directories, binTools).build();
     context = new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null,
         new FileOutErr(), ImmutableMap.<String, String>of(), null);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
index 81ac13a..8cae433 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/ParamFileWriteActionTest.java
@@ -165,7 +165,7 @@
       }
     };
 
-    Executor executor = new TestExecutorBuilder(directories, binTools).build();
+    Executor executor = new TestExecutorBuilder(fileSystem, directories, binTools).build();
     return new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null,
         new FileOutErr(), ImmutableMap.<String, String>of(), artifactExpander);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java
index 1fb182a..7a9c035 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/PopulateTreeArtifactActionTest.java
@@ -319,9 +319,10 @@
 
   private ActionExecutionContext actionExecutionContext(
       List<Artifact> storingExpandedTreeFileArtifacts) throws Exception {
-    Executor executor = new TestExecutorBuilder(directories, null)
-        .setExecution(PopulateTreeArtifactAction.MNEMONIC, mock(SpawnActionContext.class))
-        .build();
+    Executor executor =
+        new TestExecutorBuilder(fileSystem, directories, null)
+            .setExecution(PopulateTreeArtifactAction.MNEMONIC, mock(SpawnActionContext.class))
+            .build();
 
     return new ActionExecutionContext(
         executor,
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 532615b..1114663 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
@@ -73,7 +73,7 @@
 
   @Test
   public void testSymlink() throws Exception {
-    Executor executor = new TestExecutorBuilder(directories, null).build();
+    Executor executor = new TestExecutorBuilder(fileSystem, directories, null).build();
     ActionResult actionResult =
         action.execute(
             new ActionExecutionContext(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
index 3f099f6..497ed2d 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/TemplateExpansionActionTest.java
@@ -101,7 +101,7 @@
 
   @Test
   public void testExpansion() throws Exception {
-    Executor executor = new TestExecutorBuilder(directories, binTools).build();
+    Executor executor = new TestExecutorBuilder(fileSystem, directories, binTools).build();
     create().execute(createContext(executor));
     String content = new String(FileSystemUtils.readContentAsLatin1(output));
     String expected = Joiner.on('\n').join("key=foo", "value=bar");
@@ -181,7 +181,7 @@
 
   private void executeTemplateExpansion(String expected, List<Substitution> substitutions)
       throws Exception {
-    Executor executor = new TestExecutorBuilder(directories, binTools).build();
+    Executor executor = new TestExecutorBuilder(fileSystem, directories, binTools).build();
     createWithArtifact(substitutions).execute(createContext(executor));
     String actual = FileSystemUtils.readContent(output, StandardCharsets.UTF_8);
     assertThat(actual).isEqualTo(expected);
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
index 0960a53..2bd7bcf 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/AnalysisTestCase.java
@@ -161,6 +161,7 @@
       PackageFactory pkgFactory, ImmutableList<BuildInfoFactory> buildInfoFactories) {
     return SequencedSkyframeExecutor.create(
         pkgFactory,
+        fileSystem,
         directories,
         workspaceStatusActionFactory,
         buildInfoFactories,
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 5ea5d2f..6e834d1 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
@@ -232,6 +232,7 @@
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
             pkgFactory,
+            fileSystem,
             directories,
             workspaceStatusActionFactory,
             ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
index 72d4540..57db7b0 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/ConfigurationTestCase.java
@@ -114,6 +114,7 @@
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
             pkgFactory,
+            fileSystem,
             directories,
             workspaceStatusActionFactory,
             ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
index 1912960..ac10bf1 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/BlazeExecutorTest.java
@@ -28,6 +28,7 @@
 import com.google.devtools.build.lib.exec.util.TestExecutorBuilder;
 import com.google.devtools.build.lib.testutil.Suite;
 import com.google.devtools.build.lib.testutil.TestSpec;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.inmemoryfs.InMemoryFileSystem;
 import com.google.devtools.common.options.OptionsParser;
 import javax.annotation.Nullable;
@@ -41,23 +42,24 @@
 @RunWith(JUnit4.class)
 @TestSpec(size = Suite.SMALL_TESTS)
 public class BlazeExecutorTest {
+  private FileSystem fileSystem;
   private BlazeDirectories directories;
   private BinTools binTools;
 
   @Before
   public final void setUpDirectoriesAndTools() throws Exception {
-    InMemoryFileSystem fs = new InMemoryFileSystem();
+    fileSystem = new InMemoryFileSystem();
     directories =
         new BlazeDirectories(
-            new ServerDirectories(fs.getPath("/install"), fs.getPath("/base")),
-            fs.getPath("/workspace"),
+            new ServerDirectories(fileSystem.getPath("/install"), fileSystem.getPath("/base")),
+            fileSystem.getPath("/workspace"),
             "mock-product-name");
     binTools = BinTools.empty(directories);
   }
 
   @Test
   public void testDebugPrintActionContexts() throws Exception {
-    TestExecutorBuilder builder = new TestExecutorBuilder(directories, binTools);
+    TestExecutorBuilder builder = new TestExecutorBuilder(fileSystem, directories, binTools);
     OptionsParser parser = OptionsParser.newOptionsParser(TestExecutorBuilder.DEFAULT_OPTIONS);
     parser.parse("--debug_print_action_contexts");
 
diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java
index aea8607..22acac8 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/util/TestExecutorBuilder.java
@@ -31,6 +31,7 @@
 import com.google.devtools.build.lib.exec.SymlinkTreeStrategy;
 import com.google.devtools.build.lib.runtime.CommonCommandOptions;
 import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.common.options.OptionsBase;
 import com.google.devtools.common.options.OptionsParser;
 import com.google.devtools.common.options.OptionsParsingException;
@@ -45,6 +46,7 @@
 public class TestExecutorBuilder {
   public static final ImmutableList<Class<? extends OptionsBase>> DEFAULT_OPTIONS =
       ImmutableList.of(ExecutionOptions.class, CommonCommandOptions.class);
+  private final FileSystem fileSystem;
   private final BlazeDirectories directories;
   private EventBus bus = new EventBus();
   private Reporter reporter = new Reporter(bus);
@@ -53,7 +55,9 @@
   private Map<String, SpawnActionContext> spawnStrategyMap =
       new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
 
-  public TestExecutorBuilder(BlazeDirectories directories, BinTools binTools) {
+  public TestExecutorBuilder(
+      FileSystem fileSystem, BlazeDirectories directories, BinTools binTools) {
+    this.fileSystem = fileSystem;
     this.directories = directories;
     strategies.add(new FileWriteStrategy());
     strategies.add(new SymlinkTreeStrategy(null, binTools));
@@ -97,6 +101,7 @@
 
   public BlazeExecutor build() throws ExecutorInitException {
     return new BlazeExecutor(
+        fileSystem,
         directories.getExecRoot(TestConstants.WORKSPACE_NAME),
         reporter,
         bus,
diff --git a/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java b/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java
index 32f5e27..e392778 100644
--- a/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java
+++ b/src/test/java/com/google/devtools/build/lib/integration/util/IntegrationMock.java
@@ -17,9 +17,9 @@
 import com.google.devtools.build.lib.analysis.config.BinTools;
 import com.google.devtools.build.lib.testutil.BlazeTestUtils;
 import com.google.devtools.build.lib.testutil.TestConstants;
+import com.google.devtools.build.lib.vfs.FileSystem;
 import com.google.devtools.build.lib.vfs.FileSystemUtils;
 import com.google.devtools.build.lib.vfs.Path;
-
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -36,12 +36,13 @@
    * Populates the _embedded_binaries/ directory, containing all binaries/libraries, by symlinking
    * directories#getEmbeddedBinariesRoot() to the test's runfiles tree.
    */
-  public BinTools getIntegrationBinTools(BlazeDirectories directories, String workspaceName)
+  public BinTools getIntegrationBinTools(
+      FileSystem fileSystem, BlazeDirectories directories, String workspaceName)
       throws IOException {
     Path embeddedDir = directories.getEmbeddedBinariesRoot();
     FileSystemUtils.createDirectoryAndParents(embeddedDir);
 
-    Path runfiles = directories.getFileSystem().getPath(BlazeTestUtils.runfilesDir());
+    Path runfiles = fileSystem.getPath(BlazeTestUtils.runfilesDir());
     // Copy over everything in embedded_scripts.
     Collection<Path> files = new ArrayList<>();
     for (String embeddedScriptPath : TestConstants.EMBEDDED_SCRIPTS_PATHS) {
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
index 5390ca7..5a9d3f6 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/PackageLoadingTestCase.java
@@ -112,6 +112,7 @@
     SkyframeExecutor skyframeExecutor =
         SequencedSkyframeExecutor.create(
             packageFactory,
+            fileSystem,
             directories,
             null, /* workspaceStatusActionFactory */
             ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
index 49cffe2..fbdf45e 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/BuildFileModificationTest.java
@@ -82,6 +82,7 @@
             analysisMock
                 .getPackageFactoryBuilderForTesting(directories)
                 .build(ruleClassProvider, scratch.getFileSystem()),
+            fileSystem,
             directories,
             null, /* workspaceStatusActionFactory */
             ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
index 7e297b6..9e4fdf9 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/IncrementalLoadingTest.java
@@ -473,6 +473,7 @@
               loadingMock
                   .getPackageFactoryBuilderForTesting(directories)
                   .build(loadingMock.createRuleClassProvider(), fs),
+              fs,
               directories,
               null, /* workspaceStatusActionFactory */
               loadingMock.createRuleClassProvider().getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
index 362d632..6618d01 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/LoadingPhaseRunnerTest.java
@@ -621,6 +621,7 @@
       skyframeExecutor =
           SequencedSkyframeExecutor.create(
               pkgFactory,
+              fs,
               directories,
               null, /* workspaceStatusActionFactory -- not used */
               ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
index eff26b0..1d26d01 100644
--- a/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
+++ b/src/test/java/com/google/devtools/build/lib/pkgcache/PackageCacheTest.java
@@ -90,7 +90,8 @@
     }
     skyframeExecutor =
         SequencedSkyframeExecutor.create(
-            packageFactoryBuilder.build(ruleClassProvider, scratch.getFileSystem()),
+            packageFactoryBuilder.build(ruleClassProvider, fileSystem),
+            fileSystem,
             directories,
             null, /* workspaceStatusActionFactory */
             ruleClassProvider.getBuildInfoFactories(),
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
index 3273fb8..038ed7a 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/CreateIncSymlinkActionTest.java
@@ -116,7 +116,7 @@
     Path extra = rootDirectory.getRelative("out/extra");
     extra.getOutputStream().close();
     assertThat(extra.exists()).isTrue();
-    action.prepare(rootDirectory);
+    action.prepare(fileSystem, rootDirectory);
     assertThat(extra.exists()).isFalse();
   }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
index d8a2247..483c349 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/LtoBackendActionTest.java
@@ -75,7 +75,7 @@
 
   @Before
   public final void createExecutorAndContext() throws Exception {
-    executor = new TestExecutorBuilder(directories, binTools).build();
+    executor = new TestExecutorBuilder(fileSystem, directories, binTools).build();
     context = new ActionExecutionContext(executor, null, ActionInputPrefetcher.NONE, null,
         new FileOutErr(), ImmutableMap.<String, String>of(), null);
   }
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
index 5e99114..2198a13 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/BlazeCommandDispatcherRcoptionsTest.java
@@ -139,6 +139,7 @@
         new ServerDirectories(scratch.dir("install_base"), scratch.dir("output_base"));
     this.runtime =
         new BlazeRuntime.Builder()
+            .setFileSystem(scratch.getFileSystem())
             .setProductName(productName)
             .setServerDirectories(serverDirectories)
             .setStartupOptionsProvider(
diff --git a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
index 1843ca7..ef8c7f0 100644
--- a/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/runtime/CommandInterruptionTest.java
@@ -352,6 +352,7 @@
         new ServerDirectories(scratch.dir("install"), scratch.dir("output"));
     BlazeRuntime runtime =
         new BlazeRuntime.Builder()
+            .setFileSystem(scratch.getFileSystem())
             .setProductName(productName)
             .setServerDirectories(serverDirectories)
             .setStartupOptionsProvider(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
index 6af5623..db441e7 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/SkyframeAwareActionTest.java
@@ -68,7 +68,7 @@
 
   @Before
   public final void createExecutor() throws Exception {
-    executor = new DummyExecutor(rootDirectory);
+    executor = new DummyExecutor(fileSystem, rootDirectory);
   }
 
   private static final class TrackingEvaluationProgressReceiver
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
index de8a0be..0381713 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/TimestampBuilderTestCase.java
@@ -376,7 +376,7 @@
 
   protected void buildArtifacts(Builder builder, Artifact... artifacts)
       throws BuildFailedException, AbruptExitException, InterruptedException, TestExecException {
-    buildArtifacts(builder, new DummyExecutor(rootDirectory), artifacts);
+    buildArtifacts(builder, new DummyExecutor(fileSystem, rootDirectory), artifacts);
   }
 
   protected void buildArtifacts(Builder builder, Executor executor, Artifact... artifacts)
diff --git a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
index 5372dcd..10b0f35 100644
--- a/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/standalone/StandaloneSpawnStrategyTest.java
@@ -112,7 +112,8 @@
         new BlazeDirectories(
             new ServerDirectories(outputBase, outputBase), workspaceDir, "mock-product-name");
     // This call implicitly symlinks the integration bin tools into the exec root.
-    IntegrationMock.get().getIntegrationBinTools(directories, TestConstants.WORKSPACE_NAME);
+    IntegrationMock.get()
+        .getIntegrationBinTools(fileSystem, directories, TestConstants.WORKSPACE_NAME);
     OptionsParser optionsParser = OptionsParser.newOptionsParser(ExecutionOptions.class);
     optionsParser.parse("--verbose_failures");
     LocalExecutionOptions localExecutionOptions = Options.getDefaults(LocalExecutionOptions.class);
@@ -125,6 +126,7 @@
     Path execRoot = directories.getExecRoot(TestConstants.WORKSPACE_NAME);
     this.executor =
         new BlazeExecutor(
+            fileSystem,
             execRoot,
             reporter,
             bus,
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
index da100af..4f3b9ee 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
+++ b/src/test/java/com/google/devtools/build/lib/testutil/FoundationTestCase.java
@@ -41,6 +41,7 @@
   // The event bus of the reporter
   protected EventBus eventBus;
   protected EventCollector eventCollector;
+  protected FileSystem fileSystem;
   protected Scratch scratch;
 
   /** Returns the Scratch instance for this test case. */
@@ -69,7 +70,8 @@
 
   @Before
   public final void initializeFileSystemAndDirectories() throws Exception {
-    scratch = new Scratch(createFileSystem(), "/workspace");
+    fileSystem = createFileSystem();
+    scratch = new Scratch(fileSystem, "/workspace");
     outputBase = scratch.dir("/usr/local/google/_blaze_jrluser/FAKEMD5/");
     rootDirectory = scratch.dir("/workspace");
     scratch.file(rootDirectory.getRelative("WORKSPACE").getPathString());