Unfortunately, the svn repo is a bit out of date. This commit contains 8
changes that haven't made it to svn. The descriptions of each change are listed below. - Fixes some python shebang lines. - Add ElementsAreArray overloads to gmock. ElementsAreArray now makes a copy of its input elements before the conversion to a Matcher. ElementsAreArray can now take a vector as input. ElementsAreArray can now take an iterator pair as input. - Templatize MatchAndExplain to allow independent string types for the matcher and matchee. I also templatized the ConstCharPointer version of MatchAndExplain to avoid calls with "char*" from using the new templated MatchAndExplain. - Fixes the bug where the constructor of the return type of ElementsAre() saves a reference instead of a copy of the arguments. - Extends ElementsAre() to accept arrays whose sizes aren't known. - Switches gTest's internal FilePath class from testing::internal::String to std::string. testing::internal::String was introduced when gTest couldn't depend on std::string. It's now deprecated. - Switches gTest & gMock from using testing::internal::String objects to std::string. Some static methods of String are still in use. We may be able to remove some but not all of them. In particular, String::Format() should eventually be removed as it truncates the result at 4096 characters, often causing problems.
This commit is contained in:
@@ -179,7 +179,7 @@ namespace internal {
|
||||
|
||||
// Generates a textual description of a given exit code, in the format
|
||||
// specified by wait(2).
|
||||
static String ExitSummary(int exit_code) {
|
||||
static std::string ExitSummary(int exit_code) {
|
||||
Message m;
|
||||
|
||||
# if GTEST_OS_WINDOWS
|
||||
@@ -214,7 +214,7 @@ bool ExitedUnsuccessfully(int exit_status) {
|
||||
// one thread running, or cannot determine the number of threads, prior
|
||||
// to executing the given statement. It is the responsibility of the
|
||||
// caller not to pass a thread_count of 1.
|
||||
static String DeathTestThreadWarning(size_t thread_count) {
|
||||
static std::string DeathTestThreadWarning(size_t thread_count) {
|
||||
Message msg;
|
||||
msg << "Death tests use fork(), which is unsafe particularly"
|
||||
<< " in a threaded context. For this test, " << GTEST_NAME_ << " ";
|
||||
@@ -248,7 +248,7 @@ enum DeathTestOutcome { IN_PROGRESS, DIED, LIVED, RETURNED, THREW };
|
||||
// message is propagated back to the parent process. Otherwise, the
|
||||
// message is simply printed to stderr. In either case, the program
|
||||
// then exits with status 1.
|
||||
void DeathTestAbort(const String& message) {
|
||||
void DeathTestAbort(const std::string& message) {
|
||||
// On a POSIX system, this function may be called from a threadsafe-style
|
||||
// death test child process, which operates on a very small stack. Use
|
||||
// the heap for any additional non-minuscule memory requirements.
|
||||
@@ -272,7 +272,7 @@ void DeathTestAbort(const String& message) {
|
||||
# define GTEST_DEATH_TEST_CHECK_(expression) \
|
||||
do { \
|
||||
if (!::testing::internal::IsTrue(expression)) { \
|
||||
DeathTestAbort(::testing::internal::String::Format( \
|
||||
DeathTestAbort(::testing::internal::String::Format( \
|
||||
"CHECK failed: File %s, line %d: %s", \
|
||||
__FILE__, __LINE__, #expression)); \
|
||||
} \
|
||||
@@ -292,15 +292,15 @@ void DeathTestAbort(const String& message) {
|
||||
gtest_retval = (expression); \
|
||||
} while (gtest_retval == -1 && errno == EINTR); \
|
||||
if (gtest_retval == -1) { \
|
||||
DeathTestAbort(::testing::internal::String::Format( \
|
||||
DeathTestAbort(::testing::internal::String::Format( \
|
||||
"CHECK failed: File %s, line %d: %s != -1", \
|
||||
__FILE__, __LINE__, #expression)); \
|
||||
} \
|
||||
} while (::testing::internal::AlwaysFalse())
|
||||
|
||||
// Returns the message describing the last system error in errno.
|
||||
String GetLastErrnoDescription() {
|
||||
return String(errno == 0 ? "" : posix::StrError(errno));
|
||||
std::string GetLastErrnoDescription() {
|
||||
return errno == 0 ? "" : posix::StrError(errno);
|
||||
}
|
||||
|
||||
// This is called from a death test parent process to read a failure
|
||||
@@ -350,11 +350,11 @@ const char* DeathTest::LastMessage() {
|
||||
return last_death_test_message_.c_str();
|
||||
}
|
||||
|
||||
void DeathTest::set_last_death_test_message(const String& message) {
|
||||
void DeathTest::set_last_death_test_message(const std::string& message) {
|
||||
last_death_test_message_ = message;
|
||||
}
|
||||
|
||||
String DeathTest::last_death_test_message_;
|
||||
std::string DeathTest::last_death_test_message_;
|
||||
|
||||
// Provides cross platform implementation for some death functionality.
|
||||
class DeathTestImpl : public DeathTest {
|
||||
@@ -529,7 +529,7 @@ bool DeathTestImpl::Passed(bool status_ok) {
|
||||
if (!spawned())
|
||||
return false;
|
||||
|
||||
const String error_message = GetCapturedStderr();
|
||||
const std::string error_message = GetCapturedStderr();
|
||||
|
||||
bool success = false;
|
||||
Message buffer;
|
||||
@@ -711,15 +711,12 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() {
|
||||
FALSE, // The initial state is non-signalled.
|
||||
NULL)); // The even is unnamed.
|
||||
GTEST_DEATH_TEST_CHECK_(event_handle_.Get() != NULL);
|
||||
const String filter_flag = String::Format("--%s%s=%s.%s",
|
||||
GTEST_FLAG_PREFIX_, kFilterFlag,
|
||||
info->test_case_name(),
|
||||
info->name());
|
||||
const String internal_flag = String::Format(
|
||||
"--%s%s=%s|%d|%d|%u|%Iu|%Iu",
|
||||
GTEST_FLAG_PREFIX_,
|
||||
kInternalRunDeathTestFlag,
|
||||
file_, line_,
|
||||
const std::string filter_flag =
|
||||
std::string("--") + GTEST_FLAG_PREFIX_ + kFilterFlag + "=" +
|
||||
info->test_case_name() + "." + info->name();
|
||||
const std::string internal_flag =
|
||||
std::string("--") + GTEST_FLAG_PREFIX_ + kInternalRunDeathTestFlag +
|
||||
"=" + file_ + "|" + String::Format("%d|%d|%u|%Iu|%Iu", line_,
|
||||
death_test_index,
|
||||
static_cast<unsigned int>(::GetCurrentProcessId()),
|
||||
// size_t has the same with as pointers on both 32-bit and 64-bit
|
||||
@@ -734,10 +731,9 @@ DeathTest::TestRole WindowsDeathTest::AssumeRole() {
|
||||
executable_path,
|
||||
_MAX_PATH));
|
||||
|
||||
String command_line = String::Format("%s %s \"%s\"",
|
||||
::GetCommandLineA(),
|
||||
filter_flag.c_str(),
|
||||
internal_flag.c_str());
|
||||
std::string command_line =
|
||||
std::string(::GetCommandLineA()) + " " + filter_flag + " \"" +
|
||||
internal_flag + "\"";
|
||||
|
||||
DeathTest::set_last_death_test_message("");
|
||||
|
||||
@@ -954,9 +950,8 @@ static int ExecDeathTestChildMain(void* child_arg) {
|
||||
UnitTest::GetInstance()->original_working_dir();
|
||||
// We can safely call chdir() as it's a direct system call.
|
||||
if (chdir(original_dir) != 0) {
|
||||
DeathTestAbort(String::Format("chdir(\"%s\") failed: %s",
|
||||
original_dir,
|
||||
GetLastErrnoDescription().c_str()));
|
||||
DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
|
||||
GetLastErrnoDescription());
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@@ -966,10 +961,9 @@ static int ExecDeathTestChildMain(void* child_arg) {
|
||||
// invoke the test program via a valid path that contains at least
|
||||
// one path separator.
|
||||
execve(args->argv[0], args->argv, GetEnviron());
|
||||
DeathTestAbort(String::Format("execve(%s, ...) in %s failed: %s",
|
||||
args->argv[0],
|
||||
original_dir,
|
||||
GetLastErrnoDescription().c_str()));
|
||||
DeathTestAbort(std::string("execve(") + args->argv[0] + ", ...) in " +
|
||||
original_dir + " failed: " +
|
||||
GetLastErrnoDescription());
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
# endif // !GTEST_OS_QNX
|
||||
@@ -1020,9 +1014,8 @@ static pid_t ExecDeathTestSpawnChild(char* const* argv, int close_fd) {
|
||||
UnitTest::GetInstance()->original_working_dir();
|
||||
// We can safely call chdir() as it's a direct system call.
|
||||
if (chdir(original_dir) != 0) {
|
||||
DeathTestAbort(String::Format("chdir(\"%s\") failed: %s",
|
||||
original_dir,
|
||||
GetLastErrnoDescription().c_str()));
|
||||
DeathTestAbort(std::string("chdir(\"") + original_dir + "\") failed: " +
|
||||
GetLastErrnoDescription());
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
@@ -1120,11 +1113,11 @@ DeathTest::TestRole ExecDeathTest::AssumeRole() {
|
||||
// it be closed when the child process does an exec:
|
||||
GTEST_DEATH_TEST_CHECK_(fcntl(pipe_fd[1], F_SETFD, 0) != -1);
|
||||
|
||||
const String filter_flag =
|
||||
const std::string filter_flag =
|
||||
String::Format("--%s%s=%s.%s",
|
||||
GTEST_FLAG_PREFIX_, kFilterFlag,
|
||||
info->test_case_name(), info->name());
|
||||
const String internal_flag =
|
||||
const std::string internal_flag =
|
||||
String::Format("--%s%s=%s|%d|%d|%d",
|
||||
GTEST_FLAG_PREFIX_, kInternalRunDeathTestFlag,
|
||||
file_, line_, death_test_index, pipe_fd[1]);
|
||||
|
||||
Reference in New Issue
Block a user