From 90750e66344819a9fef4f0f0a633bc85e4d5d72d Mon Sep 17 00:00:00 2001 From: nharmata Date: Thu, 15 Mar 2018 09:35:48 -0700 Subject: Optimize GC churn due to PackageFunction#getContainingDirectory. While I'm here, also slightly restructure the code in #handleLabelsCrossingSubpackagesAndPropagateInconsistentFilesystemExceptions to make it more readable (and defer PackageIdentifier allocations). Alternatives considered: Add a PathFragment#getParentDirectoryOfRelative(String other) instance method, and use it in PackageFunction#getContainingDirectory. I thought the approach in this CL would be preferable to adding a specialized method like that to PathFragment. RELNOTES: None PiperOrigin-RevId: 189197855 --- .../devtools/build/lib/vfs/PathFragmentTest.java | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'src/test/java/com/google/devtools') diff --git a/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java b/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java index 6122aba283..78986e0f5e 100644 --- a/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java +++ b/src/test/java/com/google/devtools/build/lib/vfs/PathFragmentTest.java @@ -145,6 +145,26 @@ public class PathFragmentTest { assertThat(create("a").getRelative(".").getPathString()).isEqualTo("a"); } + @Test + public void testIsNormalizedRelativePath() { + assertThat(PathFragment.isNormalizedRelativePath("/a")).isFalse(); + assertThat(PathFragment.isNormalizedRelativePath("a///b")).isFalse(); + assertThat(PathFragment.isNormalizedRelativePath("../a")).isFalse(); + assertThat(PathFragment.isNormalizedRelativePath("a/../b")).isFalse(); + assertThat(PathFragment.isNormalizedRelativePath("a/b")).isTrue(); + assertThat(PathFragment.isNormalizedRelativePath("ab")).isTrue(); + } + + @Test + public void testContainsSeparator() { + assertThat(PathFragment.containsSeparator("/a")).isTrue(); + assertThat(PathFragment.containsSeparator("a///b")).isTrue(); + assertThat(PathFragment.containsSeparator("../a")).isTrue(); + assertThat(PathFragment.containsSeparator("a/../b")).isTrue(); + assertThat(PathFragment.containsSeparator("a/b")).isTrue(); + assertThat(PathFragment.containsSeparator("ab")).isFalse(); + } + @Test public void testGetChildWorks() { PathFragment pf = create("../some/path"); -- cgit v1.2.3