Builtins injection: Rename _internal to _builtins and add functionality

This object is used in @_builtins .bzl files but is not accessible to user code.

The `toplevel` and `native` fields give access to the *native* (pre-injected) values of symbols whose post-injected values are available to user .bzl files. For instance, -`_builtins.toplevel.CcInfo` in @_builtins code gives the original CcInfo definition from the Java code, even if `CcInfo` in a regular .bzl file refers to an injected value. (To avoid ambiguity, `CcInfo` itself is not a valid top-level symbol for @_builtins .bzl files.)

The `internal` field contains any value registered via ConfiguredRuleClassProvider.Builder#addStarlarkBuiltinsInternal().

The `getFlag()` method can retrieve the values of StarlarkSemantics flags. Because of how flags are stored, it requires that a default value be given.

Work toward #11437.

PiperOrigin-RevId: 356550108
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
index bc02a34..e75cbd6 100644
--- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -18,6 +18,11 @@
     "PathCasingLookupFunctionTest.java",
 ]
 
+# Tests that are broken out from the SkyframeTests target into separate targets.
+EXCLUDED_FROM_SKYFRAME_TESTS = [
+    "PrepareDepsOfTargetsUnderDirectoryFunctionTest.java",  # b/179148968
+] + CROSS_PLATFORM_WINDOWS_TESTS
+
 java_library(
     name = "testutil",
     srcs = glob([
@@ -71,11 +76,11 @@
     srcs = select({
         "//src/conditions:darwin": glob(
             ["*.java"],
-            exclude = CROSS_PLATFORM_WINDOWS_TESTS,
+            exclude = EXCLUDED_FROM_SKYFRAME_TESTS,
         ),
         "//conditions:default": glob(
             ["*.java"],
-            exclude = ["MacOSXFsEventsDiffAwarenessTest.java"] + CROSS_PLATFORM_WINDOWS_TESTS,
+            exclude = ["MacOSXFsEventsDiffAwarenessTest.java"] + EXCLUDED_FROM_SKYFRAME_TESTS,
         ),
     }),
     exec_compatible_with = ["//:highcpu_machine"],
@@ -351,3 +356,27 @@
     ],
     visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
 )
+
+# TODO(b/179148968): This used to be part of SkyframeTests but was broken off because it has some
+# non-hermetic interaction with another test, depending on how the tests get sharded.
+java_test(
+    name = "PrepareDepsOfTargetsUnderDirectoryFunctionTest",
+    srcs = ["PrepareDepsOfTargetsUnderDirectoryFunctionTest.java"],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib/cmdline",
+        "//src/main/java/com/google/devtools/build/lib/pkgcache",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:collect_packages_under_directory_value",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:prepare_deps_of_targets_under_directory_value",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:skyframe_cluster",
+        "//src/main/java/com/google/devtools/build/lib/skyframe:transitive_traversal_value",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//src/main/java/com/google/devtools/build/skyframe",
+        "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
+        "//src/test/java/com/google/devtools/build/lib/analysis/util",
+        "//src/test/java/com/google/devtools/build/skyframe:testutil",
+        "//third_party:guava",
+        "//third_party:junit4",
+        "//third_party:truth",
+    ],
+)