diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java | 10 | ||||
-rw-r--r-- | src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java | 20 |
2 files changed, 27 insertions, 3 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java index c94863ed86..029d08c8c1 100644 --- a/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java +++ b/src/main/java/com/google/devtools/build/lib/util/OptionsUtils.java @@ -14,6 +14,7 @@ package com.google.devtools.build.lib.util; +import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.Converter; @@ -103,7 +104,11 @@ public final class OptionsUtils { @Override public PathFragment convert(String input) { - return PathFragment.create(input); + String path = Preconditions.checkNotNull(input); + if (!path.isEmpty() && path.startsWith("~/")) { + path = path.replace("~", System.getProperty("user.home")); + } + return PathFragment.create(path); } @Override @@ -123,6 +128,9 @@ public final class OptionsUtils { List<PathFragment> list = new ArrayList<>(); for (String piece : input.split(":")) { if (!piece.isEmpty()) { + if (piece.startsWith("~/")) { + piece = piece.replace("~", System.getProperty("user.home")); + } list.add(PathFragment.create(piece)); } } diff --git a/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java b/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java index ddf8dadda9..2d7d2f75f9 100644 --- a/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java +++ b/src/test/java/com/google/devtools/build/lib/util/OptionsUtilsTest.java @@ -17,6 +17,7 @@ import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.fail; import com.google.common.collect.Lists; +import com.google.devtools.build.lib.util.OptionsUtils.PathFragmentConverter; import com.google.devtools.build.lib.util.OptionsUtils.PathFragmentListConverter; import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.Option; @@ -166,6 +167,10 @@ public class OptionsUtilsTest { return new PathFragmentListConverter().convert(input); } + private PathFragment convertOne(String input) throws Exception { + return new PathFragmentConverter().convert(input); + } + @Test public void emptyStringYieldsEmptyList() throws Exception { assertThat(convert("")).isEqualTo(list()); @@ -183,13 +188,24 @@ public class OptionsUtilsTest { @Test public void multiplePaths() throws Exception { - assertThat(convert("foo:/bar/baz:.:/tmp/bang")) + assertThat(convert("~/foo:foo:/bar/baz:.:/tmp/bang")) .containsExactly( - fragment("foo"), fragment("/bar/baz"), fragment("."), fragment("/tmp/bang")) + fragment(System.getProperty("user.home") + "/foo"), + fragment("foo"), + fragment("/bar/baz"), + fragment("."), + fragment("/tmp/bang")) .inOrder(); } @Test + public void singlePath() throws Exception { + assertThat(convertOne("foo")).isEqualTo(fragment("foo")); + assertThat(convertOne("foo/bar/baz")).isEqualTo(fragment("foo/bar/baz")); + assertThat(convertOne("~/foo")).isEqualTo(fragment(System.getProperty("user.home") + "/foo")); + } + + @Test public void valueisUnmodifiable() throws Exception { try { new PathFragmentListConverter().convert("value").add(PathFragment.create("other")); |