Move some IO-focused classes that don't have deps on other parts of Bazel to the new lib/io package. Also, couldn't resist some clean-ups on Abstract(File)ChainUniquenessFunction: was only used for RootedPath, so specialized to that, and streamlined the uniquifier a bit, hopefully without any bugs that our test battery won't catch. I did debate truly uniquifying the cycle by breaking ties based on the next element, but managed to back away. PiperOrigin-RevId: 363756543
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunctionTest.java b/src/test/java/com/google/devtools/build/lib/io/FileSymlinkCycleUniquenessFunctionTest.java similarity index 94% rename from src/test/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunctionTest.java rename to src/test/java/com/google/devtools/build/lib/io/FileSymlinkCycleUniquenessFunctionTest.java index 24835fe..678445b 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FileSymlinkCycleUniquenessFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/io/FileSymlinkCycleUniquenessFunctionTest.java
@@ -11,7 +11,7 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -package com.google.devtools.build.lib.skyframe; +package com.google.devtools.build.lib.io; import com.google.common.collect.ImmutableList; import com.google.common.testing.EqualsTester; @@ -26,9 +26,8 @@ @RunWith(JUnit4.class) public class FileSymlinkCycleUniquenessFunctionTest { - @Test - public void testHashCodeAndEqualsContract() throws Exception { + public void testHashCodeAndEqualsContract() { Root root = Root.fromPath(new InMemoryFileSystem(DigestHashFunction.SHA256).getPath("/root")); RootedPath p1 = RootedPath.toRootedPath(root, PathFragment.create("p1")); RootedPath p2 = RootedPath.toRootedPath(root, PathFragment.create("p2"));
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 8667c03..2c858f9 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/BUILD +++ b/src/test/java/com/google/devtools/build/lib/skyframe/BUILD
@@ -196,10 +196,10 @@ "//src/main/java/com/google/devtools/build/lib/skyframe:directory_listing_function", "//src/main/java/com/google/devtools/build/lib/skyframe:directory_listing_state_value", "//src/main/java/com/google/devtools/build/lib/skyframe:file_function", - "//src/main/java/com/google/devtools/build/lib/skyframe:file_symlink_cycle_exception", - "//src/main/java/com/google/devtools/build/lib/skyframe:file_symlink_cycle_uniqueness_function", - "//src/main/java/com/google/devtools/build/lib/skyframe:file_symlink_infinite_expansion_exception", - "//src/main/java/com/google/devtools/build/lib/skyframe:file_symlink_infinite_expansion_uniqueness_function", + "//src/main/java/com/google/devtools/build/lib/io:file_symlink_cycle_exception", + "//src/main/java/com/google/devtools/build/lib/io:file_symlink_cycle_uniqueness_function", + "//src/main/java/com/google/devtools/build/lib/io:file_symlink_infinite_expansion_exception", + "//src/main/java/com/google/devtools/build/lib/io:file_symlink_infinite_expansion_uniqueness_function", "//src/main/java/com/google/devtools/build/lib/skyframe:fileset_entry_function", "//src/main/java/com/google/devtools/build/lib/skyframe:fileset_entry_key", "//src/main/java/com/google/devtools/build/lib/skyframe:fileset_entry_value",
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java index c687dbb..b68a2f3 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/ContainingPackageLookupFunctionTest.java
@@ -27,6 +27,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.events.NullEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; @@ -144,7 +145,7 @@ SkyFunctions.LOCAL_REPOSITORY_LOOKUP, new LocalRepositoryLookupFunction(BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, new FileSymlinkCycleUniquenessFunction()); + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()); ImmutableMap<String, RepositoryFunction> repositoryHandlers = ImmutableMap.of( LocalRepositoryRule.NAME, (RepositoryFunction) new LocalRepositoryFunction());
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java index 92c7dcc..725e5af 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FileFunctionTest.java
@@ -43,6 +43,10 @@ import com.google.devtools.build.lib.cmdline.LabelConstants; import com.google.devtools.build.lib.events.NullEventHandler; import com.google.devtools.build.lib.events.StoredEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleException; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; +import com.google.devtools.build.lib.io.FileSymlinkInfiniteExpansionException; +import com.google.devtools.build.lib.io.FileSymlinkInfiniteExpansionUniquenessFunction; import com.google.devtools.build.lib.io.InconsistentFilesystemException; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; @@ -162,10 +166,10 @@ new AtomicReference<>(UnixGlob.DEFAULT_SYSCALLS), externalFilesHelper)) .put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()) .put( - SkyFunctions.FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS, + FileSymlinkInfiniteExpansionUniquenessFunction.NAME, new FileSymlinkInfiniteExpansionUniquenessFunction()) .put(FileValue.FILE, new FileFunction(pkgLocatorRef)) .put(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java index e6c792e..8b54594 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/FilesystemValueCheckerTest.java
@@ -41,6 +41,8 @@ import com.google.devtools.build.lib.collect.nestedset.NestedSetBuilder; import com.google.devtools.build.lib.collect.nestedset.Order; import com.google.devtools.build.lib.events.NullEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; +import com.google.devtools.build.lib.io.FileSymlinkInfiniteExpansionUniquenessFunction; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.DirtinessCheckerUtils.BasicFilesystemDirtinessChecker; @@ -138,9 +140,9 @@ externalFilesHelper)); skyFunctions.put(FileValue.FILE, new FileFunction(pkgLocator)); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, new FileSymlinkCycleUniquenessFunction()); + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS, + FileSymlinkInfiniteExpansionUniquenessFunction.NAME, new FileSymlinkInfiniteExpansionUniquenessFunction()); skyFunctions.put( SkyFunctions.PACKAGE, new PackageFunction(null, null, null, null, null, null, null));
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java index 3a88497..eb6c31d 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/LocalRepositoryLookupFunctionTest.java
@@ -26,6 +26,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.events.NullEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; import com.google.devtools.build.lib.packages.RuleClassProvider; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; @@ -124,7 +125,7 @@ SkyFunctions.LOCAL_REPOSITORY_LOOKUP, new LocalRepositoryLookupFunction(BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, new FileSymlinkCycleUniquenessFunction()); + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()); differencer = new SequencedRecordingDifferencer(); evaluator = new InMemoryMemoizingEvaluator(skyFunctions, differencer);
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java index 73aeb14..31932ec 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/PackageLookupFunctionTest.java
@@ -29,6 +29,7 @@ import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.cmdline.RepositoryName; import com.google.devtools.build.lib.events.NullEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; import com.google.devtools.build.lib.packages.BuildFileName; import com.google.devtools.build.lib.packages.BuildFileNotFoundException; import com.google.devtools.build.lib.packages.RuleClassProvider; @@ -152,7 +153,7 @@ SkyFunctions.LOCAL_REPOSITORY_LOOKUP, new LocalRepositoryLookupFunction(BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, new FileSymlinkCycleUniquenessFunction()); + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()); ImmutableMap<String, RepositoryFunction> repositoryHandlers = ImmutableMap.of(
diff --git a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java index 0d0a332..6778af8 100644 --- a/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java +++ b/src/test/java/com/google/devtools/build/lib/skyframe/RecursiveFilesystemTraversalFunctionTest.java
@@ -50,6 +50,8 @@ import com.google.devtools.build.lib.analysis.util.AnalysisMock; import com.google.devtools.build.lib.cmdline.PackageIdentifier; import com.google.devtools.build.lib.events.NullEventHandler; +import com.google.devtools.build.lib.io.FileSymlinkCycleUniquenessFunction; +import com.google.devtools.build.lib.io.FileSymlinkInfiniteExpansionUniquenessFunction; import com.google.devtools.build.lib.packages.WorkspaceFileValue; import com.google.devtools.build.lib.pkgcache.PathPackageLocator; import com.google.devtools.build.lib.skyframe.ExternalFilesHelper.ExternalFileAction; @@ -181,10 +183,10 @@ SkyFunctions.LOCAL_REPOSITORY_LOOKUP, new LocalRepositoryLookupFunction(BazelSkyframeExecutorConstants.EXTERNAL_PACKAGE_HELPER)); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_INFINITE_EXPANSION_UNIQUENESS, + FileSymlinkInfiniteExpansionUniquenessFunction.NAME, new FileSymlinkInfiniteExpansionUniquenessFunction()); skyFunctions.put( - SkyFunctions.FILE_SYMLINK_CYCLE_UNIQUENESS, new FileSymlinkCycleUniquenessFunction()); + FileSymlinkCycleUniquenessFunction.NAME, new FileSymlinkCycleUniquenessFunction()); // We use a non-hermetic key to allow us to invalidate the proper artifacts on rebuilds. We // could have the artifact depend on the corresponding FileValue, but that would not cover the // case of a generated directory, which we have test coverage for.