diff --git a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionTest.java b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionTest.java
index beb333c..1b01f43 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionTest.java
+++ b/src/test/java/com/google/devtools/build/lib/analysis/actions/SymlinkTreeActionTest.java
@@ -21,6 +21,7 @@
 import com.google.devtools.build.lib.analysis.Runfiles;
 import com.google.devtools.build.lib.analysis.util.ActionTester;
 import com.google.devtools.build.lib.analysis.util.BuildViewTestCase;
+import com.google.devtools.build.lib.testutil.MoreAsserts;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -43,6 +44,13 @@
     VARIABLE_ENVIRONMENT
   }
 
+  private enum SkipManifestAttributes {
+    RUNFILES,
+    INPROCESS_SYMLINKS,
+    FIXED_ENVIRONMENT,
+    VARIABLE_ENVIRONMENT
+  }
+
   @Test
   public void testComputeKey() throws Exception {
     final Artifact inputManifest = getBinArtifactWithNoOwner("dir/manifest.in");
@@ -66,7 +74,8 @@
                         attributesToFlip.contains(RunfilesActionAttributes.FIXED_ENVIRONMENT),
                         attributesToFlip.contains(RunfilesActionAttributes.VARIABLE_ENVIRONMENT)),
                     attributesToFlip.contains(RunfilesActionAttributes.ENABLE_RUNFILES),
-                    attributesToFlip.contains(RunfilesActionAttributes.INPROCESS_SYMLINKS)))
+                    attributesToFlip.contains(RunfilesActionAttributes.INPROCESS_SYMLINKS),
+                    /*skipRunfilesManifests=*/ false))
         .combinations(
             FilesetActionAttributes.class,
             (attributesToFlip) ->
@@ -80,7 +89,26 @@
                         attributesToFlip.contains(FilesetActionAttributes.FIXED_ENVIRONMENT),
                         attributesToFlip.contains(FilesetActionAttributes.VARIABLE_ENVIRONMENT)),
                     attributesToFlip.contains(FilesetActionAttributes.ENABLE_RUNFILES),
-                    attributesToFlip.contains(FilesetActionAttributes.INPROCESS_SYMLINKS)))
+                    attributesToFlip.contains(FilesetActionAttributes.INPROCESS_SYMLINKS),
+                    /*skipRunfilesManifests=*/ false))
+        .combinations(
+            SkipManifestAttributes.class,
+            (attributesToFlip) ->
+                // skipRunfilesManifests requires !filesetTree and enableRunfiles
+                new SymlinkTreeAction(
+                    ActionsTestUtil.NULL_ACTION_OWNER,
+                    inputManifest,
+                    attributesToFlip.contains(SkipManifestAttributes.RUNFILES)
+                        ? new Runfiles.Builder("TESTING", false).addArtifact(runfile).build()
+                        : new Runfiles.Builder("TESTING", false).addArtifact(runfile2).build(),
+                    outputManifest,
+                    /*filesetTree=*/ false,
+                    createActionEnvironment(
+                        attributesToFlip.contains(SkipManifestAttributes.FIXED_ENVIRONMENT),
+                        attributesToFlip.contains(SkipManifestAttributes.VARIABLE_ENVIRONMENT)),
+                    /*enableRunfiles=*/ true,
+                    attributesToFlip.contains(SkipManifestAttributes.INPROCESS_SYMLINKS),
+                    /*skipRunfilesManifests=*/ true))
         .runTest();
   }
 
@@ -89,4 +117,23 @@
         fixed ? ImmutableMap.of("a", "b") : ImmutableMap.of(),
         variable ? ImmutableSet.of("c") : ImmutableSet.of());
   }
+
+  @Test
+  public void testNullRunfilesThrows() {
+    Artifact inputManifest = getBinArtifactWithNoOwner("dir/manifest.in");
+    Artifact outputManifest = getBinArtifactWithNoOwner("dir/MANIFEST");
+    MoreAsserts.assertThrows(
+        IllegalArgumentException.class,
+        () ->
+            new SymlinkTreeAction(
+                ActionsTestUtil.NULL_ACTION_OWNER,
+                inputManifest,
+                /*runfiles=*/ null,
+                outputManifest,
+                /*filesetTree=*/ false,
+                createActionEnvironment(false, false),
+                /*enableRunfiles=*/ true,
+                /*inprocessSymlinkCreation=*/ false,
+                /*skipRunfilesManifests=*/ false));
+  }
 }
diff --git a/src/test/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategyTest.java b/src/test/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategyTest.java
index 9bb02cc..c50c7f6 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategyTest.java
+++ b/src/test/java/com/google/devtools/build/lib/exec/SymlinkTreeStrategyTest.java
@@ -95,7 +95,8 @@
             /*filesetTree=*/ false,
             ActionEnvironment.EMPTY,
             /*enableRunfiles=*/ true,
-            /*inprocessSymlinkCreation=*/ false);
+            /*inprocessSymlinkCreation=*/ false,
+            /*skipRunfilesManifests=*/ false);
 
     action.execute(context);
 
@@ -140,7 +141,8 @@
             /*filesetTree=*/ false,
             ActionEnvironment.EMPTY,
             /*enableRunfiles=*/ true,
-            /*inprocessSymlinkCreation=*/ true);
+            /*inprocessSymlinkCreation=*/ true,
+            /*skipRunfilesManifests*/ false);
 
     action.execute(context);
     // Check that the OutputService is not used.
