diff options
Diffstat (limited to 'clang-tools-extra/unittests/clangd/URITests.cpp')
-rw-r--r-- | clang-tools-extra/unittests/clangd/URITests.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/clang-tools-extra/unittests/clangd/URITests.cpp b/clang-tools-extra/unittests/clangd/URITests.cpp index 97fa59eabc3..302affd2f54 100644 --- a/clang-tools-extra/unittests/clangd/URITests.cpp +++ b/clang-tools-extra/unittests/clangd/URITests.cpp @@ -137,6 +137,28 @@ TEST(URITest, Resolve) { testPath("a")); } +std::string resolvePathOrDie(StringRef AbsPath, StringRef HintPath = "") { + auto Path = URI::resolvePath(AbsPath, HintPath); + if (!Path) + llvm_unreachable(toString(Path.takeError()).c_str()); + return *Path; +} + +TEST(URITest, ResolvePath) { + StringRef FilePath = +#ifdef _WIN32 + "c:\\x\\y\\z"; +#else + "/a/b/c"; +#endif + EXPECT_EQ(resolvePathOrDie(FilePath), FilePath); + EXPECT_EQ(resolvePathOrDie(testPath("x"), testPath("hint")), testPath("x")); + // HintPath is not in testRoot(); resolution fails. + auto Resolve = URI::resolvePath(testPath("x"), FilePath); + EXPECT_FALSE(Resolve); + llvm::consumeError(Resolve.takeError()); +} + TEST(URITest, Platform) { auto Path = testPath("x"); auto U = URI::create(Path, "file"); |