39#include "gtest/gtest.h"
41#if GTEST_OS_WINDOWS_MOBILE
50#include "src/gtest-internal-inl.h"
57FilePath GetAbsolutePathOf(
const FilePath& relative_path) {
58 return FilePath::ConcatPaths(FilePath::GetCurrentDir(), relative_path);
63TEST(XmlOutputTest, GetOutputFormatDefault) {
64 GTEST_FLAG_SET(output,
"");
65 EXPECT_STREQ(
"", UnitTestOptions::GetOutputFormat().c_str());
68TEST(XmlOutputTest, GetOutputFormat) {
69 GTEST_FLAG_SET(output,
"xml:filename");
70 EXPECT_STREQ(
"xml", UnitTestOptions::GetOutputFormat().c_str());
73TEST(XmlOutputTest, GetOutputFileDefault) {
74 GTEST_FLAG_SET(output,
"");
75 EXPECT_EQ(GetAbsolutePathOf(FilePath(
"test_detail.xml")).
string(),
76 UnitTestOptions::GetAbsolutePathToOutputFile());
79TEST(XmlOutputTest, GetOutputFileSingleFile) {
80 GTEST_FLAG_SET(output,
"xml:filename.abc");
81 EXPECT_EQ(GetAbsolutePathOf(FilePath(
"filename.abc")).
string(),
82 UnitTestOptions::GetAbsolutePathToOutputFile());
85TEST(XmlOutputTest, GetOutputFileFromDirectoryPath) {
86 GTEST_FLAG_SET(output,
"xml:path" GTEST_PATH_SEP_);
87 const std::string expected_output_file =
88 GetAbsolutePathOf(FilePath(std::string(
"path") + GTEST_PATH_SEP_ +
89 GetCurrentExecutableName().
string() +
".xml"))
91 const std::string& output_file =
92 UnitTestOptions::GetAbsolutePathToOutputFile();
94 EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
96 EXPECT_EQ(expected_output_file, output_file.c_str());
100TEST(OutputFileHelpersTest, GetCurrentExecutableName) {
101 const std::string exe_str = GetCurrentExecutableName().string();
104 _strcmpi(
"googletest-options-test", exe_str.c_str()) == 0 ||
105 _strcmpi(
"gtest-options-ex_test", exe_str.c_str()) == 0 ||
106 _strcmpi(
"gtest_all_test", exe_str.c_str()) == 0 ||
107 _strcmpi(
"gtest_dll_test", exe_str.c_str()) == 0;
110 strcasecmp(
"googletest-options-test", exe_str.c_str()) == 0 ||
111 strcasecmp(
"gtest-options-ex_test", exe_str.c_str()) == 0 ||
112 strcasecmp(
"gtest_all_test", exe_str.c_str()) == 0 ||
113 strcasecmp(
"gtest_dll_test", exe_str.c_str()) == 0;
114#elif GTEST_OS_FUCHSIA
115 const bool success = exe_str ==
"app";
118 exe_str ==
"googletest-options-test" || exe_str ==
"gtest_all_test" ||
119 exe_str ==
"lt-gtest_all_test" || exe_str ==
"gtest_dll_test";
121 if (!success) FAIL() <<
"GetCurrentExecutableName() returns " << exe_str;
126class XmlOutputChangeDirTest :
public Test {
128 void SetUp()
override {
129 original_working_dir_ = FilePath::GetCurrentDir();
132 EXPECT_NE(original_working_dir_.string(),
133 FilePath::GetCurrentDir().string());
136 void TearDown()
override {
137 posix::ChDir(original_working_dir_.string().c_str());
140 FilePath original_working_dir_;
143TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefault) {
144 GTEST_FLAG_SET(output,
"");
146 FilePath::ConcatPaths(original_working_dir_, FilePath(
"test_detail.xml"))
148 UnitTestOptions::GetAbsolutePathToOutputFile());
151TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithDefaultXML) {
152 GTEST_FLAG_SET(output,
"xml");
154 FilePath::ConcatPaths(original_working_dir_, FilePath(
"test_detail.xml"))
156 UnitTestOptions::GetAbsolutePathToOutputFile());
159TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativeFile) {
160 GTEST_FLAG_SET(output,
"xml:filename.abc");
162 FilePath::ConcatPaths(original_working_dir_, FilePath(
"filename.abc"))
164 UnitTestOptions::GetAbsolutePathToOutputFile());
167TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithRelativePath) {
168 GTEST_FLAG_SET(output,
"xml:path" GTEST_PATH_SEP_);
169 const std::string expected_output_file =
170 FilePath::ConcatPaths(
171 original_working_dir_,
172 FilePath(std::string(
"path") + GTEST_PATH_SEP_ +
173 GetCurrentExecutableName().
string() +
".xml"))
175 const std::string& output_file =
176 UnitTestOptions::GetAbsolutePathToOutputFile();
178 EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
180 EXPECT_EQ(expected_output_file, output_file.c_str());
184TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsoluteFile) {
186 GTEST_FLAG_SET(output,
"xml:c:\\tmp\\filename.abc");
187 EXPECT_EQ(FilePath(
"c:\\tmp\\filename.abc").
string(),
188 UnitTestOptions::GetAbsolutePathToOutputFile());
190 GTEST_FLAG_SET(output,
"xml:/tmp/filename.abc");
191 EXPECT_EQ(FilePath(
"/tmp/filename.abc").
string(),
192 UnitTestOptions::GetAbsolutePathToOutputFile());
196TEST_F(XmlOutputChangeDirTest, PreserveOriginalWorkingDirWithAbsolutePath) {
198 const std::string path =
"c:\\tmp\\";
200 const std::string path =
"/tmp/";
203 GTEST_FLAG_SET(output,
"xml:" + path);
204 const std::string expected_output_file =
205 path + GetCurrentExecutableName().string() +
".xml";
206 const std::string& output_file =
207 UnitTestOptions::GetAbsolutePathToOutputFile();
210 EXPECT_STRCASEEQ(expected_output_file.c_str(), output_file.c_str());
212 EXPECT_EQ(expected_output_file, output_file.c_str());