diff options
author | rsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-12 21:53:15 +0000 |
---|---|---|
committer | rsimha@google.com <rsimha@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-09-12 21:53:15 +0000 |
commit | 2bbc7f262c7210f275b7c1df823fcb4ef808c6d8 (patch) | |
tree | 58698f38e31b69c0222ad6ce8a0fc92c9b9c55cf /net/test/python_utils.cc | |
parent | 09be0c3b503fade4be4ab945ab5987dbfdf190dc (diff) | |
download | chromium_src-2bbc7f262c7210f275b7c1df823fcb4ef808c6d8.zip chromium_src-2bbc7f262c7210f275b7c1df823fcb4ef808c6d8.tar.gz chromium_src-2bbc7f262c7210f275b7c1df823fcb4ef808c6d8.tar.bz2 |
Reland: Take 2: Force python test server output to be unbuffered, so it doesn't mix with gtest output
In browser tests that use a local python server, the python output in
the test logs sometimes overlaps with gtest output, resulting in gtest
falsely detecting passing tests as incomplete. This is a result of
python's default use of buffered output, which gets written to the log
file out of order.
This patch forces the python process for local test servers to use
unbuffered mode via the -u switch. This way, by the time gtest is ready
to log a passing test, all testserver output is already written to the
log file.
Update: The win xp bots were adversely affected by the -u switch, so we now
apply it only for mac and linux, which is where the original problem was found.
BUG=147368
TEST=See sync integration test output when it is redirected to a log file, and make sure there are no false negatives.
Originally committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=156361
Review URL: https://codereview.chromium.org/10907162
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@156389 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/test/python_utils.cc')
-rw-r--r-- | net/test/python_utils.cc | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/net/test/python_utils.cc b/net/test/python_utils.cc index 0eec816..d819414 100644 --- a/net/test/python_utils.cc +++ b/net/test/python_utils.cc @@ -5,6 +5,7 @@ #include "net/test/python_utils.h" #include "base/base_paths.h" +#include "base/command_line.h" #include "base/environment.h" #include "base/file_path.h" #include "base/file_util.h" @@ -103,15 +104,26 @@ bool GetPyProtoPath(FilePath* dir) { return true; } -bool GetPythonRunTime(FilePath* dir) { +bool GetPythonCommand(CommandLine* python_cmd) { + DCHECK(python_cmd); + FilePath dir; #if defined(OS_WIN) - if (!PathService::Get(base::DIR_SOURCE_ROOT, dir)) + if (!PathService::Get(base::DIR_SOURCE_ROOT, &dir)) return false; - *dir = dir->Append(FILE_PATH_LITERAL("third_party")) - .Append(FILE_PATH_LITERAL("python_26")) - .Append(FILE_PATH_LITERAL("python.exe")); + dir = dir.Append(FILE_PATH_LITERAL("third_party")) + .Append(FILE_PATH_LITERAL("python_26")) + .Append(FILE_PATH_LITERAL("python.exe")); #elif defined(OS_POSIX) - *dir = FilePath("python"); + dir = FilePath("python"); #endif + + python_cmd->SetProgram(dir); + +#if defined(OS_POSIX) + // Launch python in unbuffered mode, so that python output doesn't mix with + // gtest output in buildbot log files. See http://crbug.com/147368. + python_cmd->AppendArg("-u"); +#endif + return true; } |