Allow skipping creation of the runfiles manifest

If --experimental_skip_runfiles_manifests is enabled, Bazel does not
write a <rule>.runfiles_manifest file for binary and test rules, and
instead creates the symlink tree from the in-memory representation.

The way this is implemented is by making the symlink tree action not
depend on the input manifest. If there are other dependencies on the
manifest, it will still be written. I have carefully audited the code,
and I believe that there are no such dependencies, and the manifest is
generally not part of the providers published by a configured target.

Note that this has no effect on Fileset manifests, on Windows, and if
--experimental_enable_runfiles is false.

RELNOTES: We are planning to deprecate the runfiles manifest files, which aren't safe in the presence of whitespace, and also unnecessarily require local CPU when remote execution is used. This release adds --experimental_skip_runfiles_manifests to disable the generation of the input manifests (rule.manifest files) in most cases. Note that this flag has no effect on Windows by default or if --experimental_enable_runfiles is explicitly set to false.
PiperOrigin-RevId: 283078443
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.