Adds Win32 UNC path support to FilePath::IsAbsolutePath() and FilePath::IsRootDirectory() in GoogleTest

Fixes: #3025
PiperOrigin-RevId: 481932601
Change-Id: I90fcb5b3d189aea79a0fd18735bad038b3511270
This commit is contained in:
Abseil Team
2022-10-18 08:51:57 -07:00
committed by Copybara-Service
parent 26d3ab5442
commit f372c76026
3 changed files with 85 additions and 18 deletions

View File

@@ -421,8 +421,13 @@ TEST(NormalizeTest, MultipleConsecutiveSeparatorsInMidstring) {
// "/bar" == //bar" == "///bar"
TEST(NormalizeTest, MultipleConsecutiveSeparatorsAtStringStart) {
EXPECT_EQ(GTEST_PATH_SEP_ "bar", FilePath(GTEST_PATH_SEP_ "bar").string());
#if GTEST_OS_WINDOWS
EXPECT_EQ(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar",
FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string());
#else
EXPECT_EQ(GTEST_PATH_SEP_ "bar",
FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string());
#endif
EXPECT_EQ(
GTEST_PATH_SEP_ "bar",
FilePath(GTEST_PATH_SEP_ GTEST_PATH_SEP_ GTEST_PATH_SEP_ "bar").string());
@@ -621,6 +626,9 @@ TEST(FilePathTest, IsAbsolutePath) {
EXPECT_TRUE(
FilePath("c:/" GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative")
.IsAbsolutePath());
EXPECT_TRUE(FilePath("d:/Windows").IsAbsolutePath());
EXPECT_TRUE(FilePath("\\\\Host\\Share").IsAbsolutePath());
EXPECT_TRUE(FilePath("\\\\Host\\Share\\Folder").IsAbsolutePath());
#else
EXPECT_TRUE(FilePath(GTEST_PATH_SEP_ "is_not" GTEST_PATH_SEP_ "relative")
.IsAbsolutePath());
@@ -637,6 +645,16 @@ TEST(FilePathTest, IsRootDirectory) {
EXPECT_FALSE(FilePath("b:a").IsRootDirectory());
EXPECT_FALSE(FilePath("8:/").IsRootDirectory());
EXPECT_FALSE(FilePath("c|/").IsRootDirectory());
EXPECT_TRUE(FilePath("c:/").IsRootDirectory());
EXPECT_FALSE(FilePath("d:/Windows").IsRootDirectory());
// This is for backward compatibility, since callers (even in this library)
// have assumed IsRootDirectory() implies a trailing directory separator.
EXPECT_FALSE(FilePath("\\\\Host\\Share").IsRootDirectory());
EXPECT_TRUE(FilePath("\\\\Host\\Share\\").IsRootDirectory());
EXPECT_FALSE(FilePath("\\\\Host\\Share\\.").IsRootDirectory());
EXPECT_FALSE(FilePath("\\\\Host\\Share\\C$\\").IsRootDirectory());
#else
EXPECT_TRUE(FilePath("/").IsRootDirectory());
EXPECT_TRUE(FilePath("//").IsRootDirectory());