Add BUILD files for test/.../build/lib{buildeventstream,skylark/...,util/...,windows/..., and others}

Also enable a number of tests that were not previously running on windows, but
that work just fine when enabled.

RELNOTES: None.
PiperOrigin-RevId: 302085725
diff --git a/src/test/java/com/google/devtools/build/docgen/BUILD b/src/test/java/com/google/devtools/build/docgen/BUILD
index 055d79b..eb696e5 100644
--- a/src/test/java/com/google/devtools/build/docgen/BUILD
+++ b/src/test/java/com/google/devtools/build/docgen/BUILD
@@ -52,7 +52,7 @@
         "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib/skylarkinterface",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/syntax/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
@@ -81,7 +81,7 @@
         "//src/main/java/com/google/devtools/build/lib/packages",
         "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/skylarkinterface",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/syntax/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//third_party:guava",
diff --git a/src/test/java/com/google/devtools/build/lib/BUILD b/src/test/java/com/google/devtools/build/lib/BUILD
index 36d9891..6796acd 100644
--- a/src/test/java/com/google/devtools/build/lib/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/BUILD
@@ -1,5 +1,4 @@
 load("@rules_java//java:defs.bzl", "java_binary", "java_library", "java_test")
-load("@rules_cc//cc:defs.bzl", "cc_binary")
 
 package(
     default_visibility = [
@@ -8,23 +7,6 @@
     ],
 )
 
-# Tests for Windows-specific functionality that can run cross-platform.
-# These don't need to run on Windows, they merely use Windows- and case-insensitive path semantics.
-CROSS_PLATFORM_WINDOWS_TESTS = [
-    "util/DependencySetWindowsTest.java",
-]
-
-# Tests for Windows-specific functionality that run on Windows.
-WINDOWS_ON_WINDOWS_TESTS = glob(
-    ["windows/*.java"],
-    exclude = [
-        "windows/MockSubprocess.java",
-    ],
-)
-
-# All Windows-specific tests. Use this to exclude Windows tests from globs.
-ALL_WINDOWS_TESTS = CROSS_PLATFORM_WINDOWS_TESTS + WINDOWS_ON_WINDOWS_TESTS
-
 # Generate list of all srcs via:
 # bazel query 'filter("srcs", kind("filegroup rule", //src/test/java/com/google/devtools/build/lib/...))' | sort | sed -e "s/^/\"/" | sed -e "s/$/\",/" | fgrep -v "build/lib:srcs"
 filegroup(
@@ -36,8 +18,8 @@
         "//src/test/java/com/google/devtools/build/lib/blackbox:srcs",
         "//src/test/java/com/google/devtools/build/lib/buildeventservice:srcs",
         "//src/test/java/com/google/devtools/build/lib/buildeventstream:srcs",
-        "//src/test/java/com/google/devtools/build/lib/buildeventstream/transports:srcs",
         "//src/test/java/com/google/devtools/build/lib/buildtool:srcs",
+        "//src/test/java/com/google/devtools/build/lib/dynamic:srcs",
         "//src/test/java/com/google/devtools/build/lib/events:srcs",
         "//src/test/java/com/google/devtools/build/lib/exec:srcs",
         "//src/test/java/com/google/devtools/build/lib/integration/util:srcs",
@@ -62,7 +44,9 @@
         "//src/test/java/com/google/devtools/build/lib/versioning:srcs",
         "//src/test/java/com/google/devtools/build/lib/vfs:srcs",
         "//src/test/java/com/google/devtools/build/lib/unsafe:srcs",
+        "//src/test/java/com/google/devtools/build/lib/util:srcs",
         "//src/test/java/com/google/devtools/build/lib/testutil:srcs",
+        "//src/test/java/com/google/devtools/build/lib/windows:srcs",
     ],
     visibility = ["//src:__pkg__"],
 )
