Merge pull request #13246 from nlebeck/stringutil-tests

Add a `SplitPath` unit test exercising Windows paths with drive letters
This commit is contained in:
Admiral H. Curtiss 2025-02-02 18:16:13 +01:00 committed by GitHub
commit 5a4cde62b6
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -191,4 +191,37 @@ TEST(StringUtil, SplitPathBackslashesNotRecognizedAsSeparators)
EXPECT_EQ(extension, ".txt");
}
// TODO: add `SplitPath` test coverage for paths containing Windows drives, e.g., "C:".
#ifdef _WIN32
TEST(StringUtil, SplitPathWindowsPathWithDriveLetter)
{
// Verify that on Windows, valid paths that include a drive letter and volume separator (e.g.,
// "C:") parse correctly.
std::string path;
std::string filename;
std::string extension;
// Absolute path with drive letter
EXPECT_TRUE(SplitPath("C:/dir/some_file.txt", &path, &filename, &extension));
EXPECT_EQ(path, "C:/dir/");
EXPECT_EQ(filename, "some_file");
EXPECT_EQ(extension, ".txt");
// Relative path with drive letter
EXPECT_TRUE(SplitPath("C:dir/some_file.txt", &path, &filename, &extension));
EXPECT_EQ(path, "C:dir/");
EXPECT_EQ(filename, "some_file");
EXPECT_EQ(extension, ".txt");
// Relative path with drive letter and no directory
EXPECT_TRUE(SplitPath("C:some_file.txt", &path, &filename, &extension));
EXPECT_EQ(path, "C:");
EXPECT_EQ(filename, "some_file");
EXPECT_EQ(extension, ".txt");
// Path that is just the drive letter
EXPECT_TRUE(SplitPath("C:", &path, &filename, &extension));
EXPECT_EQ(path, "C:");
EXPECT_EQ(filename, "");
EXPECT_EQ(extension, "");
}
#endif