diff options
author | 2016-06-03 14:38:19 +0000 | |
---|---|---|
committer | 2016-06-06 08:01:16 +0000 | |
commit | d8b80c33dcddf50bcd155c7362c068bf18bcb1d4 (patch) | |
tree | 65c62b3afed09606cec7ddfb6621978568af02a7 /src/test/java/com | |
parent | 55d55239add4a70e1a549090c4667212007c2110 (diff) |
Make a 'did you mean' suggestion when referencing a non-existent label.
It works for both labels on the command-line and labels in BUILD files.
--
MOS_MIGRATED_REVID=123967347
Diffstat (limited to 'src/test/java/com')
4 files changed, 32 insertions, 4 deletions
diff --git a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java index c8afeea69a..31ca540590 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/ExportsFilesTest.java @@ -75,7 +75,8 @@ public class ExportsFilesTest { fail(); } catch (NoSuchTargetException e) { assertThat(e).hasMessage("no such target '//pkg:baz.txt':" - + " target 'baz.txt' not declared in package 'pkg' defined by /workspace/pkg/BUILD"); + + " target 'baz.txt' not declared in package 'pkg' (did you mean 'bar.txt'?)" + + " defined by /workspace/pkg/BUILD"); } } diff --git a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java index cefcf1592e..943c21f929 100644 --- a/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java +++ b/src/test/java/com/google/devtools/build/lib/packages/PackageFactoryTest.java @@ -500,7 +500,8 @@ public class PackageFactoryTest extends PackageFactoryTestBase { assertThat(e) .hasMessage( "no such target '//x:z.cc': " - + "target 'z.cc' not declared in package 'x' defined by /x/BUILD"); + + "target 'z.cc' not declared in package 'x' (did you mean 'x.cc'?) " + + "defined by /x/BUILD"); } try { diff --git a/src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java b/src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java index c99a5822b5..aeb297e486 100644 --- a/src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java +++ b/src/test/java/com/google/devtools/build/lib/pkgcache/TargetPatternEvaluatorTest.java @@ -316,7 +316,7 @@ public class TargetPatternEvaluatorTest extends AbstractTargetPatternEvaluatorTe @Test public void testUnsupportedTargets() throws Exception { String expectedError = "no such target '//foo:foo': target 'foo' not declared in package 'foo'" - + " defined by /workspace/foo/BUILD"; + + " (did you mean 'foo1'?) defined by /workspace/foo/BUILD"; expectError(expectedError, "foo"); expectError("The package part of 'foo/' should not end in a slash", "foo/"); } @@ -1155,4 +1155,3 @@ public class TargetPatternEvaluatorTest extends AbstractTargetPatternEvaluatorTe expectError("no such target '//:nope.cc'", "//:nope.cc"); } } - diff --git a/src/test/java/com/google/devtools/build/lib/util/SpellCheckerTest.java b/src/test/java/com/google/devtools/build/lib/util/SpellCheckerTest.java index d0d84e38f6..5b4e55d4df 100644 --- a/src/test/java/com/google/devtools/build/lib/util/SpellCheckerTest.java +++ b/src/test/java/com/google/devtools/build/lib/util/SpellCheckerTest.java @@ -15,10 +15,14 @@ package com.google.devtools.build.lib.util; import static com.google.common.truth.Truth.assertThat; +import com.google.common.collect.Lists; + import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; +import java.util.List; + /** * Tests for {@link SpellChecker}. */ @@ -76,4 +80,27 @@ public class SpellCheckerTest { assertThat(SpellChecker.editDistance("abcdefg", "s", 2)).isEqualTo(-1); } + + @Test + public void suggest() throws Exception { + List<String> dict = Lists.newArrayList( + "isalnum", "isalpha", "isdigit", "islower", "isupper", "find", "join", + "rsplit", "rstrip", "split", "splitlines", "startswith", "strip", "title", "upper"); + + assertThat(SpellChecker.suggest("isdfit", dict)).isEqualTo("isdigit"); + assertThat(SpellChecker.suggest("rspit", dict)).isEqualTo("rsplit"); + assertThat(SpellChecker.suggest("IS_LOWER", dict)).isEqualTo("islower"); + assertThat(SpellChecker.suggest("sartwigh", dict)).isEqualTo("startswith"); + assertThat(SpellChecker.suggest("SplitAllLines", dict)).isEqualTo("splitlines"); + assertThat(SpellChecker.suggest("fird", dict)).isEqualTo("find"); + assertThat(SpellChecker.suggest("stip", dict)).isEqualTo("strip"); + assertThat(SpellChecker.suggest("isAln", dict)).isEqualTo("isalnum"); + + assertThat(SpellChecker.suggest("isAl", dict)).isEqualTo(null); + assertThat(SpellChecker.suggest("", dict)).isEqualTo(null); + assertThat(SpellChecker.suggest("f", dict)).isEqualTo(null); + assertThat(SpellChecker.suggest("fir", dict)).isEqualTo(null); + assertThat(SpellChecker.suggest("wqevxc", dict)).isEqualTo(null); + assertThat(SpellChecker.suggest("ialsnuaip", dict)).isEqualTo(null); + } } |