From 653aec68afdcadaae9913d7baf79f738fac538d2 Mon Sep 17 00:00:00 2001 From: "Manikandan K. S." Date: Sun, 26 Jul 2026 17:06:07 +0530 Subject: [PATCH] fix: prevent hidden file creation when base_name is empty in MakeFileName When base_name is empty, MakeFileName would produce filenames starting with '.' (e.g., '.xml'), creating hidden files on Unix. Fall back to 'file' as the base name to avoid this. Fixes #3815 --- googletest/src/gtest-filepath.cc | 6 +++--- googletest/test/googletest-filepath-test.cc | 12 ++++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/googletest/src/gtest-filepath.cc b/googletest/src/gtest-filepath.cc index 902d8c7f6..61834d31d 100644 --- a/googletest/src/gtest-filepath.cc +++ b/googletest/src/gtest-filepath.cc @@ -227,12 +227,12 @@ FilePath FilePath::RemoveFileName() const { FilePath FilePath::MakeFileName(const FilePath& directory, const FilePath& base_name, int number, const char* extension) { + std::string base = base_name.IsEmpty() ? "file" : base_name.string(); std::string file; if (number == 0) { - file = base_name.string() + "." + extension; + file = base + "." + extension; } else { - file = - base_name.string() + "_" + StreamableToString(number) + "." + extension; + file = base + "_" + StreamableToString(number) + "." + extension; } return ConcatPaths(directory, FilePath(file)); } diff --git a/googletest/test/googletest-filepath-test.cc b/googletest/test/googletest-filepath-test.cc index 3e9c79f03..33e0ba738 100644 --- a/googletest/test/googletest-filepath-test.cc +++ b/googletest/test/googletest-filepath-test.cc @@ -274,6 +274,18 @@ TEST(MakeFileNameTest, GenerateWhenNumberIsNotZeroAndDirIsEmpty) { EXPECT_EQ("bar_14.xml", actual.string()); } +TEST(MakeFileNameTest, GenerateWhenBaseNameEmpty) { + FilePath actual = + FilePath::MakeFileName(FilePath("foo"), FilePath(""), 0, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "file.xml", actual.string()); +} + +TEST(MakeFileNameTest, GenerateWhenBaseNameEmptyNumberNonZero) { + FilePath actual = + FilePath::MakeFileName(FilePath("foo"), FilePath(""), 42, "xml"); + EXPECT_EQ("foo" GTEST_PATH_SEP_ "file_42.xml", actual.string()); +} + TEST(ConcatPathsTest, WorksWhenDirDoesNotEndWithPathSep) { FilePath actual = FilePath::ConcatPaths(FilePath("foo"), FilePath("bar.xml")); EXPECT_EQ("foo" GTEST_PATH_SEP_ "bar.xml", actual.string());