@@ -196,40 +180,6 @@
 )
 
 java_test(
-    name = "dynamic_test",
-    size = "small",
-    srcs = glob(["dynamic/*.java"]),
-    tags = [
-        "no_windows",
-    ],
-    test_class = "com.google.devtools.build.lib.AllTests",
-    deps = [
-        ":AllTests",
-        "//src/main/java/com/google/devtools/build/lib:build-base",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
-        "//src/main/java/com/google/devtools/build/lib/dynamic",
-        "//src/main/java/com/google/devtools/build/lib/util/io",
-        "//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/common/options:options_internal",
-        "//src/main/protobuf:test_status_java_proto",
-        "//src/test/java/com/google/devtools/build/lib/actions/util",
-        "//src/test/java/com/google/devtools/build/lib/events:testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
-        "//src/test/java/com/google/devtools/build/lib/testutil:TestThread",
-        "//src/test/java/com/google/devtools/build/lib/testutil:TestUtils",
-        "//src/test/java/com/google/devtools/build/lib/vfs/util",
-        "//third_party:auto_value",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:junit4",
-        "//third_party:truth",
-    ],
-)
-
-java_test(
     name = "unix_test",
     size = "large",
     srcs = glob(["unix/*.java"]),
@@ -261,140 +211,6 @@
 )
 
 java_test(
-    name = "util_test",
-    size = "large",
-    srcs = glob(
-        [
-            "util/*.java",
-        ],
-        exclude = [
-            # java_rules_skylark doesn't support resource loading with
-            # qualified paths.
-            "util/ResourceFileLoaderTest.java",
-        ] + ALL_WINDOWS_TESTS,
-    ),
-    tags = [
-        "foundations",
-        "no_windows",
-    ],
-    test_class = "com.google.devtools.build.lib.AllTests",
-    deps = [
-        ":AllTests",
-        "//src/main/java/com/google/devtools/build/lib:command-utils",
-        "//src/main/java/com/google/devtools/build/lib:exitcode-external",
-        "//src/main/java/com/google/devtools/build/lib:failure_detail_util",
-        "//src/main/java/com/google/devtools/build/lib:resource-converter",
-        "//src/main/java/com/google/devtools/build/lib:shell_escaper",
-        "//src/main/java/com/google/devtools/build/lib:simple-log-handler",
-        "//src/main/java/com/google/devtools/build/lib:single-line-formatter",
-        "//src/main/java/com/google/devtools/build/lib:util",
-        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
-        "//src/main/java/com/google/devtools/build/lib/analysis/platform",
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/shell",
-        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
-        "//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/lib/vfs/inmemoryfs",
-        "//src/main/java/com/google/devtools/common/options",
-        "//src/main/protobuf:failure_details_java_proto",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:junit4",
-        "//third_party:mockito",
-        "//third_party:truth",
-        "//third_party/protobuf:protobuf_java",
-    ],
-)
-
-java_test(
-    name = "util_io_test",
-    size = "large",
-    srcs = glob(["util/io/*.java"]),
-    tags = [
-        "foundations",
-        "no_windows",
-    ],
-    test_class = "com.google.devtools.build.lib.AllTests",
-    deps = [
-        ":AllTests",
-        "//src/main/java/com/google/devtools/build/lib:util",
-        "//src/main/java/com/google/devtools/build/lib/util/io",
-        "//src/main/java/com/google/devtools/build/lib/util/io:out-err",
-        "//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/lib/vfs/inmemoryfs",
-        "//src/main/protobuf:bazel_flags_java_proto",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:junit4",
-        "//third_party:mockito",
-        "//third_party:truth",
-    ],
-)
-
-java_library(
-    name = "windows_testutil",
-    testonly = 1,
-    srcs = [
-        "windows/util/WindowsTestUtil.java",
-    ],
-    deps = [
-        "//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/lib/windows",
-        "//src/main/java/com/google/devtools/build/lib/windows/jni",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:junit4",
-        "//third_party:truth",
-    ],
-)
-
-# Tests that need to run on Windows
-java_test(
-    name = "windows-tests",
-    srcs = WINDOWS_ON_WINDOWS_TESTS,
-    data = [
-        ":MockSubprocess_deploy.jar",
-        ":printarg",
-    ],
-    jvm_flags = [
-        "-Dbazel.windows_unix_root=C:/fake/msys",
-    ],
-    test_class = "com.google.devtools.build.lib.AllTests",
-    deps = [
-        ":AllTests",
-        ":windows_testutil",
-        "//src/main/java/com/google/devtools/build/lib:os_util",
-        "//src/main/java/com/google/devtools/build/lib/clock",
-        "//src/main/java/com/google/devtools/build/lib/shell",
-        "//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/lib/vfs/inmemoryfs",
-        "//src/main/java/com/google/devtools/build/lib/windows",
-        "//src/main/java/com/google/devtools/build/lib/windows:windows_short_path",
-        "//src/main/java/com/google/devtools/build/lib/windows/jni",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:junit4",
-        "//third_party:truth",
-        "@bazel_tools//tools/java/runfiles",
-    ],
-)
-
-cc_binary(
-    name = "printarg",
-    testonly = 1,
-    srcs = ["windows/printarg.cc"],
-)
-
-java_test(
     name = "graph_test",
     srcs = glob([
         "graph/*.java",
@@ -557,7 +373,7 @@
         "//src/main/protobuf:test_status_java_proto",
         "//src/test/java/com/google/devtools/build/lib/actions/util",
         "//src/test/java/com/google/devtools/build/lib/events:testutil",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
@@ -678,11 +494,6 @@
     ],
 )
 
-java_binary(
-    name = "MockSubprocess",
-    srcs = ["windows/MockSubprocess.java"],
-)
-
 java_library(
     name = "ExampleWorker-lib",
     srcs = glob(["worker/ExampleWorker*.java"]),
@@ -785,8 +596,10 @@
         "//src/test/java/com/google/devtools/build/lib/bazel:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/blackbox/tests:blackbox_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/buildeventservice:all_windows_tests",
-        "//src/test/java/com/google/devtools/build/lib/buildeventstream/transports:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/buildeventstream:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/buildtool:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/dynamic:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/metrics:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/profiler/callcounts:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/profiler/memory:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/rules:all_windows_tests",
@@ -794,6 +607,9 @@
         "//src/test/java/com/google/devtools/build/lib/skyframe:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/skylark:all_windows_tests",
         "//src/test/java/com/google/devtools/build/lib/skylarkinterface/processor:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/unsafe:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/util:all_windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/vfs:all_windows_tests",
     ],
     visibility = ["//src:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/actions/BUILD b/src/test/java/com/google/devtools/build/lib/actions/BUILD
index a1e6f36..59e8fa3 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/actions/BUILD
@@ -14,6 +14,7 @@
     ]) + [
         "//src/test/java/com/google/devtools/build/lib/actions/util:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/actions/util/BUILD b/src/test/java/com/google/devtools/build/lib/actions/util/BUILD
index bad4b43..1ad28f9 100644
--- a/src/test/java/com/google/devtools/build/lib/actions/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/actions/util/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
index d623762..995a332 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/BUILD
@@ -15,6 +15,7 @@
         "//src/test/java/com/google/devtools/build/lib/analysis/util:srcs",
         "//src/test/java/com/google/devtools/build/lib/analysis/whitelisting:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
index 345cf54..d38fe6e 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/mock/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD
index a1e890d..8637b41 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/platform/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
index b0d8284..a488e93 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/skylark/annotations/processor/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
index fdceef1..f1aa3e9 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/util/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 # Redirection for util lib to allow exporting both ":util_internal" and the
diff --git a/src/test/java/com/google/devtools/build/lib/analysis/whitelisting/BUILD b/src/test/java/com/google/devtools/build/lib/analysis/whitelisting/BUILD
index 9d8a0d9..80f5a82 100644
--- a/src/test/java/com/google/devtools/build/lib/analysis/whitelisting/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/analysis/whitelisting/BUILD
@@ -12,6 +12,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD b/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
index c2adf42..36e475a 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildeventservice/BUILD
@@ -9,35 +9,25 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
-    name = "BuildEventServiceTest",
+    name = "BuildEventTransportTest",
     srcs = glob(["*.java"]),
     test_class = "com.google.devtools.build.lib.AllTests",
     runtime_deps = ["//src/test/java/com/google/devtools/build/lib:test_runner"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:runtime",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/authandtls",
         "//src/main/java/com/google/devtools/build/lib/buildeventservice",
         "//src/main/java/com/google/devtools/build/lib/buildeventservice/client",
-        "//src/main/java/com/google/devtools/build/lib/buildeventstream",
-        "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports",
-        "//src/main/java/com/google/devtools/build/lib/clock",
-        "//src/main/java/com/google/devtools/build/lib/vfs",
-        "//src/main/java/com/google/devtools/common/options",
-        "//src/test/java/com/google/devtools/build/lib/actions/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//third_party:guava",
         "//third_party:junit4",
         "//third_party:mockito",
         "//third_party:truth",
         "//third_party/grpc:grpc-jar",
-        "@com_google_protobuf//:protobuf_java",
-        "@com_google_protobuf//:protobuf_java_util",
+        "//third_party/protobuf:protobuf_java",
+        "//third_party/protobuf:protobuf_java_util",
         "@googleapis//:google_devtools_build_v1_build_events_java_proto",
         "@googleapis//:google_devtools_build_v1_build_status_java_proto",
         "@googleapis//:google_devtools_build_v1_publish_build_event_java_grpc",
@@ -51,7 +41,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -59,5 +48,4 @@
     tests = [
         ":windows_tests",
     ],
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/BUILD b/src/test/java/com/google/devtools/build/lib/buildeventstream/BUILD
index b23f63b..29e1464 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/BUILD
@@ -8,15 +8,19 @@
 filegroup(
     name = "srcs",
     testonly = 0,
-    srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    srcs = glob(["**"]) + [
+        "//src/test/java/com/google/devtools/build/lib/buildeventstream/transports:srcs",
+    ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
     name = "BuildEventStreamTest",
     srcs = glob(["*.java"]),
     test_class = "com.google.devtools.build.lib.AllTests",
-    runtime_deps = ["//src/test/java/com/google/devtools/build/lib:test_runner"],
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
     deps = [
         "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream",
@@ -24,10 +28,24 @@
         "//src/main/java/com/google/devtools/build/lib/unix",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
-        "//src/main/java/com/google/devtools/common/options",
         "//third_party:guava",
         "//third_party:junit4",
-        "//third_party:mockito",
         "//third_party:truth",
     ],
 )
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/buildeventstream/transports:all_windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
index 58f5144..788e5fd 100644
--- a/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildeventstream/transports/BUILD
@@ -9,7 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
@@ -18,14 +18,11 @@
     test_class = "com.google.devtools.build.lib.AllTests",
     runtime_deps = ["//src/test/java/com/google/devtools/build/lib:test_runner"],
     deps = [
-        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/proto:build_event_stream_java_proto",
         "//src/main/java/com/google/devtools/build/lib/buildeventstream/transports",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/test/java/com/google/devtools/build/lib/packages:testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//third_party:guava",
         "//third_party:junit4",
@@ -42,7 +39,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -50,5 +46,4 @@
     tests = [
         ":windows_tests",
     ],
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
index 1cf6f7b..4f81e1e 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/BUILD
@@ -11,6 +11,7 @@
     srcs = glob(["*"]) + [
         "//src/test/java/com/google/devtools/build/lib/buildtool/util:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
index 4841136..49c06ce 100644
--- a/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/buildtool/util/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 # Redirection for util lib to allow exporting both ":util_internal" and the
diff --git a/src/test/java/com/google/devtools/build/lib/dynamic/BUILD b/src/test/java/com/google/devtools/build/lib/dynamic/BUILD
new file mode 100644
index 0000000..e8841f9
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/dynamic/BUILD
@@ -0,0 +1,53 @@
+load("@rules_java//java:defs.bzl", "java_test")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_test(
+    name = "DynamicSpawnStrategyTest",
+    size = "small",
+    srcs = ["DynamicSpawnStrategyTest.java"],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib/actions",
+        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
+        "//src/main/java/com/google/devtools/build/lib/dynamic",
+        "//src/main/java/com/google/devtools/build/lib/util/io",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/test/java/com/google/devtools/build/lib/actions/util",
+        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
+        "//src/test/java/com/google/devtools/build/lib/testutil:TestThread",
+        "//src/test/java/com/google/devtools/build/lib/testutil:TestUtils",
+        "//src/test/java/com/google/devtools/build/lib/vfs/util",
+        "//third_party:auto_value",
+        "//third_party:guava",
+        "//third_party:jsr305",
+        "//third_party:junit4",
+        "//third_party:truth",
+    ],
+)
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/events/BUILD b/src/test/java/com/google/devtools/build/lib/events/BUILD
index 5e2f5e0..9cba57a 100644
--- a/src/test/java/com/google/devtools/build/lib/events/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/events/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/exec/BUILD b/src/test/java/com/google/devtools/build/lib/exec/BUILD
index 79e636a..39baac7 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/exec/BUILD
@@ -12,6 +12,7 @@
         "//src/test/java/com/google/devtools/build/lib/exec/local:srcs",
         "//src/test/java/com/google/devtools/build/lib/exec/util:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/exec/local/BUILD b/src/test/java/com/google/devtools/build/lib/exec/local/BUILD
index 03e218f..243d183 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/local/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/exec/local/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/exec/util/BUILD b/src/test/java/com/google/devtools/build/lib/exec/util/BUILD
index 7cb6ab7..3d4cd60 100644
--- a/src/test/java/com/google/devtools/build/lib/exec/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/exec/util/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/integration/util/BUILD b/src/test/java/com/google/devtools/build/lib/integration/util/BUILD
index f68eaba..94c78e7 100644
--- a/src/test/java/com/google/devtools/build/lib/integration/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/integration/util/BUILD
@@ -12,6 +12,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/metrics/BUILD b/src/test/java/com/google/devtools/build/lib/metrics/BUILD
index fd003c8..b88d4ce 100644
--- a/src/test/java/com/google/devtools/build/lib/metrics/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/metrics/BUILD
@@ -1,9 +1,15 @@
-licenses(["notice"])  # Apache 2.0
+load("@rules_java//java:defs.bzl", "java_test")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
 
 filegroup(
     name = "srcs",
-    srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    testonly = 0,
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
@@ -18,3 +24,18 @@
         "//third_party:truth",
     ],
 )
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/packages/BUILD b/src/test/java/com/google/devtools/build/lib/packages/BUILD
index b1b171b..0c3c666 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/BUILD
@@ -13,6 +13,7 @@
     srcs = glob(["**"]) + [
         "//src/test/java/com/google/devtools/build/lib/packages/util/mock:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/packages/util/mock/BUILD b/src/test/java/com/google/devtools/build/lib/packages/util/mock/BUILD
index 3f37943..bfa20bb 100644
--- a/src/test/java/com/google/devtools/build/lib/packages/util/mock/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/packages/util/mock/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 exports_files([
diff --git a/src/test/java/com/google/devtools/build/lib/query2/BUILD b/src/test/java/com/google/devtools/build/lib/query2/BUILD
index 14f5b15..7549bbd 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/BUILD
@@ -11,6 +11,7 @@
         "//src/test/java/com/google/devtools/build/lib/query2/query/output:srcs",
         "//src/test/java/com/google/devtools/build/lib/query2/testutil:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 test_suite(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/aquery/BUILD b/src/test/java/com/google/devtools/build/lib/query2/aquery/BUILD
index 63507e2..be5178f 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/aquery/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/aquery/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD b/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD
index 381aa9c..ab91ad0 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/cquery/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/engine/BUILD b/src/test/java/com/google/devtools/build/lib/query2/engine/BUILD
index 6b7169e..71a40bc 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/engine/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/engine/BUILD
@@ -8,6 +8,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/query/output/BUILD b/src/test/java/com/google/devtools/build/lib/query2/query/output/BUILD
index 103ed6b..a5c12d3 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/query/output/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/query/output/BUILD
@@ -9,6 +9,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/query2/testutil/BUILD b/src/test/java/com/google/devtools/build/lib/query2/testutil/BUILD
index 359a508..2add4c4 100644
--- a/src/test/java/com/google/devtools/build/lib/query2/testutil/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/query2/testutil/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/BUILD b/src/test/java/com/google/devtools/build/lib/rules/BUILD
index 1625dbf..ce0911e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/BUILD
@@ -23,6 +23,7 @@
         "//src/test/java/com/google/devtools/build/lib/rules/repository:srcs",
         "//src/test/java/com/google/devtools/build/lib/rules/test:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
index 8d662b8..5ab2e59 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/android/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/apple/BUILD b/src/test/java/com/google/devtools/build/lib/rules/apple/BUILD
index c145059..17cdb8e 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/apple/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/apple/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/config/BUILD b/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
index 19409a1..a4a1ece 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/config/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 # Description:
@@ -26,7 +27,7 @@
         "//src/main/java/com/google/devtools/common/options",
         "//src/test/java/com/google/devtools/build/lib/actions/util",
         "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD b/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD
index 17a5f0a..0e4f6f5 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/BUILD
@@ -11,6 +11,7 @@
     srcs = glob(["*"]) + [
         "//src/test/java/com/google/devtools/build/lib/rules/cpp/proto:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/cpp/proto/BUILD b/src/test/java/com/google/devtools/build/lib/rules/cpp/proto/BUILD
index 6b767ee..4603115 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/cpp/proto/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/cpp/proto/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/filegroup/BUILD b/src/test/java/com/google/devtools/build/lib/rules/filegroup/BUILD
index 7675361..401af94 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/filegroup/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/filegroup/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/genquery/BUILD b/src/test/java/com/google/devtools/build/lib/rules/genquery/BUILD
index be0b98a..8cfd831 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/genquery/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/genquery/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/java/BUILD b/src/test/java/com/google/devtools/build/lib/rules/java/BUILD
index bb7a5ce..6e37cd8 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/java/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/java/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/objc/BUILD b/src/test/java/com/google/devtools/build/lib/rules/objc/BUILD
index 4373c9f..1e6666f 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/objc/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/objc/BUILD
@@ -11,6 +11,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
index 913ef5d..05e3f36 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/platform/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 TESTUTIL_SRCS = ["ToolchainTestCase.java"]
@@ -44,7 +45,7 @@
         "//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/skyframe:testutil",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//third_party:guava",
         "//third_party:jsr305",
         "//third_party:junit4",
diff --git a/src/test/java/com/google/devtools/build/lib/rules/proto/BUILD b/src/test/java/com/google/devtools/build/lib/rules/proto/BUILD
index adc92ae..b0078f2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/proto/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/proto/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/python/BUILD b/src/test/java/com/google/devtools/build/lib/rules/python/BUILD
index 3c81c25..51a31e2 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/python/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/python/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 test_suite(
@@ -230,7 +231,7 @@
         "//src/main/java/com/google/devtools/build/lib:python-rules",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//third_party:junit4",
         "//third_party:truth",
     ],
@@ -245,7 +246,7 @@
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//third_party:junit4",
         "//third_party:truth",
     ],
diff --git a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
index 99bfacd..6d36829 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/repository/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/rules/test/BUILD b/src/test/java/com/google/devtools/build/lib/rules/test/BUILD
index e47dc49..6a2deae 100644
--- a/src/test/java/com/google/devtools/build/lib/rules/test/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/rules/test/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/sandbox/BUILD b/src/test/java/com/google/devtools/build/lib/sandbox/BUILD
index 68fa5fd..24b124a 100644
--- a/src/test/java/com/google/devtools/build/lib/sandbox/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/sandbox/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/BUILD b/src/test/java/com/google/devtools/build/lib/skylark/BUILD
index 9294af6..a0f1850 100644
--- a/src/test/java/com/google/devtools/build/lib/skylark/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skylark/BUILD
@@ -1,4 +1,4 @@
-load("@rules_java//java:defs.bzl", "java_library", "java_test")
+load("@rules_java//java:defs.bzl", "java_test")
 
 package(
     default_testonly = 1,
@@ -8,79 +8,35 @@
 filegroup(
     name = "srcs",
     testonly = 0,
-    srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
-)
-
-java_library(
-    name = "testutil",
-    srcs = glob([
-        "util/*.java",
-    ]),
-    visibility = ["//visibility:public"],
-    deps = [
-        "//src/main/java/com/google/devtools/build/lib:bazel-main",
-        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
-        "//src/main/java/com/google/devtools/build/lib:build-base",
-        "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:keep-going-option",
-        "//src/main/java/com/google/devtools/build/lib:runtime",
-        "//src/main/java/com/google/devtools/build/lib:syntax",
-        "//src/main/java/com/google/devtools/build/lib/actions",
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect",
-        "//src/main/java/com/google/devtools/build/lib/concurrent",
-        "//src/main/java/com/google/devtools/build/lib/packages",
-        "//src/main/java/com/google/devtools/build/lib/packages:starlark_semantics_options",
-        "//src/main/java/com/google/devtools/build/lib/pkgcache",
-        "//src/main/java/com/google/devtools/build/lib/rules/platform",
-        "//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/common/options:options_internal",
-        "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//src/test/java/com/google/devtools/build/lib/events:testutil",
-        "//src/test/java/com/google/devtools/build/lib/syntax/util",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
-        "//src/test/java/com/google/devtools/build/lib/vfs/util",
-        "//third_party:guava",
-        "//third_party:guava-testlib",
-        "//third_party:jsr305",
-        "//third_party:junit4",
-        "//third_party:truth",
+    srcs = glob(["**"]) + [
+        "//src/test/java/com/google/devtools/build/lib/skylark/util:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
     name = "SkylarkTests",
     timeout = "long",
-    srcs = glob([
-        "*.java",
-    ]),
-    shard_count = 5,
+    srcs = glob(["*.java"]),
+    shard_count = 25,
     test_class = "com.google.devtools.build.lib.AllTests",
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
     deps = [
-        ":testutil",
-        "//src/main/java/com/google/devtools/build/lib:bazel-main",
-        "//src/main/java/com/google/devtools/build/lib:bazel-rules",
         "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:classpath-util",
         "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:exitcode-external",
-        "//src/main/java/com/google/devtools/build/lib:keep-going-option",
+        "//src/main/java/com/google/devtools/build/lib:filetype",
         "//src/main/java/com/google/devtools/build/lib:python-rules",
-        "//src/main/java/com/google/devtools/build/lib:runtime",
         "//src/main/java/com/google/devtools/build/lib:syntax",
         "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/build/lib/actions",
         "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect",
         "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
-        "//src/main/java/com/google/devtools/build/lib/concurrent",
         "//src/main/java/com/google/devtools/build/lib/packages",
         "//src/main/java/com/google/devtools/build/lib/rules/cpp",
         "//src/main/java/com/google/devtools/build/lib/rules/java:java-compilation",
-        "//src/main/java/com/google/devtools/build/lib/rules/java:java-rules",
         "//src/main/java/com/google/devtools/build/lib/rules/objc",
         "//src/main/java/com/google/devtools/build/lib/skylarkinterface",
         "//src/main/java/com/google/devtools/build/lib/vfs",
@@ -88,16 +44,13 @@
         "//src/main/java/com/google/devtools/build/skyframe",
         "//src/main/java/com/google/devtools/build/skyframe:skyframe-objects",
         "//src/main/java/com/google/devtools/common/options",
-        "//src/test/java/com/google/devtools/build/lib:test_runner",
         "//src/test/java/com/google/devtools/build/lib/actions/util",
         "//src/test/java/com/google/devtools/build/lib/analysis/util",
-        "//src/test/java/com/google/devtools/build/lib/events:testutil",
         "//src/test/java/com/google/devtools/build/lib/packages:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
-        "//src/test/java/com/google/devtools/build/lib/vfs/util",
         "//third_party:guava",
-        "//third_party:guava-testlib",
         "//third_party:jsr305",
         "//third_party:junit4",
         "//third_party:truth",
@@ -110,7 +63,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -118,5 +70,4 @@
     tests = [
         ":windows_tests",
     ],
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/build/lib/skylark/util/BUILD b/src/test/java/com/google/devtools/build/lib/skylark/util/BUILD
new file mode 100644
index 0000000..4c24c38
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/skylark/util/BUILD
@@ -0,0 +1,37 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "util",
+    srcs = glob(["*.java"]),
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build-base",
+        "//src/main/java/com/google/devtools/build/lib:events",
+        "//src/main/java/com/google/devtools/build/lib:keep-going-option",
+        "//src/main/java/com/google/devtools/build/lib:runtime",
+        "//src/main/java/com/google/devtools/build/lib:syntax",
+        "//src/main/java/com/google/devtools/build/lib/cmdline",
+        "//src/main/java/com/google/devtools/build/lib/packages",
+        "//src/main/java/com/google/devtools/build/lib/packages:starlark_semantics_options",
+        "//src/main/java/com/google/devtools/build/lib/pkgcache",
+        "//src/main/java/com/google/devtools/build/lib/rules/platform",
+        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//src/main/java/com/google/devtools/common/options",
+        "//src/test/java/com/google/devtools/build/lib/analysis/util",
+        "//src/test/java/com/google/devtools/build/lib/syntax/util",
+        "//src/test/java/com/google/devtools/build/lib/testutil:TestConstants",
+        "//third_party:guava",
+        "//third_party:junit4",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/BUILD b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/BUILD
index b8a0b3b..cd93ea4 100644
--- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/BUILD
@@ -9,7 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
-    visibility = ["//src/test/java/com/google/devtools/build/lib:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
@@ -30,16 +30,12 @@
         ":utils",
         "//src/main/java/com/google/devtools/build/lib:events",
         "//src/main/java/com/google/devtools/build/lib:syntax",
-        "//src/main/java/com/google/devtools/build/lib/cmdline",
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:skylark_debugging_java_proto",
         "//src/main/java/com/google/devtools/build/lib/skylarkdebug/server",
         "//src/main/java/com/google/devtools/build/lib/vfs",
         "//src/test/java/com/google/devtools/build/lib/events:testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil",
-        "//src/test/java/com/google/devtools/build/lib/vfs/util",
         "//third_party:guava",
-        "//third_party:jsr305",
         "//third_party:junit4",
         "//third_party:truth",
     ],
@@ -50,14 +46,9 @@
     srcs = ["DebugServerTransportTest.java"],
     deps = [
         "//src/main/java/com/google/devtools/build/lib:events",
-        "//src/main/java/com/google/devtools/build/lib:syntax",
-        "//src/main/java/com/google/devtools/build/lib/collect/nestedset",
         "//src/main/java/com/google/devtools/build/lib/skylarkdebug/proto:skylark_debugging_java_proto",
         "//src/main/java/com/google/devtools/build/lib/skylarkdebug/server",
         "//src/test/java/com/google/devtools/build/lib/events:testutil",
-        "//src/test/java/com/google/devtools/build/lib/vfs/util",
-        "//third_party:guava",
-        "//third_party:jsr305",
         "//third_party:junit4",
         "//third_party:truth",
     ],
@@ -73,7 +64,6 @@
         "//src/main/java/com/google/devtools/build/lib/skylarkdebug/server",
         "//src/main/java/com/google/devtools/build/lib/skylarkinterface",
         "//third_party:guava",
-        "//third_party:jsr305",
         "//third_party:junit4",
         "//third_party:truth",
     ],
diff --git a/src/test/java/com/google/devtools/build/lib/supplier/BUILD b/src/test/java/com/google/devtools/build/lib/supplier/BUILD
index eb0d3c8..de386a9 100644
--- a/src/test/java/com/google/devtools/build/lib/supplier/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/supplier/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/syntax/util/BUILD b/src/test/java/com/google/devtools/build/lib/syntax/util/BUILD
index 8065f7d..be1daa8 100644
--- a/src/test/java/com/google/devtools/build/lib/syntax/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/syntax/util/BUILD
@@ -5,6 +5,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/testutil/BUILD b/src/test/java/com/google/devtools/build/lib/testutil/BUILD
index 64620c3..c0c38d7 100644
--- a/src/test/java/com/google/devtools/build/lib/testutil/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/testutil/BUILD
@@ -15,6 +15,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
diff --git a/src/test/java/com/google/devtools/build/lib/unsafe/BUILD b/src/test/java/com/google/devtools/build/lib/unsafe/BUILD
index 62fad0a..8a2fcd3 100644
--- a/src/test/java/com/google/devtools/build/lib/unsafe/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/unsafe/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
@@ -18,3 +19,18 @@
         "//third_party:truth",
     ],
 )
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/util/BUILD b/src/test/java/com/google/devtools/build/lib/util/BUILD
new file mode 100644
index 0000000..372ba7c
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/util/BUILD
@@ -0,0 +1,125 @@
+load("@rules_java//java:defs.bzl", "java_library", "java_test")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["*"]) + [
+        "//src/test/java/com/google/devtools/build/lib/util/io:srcs",
+    ],
+    visibility = ["//src:__subpackages__"],
+)
+
+java_test(
+    name = "UtilTests",
+    size = "small",
+    srcs = glob(
+        [
+            "*.java",
+        ],
+        exclude = [
+            "DependencySetWindowsTest.java",
+            "ResourceFileLoaderTest.java",
+        ],
+    ),
+    tags = [
+        "foundations",
+        "no_windows",
+    ],
+    test_class = "com.google.devtools.build.lib.AllTests",
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:build",
+        "//src/main/java/com/google/devtools/build/lib:command-utils",
+        "//src/main/java/com/google/devtools/build/lib:exitcode-external",
+        "//src/main/java/com/google/devtools/build/lib:failure_detail_util",
+        "//src/main/java/com/google/devtools/build/lib:filetype",
+        "//src/main/java/com/google/devtools/build/lib:os_util",
+        "//src/main/java/com/google/devtools/build/lib:resource-converter",
+        "//src/main/java/com/google/devtools/build/lib:shell_escaper",
+        "//src/main/java/com/google/devtools/build/lib:simple-log-handler",
+        "//src/main/java/com/google/devtools/build/lib:single-line-formatter",
+        "//src/main/java/com/google/devtools/build/lib:string_util",
+        "//src/main/java/com/google/devtools/build/lib/actions:localhost_capacity",
+        "//src/main/java/com/google/devtools/build/lib/analysis/platform",
+        "//src/main/java/com/google/devtools/build/lib/clock",
+        "//src/main/java/com/google/devtools/build/lib/cmdline",
+        "//src/main/java/com/google/devtools/build/lib/shell",
+        "//src/main/java/com/google/devtools/build/lib/skyframe/serialization/testutils",
+        "//src/main/java/com/google/devtools/build/lib/vfs:pathfragment",
+        "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
+        "//src/main/protobuf:failure_details_java_proto",
+        "//src/test/java/com/google/devtools/build/lib/testutil",
+        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
+        "//third_party:guava",
+        "//third_party:guava-testlib",
+        "//third_party:junit4",
+        "//third_party:mockito",
+        "//third_party:truth",
+        "//third_party/protobuf:protobuf_java",
+    ],
+)
+
+java_test(
+    name = "ResourceFileLoaderTest",
+    srcs = ["ResourceFileLoaderTest.java"],
+    resources = ["ResourceFileLoaderTest.message"],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:util",
+        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
+        "//third_party:junit4",
+        "//third_party:truth",
+    ],
+)
+
+# Tests windows specific path handling on Unix.
+java_library(
+    name = "UtilWindowsTests_lib",
+    srcs = ["DependencySetWindowsTest.java"],
+    resources = ["ResourceFileLoaderTest.message"],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:util",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/build/lib/windows",
+        "//src/test/java/com/google/devtools/build/lib/testutil",
+        "//third_party:guava",
+        "//third_party:junit4",
+        "//third_party:truth",
+    ],
+)
+
+java_test(
+    name = "UtilWindowsTests",
+    size = "small",
+    jvm_flags = [
+        "-Dblaze.os=Windows",
+        "-Dbazel.windows_unix_root=C:/fake/msys",
+    ],
+    test_class = "com.google.devtools.build.lib.AllTests",
+    runtime_deps = [
+        ":UtilWindowsTests_lib",
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
+)
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+        "//src/test/java/com/google/devtools/build/lib/util/io:all_windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/util/io/BUILD b/src/test/java/com/google/devtools/build/lib/util/io/BUILD
new file mode 100644
index 0000000..1abe432
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/util/io/BUILD
@@ -0,0 +1,55 @@
+load("@rules_java//java:defs.bzl", "java_test")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_test(
+    name = "io_tests",
+    size = "large",
+    srcs = glob(["*.java"]),
+    tags = [
+        "foundations",
+        "no_windows",
+    ],
+    test_class = "com.google.devtools.build.lib.AllTests",
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:string_util",
+        "//src/main/java/com/google/devtools/build/lib/util/io",
+        "//src/main/java/com/google/devtools/build/lib/util/io:out-err",
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/build/lib/vfs/inmemoryfs",
+        "//src/main/protobuf:bazel_flags_java_proto",
+        "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
+        "//third_party:guava",
+        "//third_party:junit4",
+        "//third_party:mockito",
+        "//third_party:truth",
+    ],
+)
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/versioning/BUILD b/src/test/java/com/google/devtools/build/lib/versioning/BUILD
index 96630c8..c742367 100644
--- a/src/test/java/com/google/devtools/build/lib/versioning/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/versioning/BUILD
@@ -7,6 +7,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/BUILD b/src/test/java/com/google/devtools/build/lib/vfs/BUILD
index 608eea5..2330656 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/vfs/BUILD
@@ -11,6 +11,7 @@
     srcs = glob(["**"]) + [
         "//src/test/java/com/google/devtools/build/lib/vfs/util:srcs",
     ],
+    visibility = ["//src:__subpackages__"],
 )
 
 # Tests for Windows-specific functionality that can run cross-platform.
@@ -78,6 +79,7 @@
 java_test(
     name = "VfsTests",
     size = "medium",
+    tags = ["no_windows"],
     test_class = "com.google.devtools.build.lib.AllTests",
     runtime_deps = [
         ":VfsTests_lib",
@@ -134,3 +136,18 @@
         "//third_party:truth",
     ],
 )
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/vfs/util/BUILD b/src/test/java/com/google/devtools/build/lib/vfs/util/BUILD
index 91f13d6..4a69c19 100644
--- a/src/test/java/com/google/devtools/build/lib/vfs/util/BUILD
+++ b/src/test/java/com/google/devtools/build/lib/vfs/util/BUILD
@@ -9,6 +9,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 # Redirection for util lib to allow exporting both ":util_internal" and the
diff --git a/src/test/java/com/google/devtools/build/lib/windows/BUILD b/src/test/java/com/google/devtools/build/lib/windows/BUILD
new file mode 100644
index 0000000..d53c2cc
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/windows/BUILD
@@ -0,0 +1,77 @@
+load("@rules_java//java:defs.bzl", "java_test")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["*"]) + [
+        "//src/test/java/com/google/devtools/build/lib/windows/util:srcs",
+    ],
+    visibility = ["//src:__subpackages__"],
+)
+
+# Tests that need to run on Windows
+java_test(
+    name = "windows-tests",
+    srcs = glob(
+        ["*.java"],
+        exclude = ["MockSubprocess.java"],
+    ),
+    data = [
+        ":MockSubprocess_deploy.jar",
+        ":printarg",
+    ],
+    jvm_flags = [
+        "-Dbazel.windows_unix_root=C:/fake/msys",
+    ],
+    test_class = "com.google.devtools.build.lib.AllTests",
+    runtime_deps = [
+        "//src/test/java/com/google/devtools/build/lib:test_runner",
+    ],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib:os_util",
+        "//src/main/java/com/google/devtools/build/lib/shell",
+        "//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/lib/windows",
+        "//src/main/java/com/google/devtools/build/lib/windows:windows_short_path",
+        "//src/main/java/com/google/devtools/build/lib/windows/jni",
+        "//src/test/java/com/google/devtools/build/lib/testutil",
+        "//src/test/java/com/google/devtools/build/lib/windows/util",
+        "//third_party:guava",
+        "//third_party:junit4",
+        "//third_party:truth",
+        "@bazel_tools//tools/java/runfiles",
+    ],
+)
+
+java_binary(
+    name = "MockSubprocess",
+    testonly = 1,
+    srcs = ["MockSubprocess.java"],
+)
+
+cc_binary(
+    name = "printarg",
+    testonly = 1,
+    srcs = ["printarg.cc"],
+)
+
+test_suite(
+    name = "windows_tests",
+    tags = [
+        "-no_windows",
+        "-slow",
+    ],
+)
+
+test_suite(
+    name = "all_windows_tests",
+    tests = [
+        ":windows_tests",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/lib/windows/util/BUILD b/src/test/java/com/google/devtools/build/lib/windows/util/BUILD
new file mode 100644
index 0000000..eb3cda1
--- /dev/null
+++ b/src/test/java/com/google/devtools/build/lib/windows/util/BUILD
@@ -0,0 +1,28 @@
+load("@rules_java//java:defs.bzl", "java_library")
+
+package(
+    default_testonly = 1,
+    default_visibility = ["//src:__subpackages__"],
+)
+
+filegroup(
+    name = "srcs",
+    testonly = 0,
+    srcs = glob(["*"]),
+    visibility = ["//src:__subpackages__"],
+)
+
+java_library(
+    name = "util",
+    testonly = 1,
+    srcs = [
+        "WindowsTestUtil.java",
+    ],
+    deps = [
+        "//src/main/java/com/google/devtools/build/lib/vfs",
+        "//src/main/java/com/google/devtools/build/lib/windows/jni",
+        "//third_party:guava",
+        "//third_party:junit4",
+        "//third_party:truth",
+    ],
+)
diff --git a/src/test/java/com/google/devtools/build/skydoc/BUILD b/src/test/java/com/google/devtools/build/skydoc/BUILD
index 10ae50a..4c82a2d 100644
--- a/src/test/java/com/google/devtools/build/skydoc/BUILD
+++ b/src/test/java/com/google/devtools/build/skydoc/BUILD
@@ -28,7 +28,7 @@
         "//src/main/java/com/google/devtools/build/skydoc/fakebuildapi",
         "//src/main/java/com/google/devtools/build/skydoc/rendering",
         "//src/main/java/com/google/devtools/build/skydoc/rendering/proto:stardoc_output_java_proto",
-        "//src/test/java/com/google/devtools/build/lib/skylark:testutil",
+        "//src/test/java/com/google/devtools/build/lib/skylark/util",
         "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//third_party:guava",
diff --git a/src/test/java/com/google/devtools/build/skyframe/BUILD b/src/test/java/com/google/devtools/build/skyframe/BUILD
index 11412cc..19c4a44 100644
--- a/src/test/java/com/google/devtools/build/skyframe/BUILD
+++ b/src/test/java/com/google/devtools/build/skyframe/BUILD
@@ -11,6 +11,7 @@
     name = "srcs",
     testonly = 0,
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 TESTUTIL_FILES = [
diff --git a/src/test/java/com/google/devtools/common/options/BUILD b/src/test/java/com/google/devtools/common/options/BUILD
index 1152fbc..9db1ae3 100644
--- a/src/test/java/com/google/devtools/common/options/BUILD
+++ b/src/test/java/com/google/devtools/common/options/BUILD
@@ -1,12 +1,16 @@
 load("@rules_java//java:defs.bzl", "java_library", "java_test")
 
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
+
 filegroup(
     name = "srcs",
     srcs = glob(["**"]) + [
         "//src/test/java/com/google/devtools/common/options/testing:srcs",
         "//src/test/java/com/google/devtools/common/options/processor:srcs",
     ],
-    visibility = ["//src:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
@@ -16,9 +20,6 @@
         "InvocationPolicyEnforcerTestBase.java",
         "TestOptions.java",
     ],
-    visibility = [
-        "//src/test/java:__subpackages__",
-    ],
     deps = [
         "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/common/options",
@@ -30,7 +31,7 @@
 )
 
 java_test(
-    name = "options_test",
+    name = "AllTests",
     srcs = glob(
         ["*.java"],
         exclude = [
@@ -38,25 +39,20 @@
             "InvocationPolicyEnforcerTestBase.java",
         ],
     ),
-    test_class = "com.google.devtools.common.options.AllTests",
     deps = [
         ":testutils",
-        "//src/main/java/com/google/devtools/build/lib:build-base",
         "//src/main/java/com/google/devtools/build/lib:classpath-util",
-        "//src/main/java/com/google/devtools/build/lib:util",
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/java/com/google/devtools/common/options:invocation_policy",
         "//src/main/java/com/google/devtools/common/options/testing",
         "//src/main/protobuf:invocation_policy_java_proto",
         "//src/main/protobuf:option_filters_java_proto",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//src/test/java/com/google/devtools/build/lib/testutil:TestSuite",
         "//third_party:flogger",
         "//third_party:guava",
         "//third_party:guava-testlib",
         "//third_party:jimfs",
-        "//third_party:jsr305",
         "//third_party:junit4",
         "//third_party:mockito",
         "//third_party:truth",
@@ -69,7 +65,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -79,5 +74,4 @@
         "//src/test/java/com/google/devtools/common/options/processor:all_windows_tests",
         "//src/test/java/com/google/devtools/common/options/testing:all_windows_tests",
     ],
-    visibility = ["//src:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/common/options/processor/BUILD b/src/test/java/com/google/devtools/common/options/processor/BUILD
index fd88141..5ec6846 100644
--- a/src/test/java/com/google/devtools/common/options/processor/BUILD
+++ b/src/test/java/com/google/devtools/common/options/processor/BUILD
@@ -1,11 +1,14 @@
 load("@rules_java//java:defs.bzl", "java_test")
 
+package(
+    default_visibility = ["//src:__subpackages__"],
+)
+
 filegroup(
     name = "srcs",
-    srcs = glob(
-        ["**"],
-    ),
-    visibility = ["//src/test/java/com/google/devtools/common/options:__pkg__"],
+    testonly = 0,
+    srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 java_test(
@@ -13,7 +16,7 @@
     srcs = ["OptionProcessorTest.java"],
     resources = [":OptionTestFiles"],
     deps = [
-        "//src/main/java/com/google/devtools/common/options",
+        "//src/main/java/com/google/devtools/common/options",  
         "//src/main/java/com/google/devtools/common/options/processor:options_preprocessor",
         "//third_party:compile_testing",
         "//third_party:guava",
@@ -33,7 +36,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -41,5 +43,4 @@
     tests = [
         ":windows_tests",
     ],
-    visibility = ["//src/test/java/com/google/devtools/common/options:__pkg__"],
 )
diff --git a/src/test/java/com/google/devtools/common/options/testing/BUILD b/src/test/java/com/google/devtools/common/options/testing/BUILD
index 37b2946..f0608a2 100644
--- a/src/test/java/com/google/devtools/common/options/testing/BUILD
+++ b/src/test/java/com/google/devtools/common/options/testing/BUILD
@@ -4,18 +4,16 @@
 #   Tests of the testing tools for the devtools-common options parser.
 package(
     default_testonly = 1,
-    default_visibility = ["//visibility:private"],
+    default_visibility = ["//src:__subpackages__"],
 )
 
-licenses(["notice"])  # Apache 2.0
-
 filegroup(
     name = "srcs",
     testonly = 0,
     srcs = glob(
         ["**"],
     ),
-    visibility = ["//src/test/java/com/google/devtools/common/options:__pkg__"],
+    visibility = ["//src:__subpackages__"],
 )
 
 java_library(
@@ -24,11 +22,9 @@
     deps = [
         "//src/main/java/com/google/devtools/common/options",
         "//src/main/java/com/google/devtools/common/options/testing",
-        "//src/test/java/com/google/devtools/build/lib/testutil",
         "//src/test/java/com/google/devtools/build/lib/testutil:JunitUtils",
         "//src/test/java/com/google/devtools/build/lib/testutil:TestSuite",
         "//third_party:guava",
-        "//third_party:guava-testlib",
         "//third_party:junit4",
         "//third_party:truth",
     ],
@@ -46,7 +42,6 @@
         "-no_windows",
         "-slow",
     ],
-    visibility = ["//visibility:private"],
 )
 
 test_suite(
@@ -54,5 +49,4 @@
     tests = [
         ":windows_tests",
     ],
-    visibility = ["//src/test/java/com/google/devtools/common/options:__pkg__"],
 )
diff --git a/src/test/starlark/BUILD b/src/test/starlark/BUILD
index 63185c2..e5654a0 100644
--- a/src/test/starlark/BUILD
+++ b/src/test/starlark/BUILD
@@ -10,6 +10,7 @@
 filegroup(
     name = "srcs",
     srcs = glob(["**"]),
+    visibility = ["//src:__subpackages__"],
 )
 
 [