Chromium Code Reviews| Index: chrome/test/base/chrome_test_suite.cc |
| diff --git a/chrome/test/base/chrome_test_suite.cc b/chrome/test/base/chrome_test_suite.cc |
| index 5ef78020845b05c91a954479e3fb12e0e82f3c41..8926e002f1e18fe2192aa55c7dcfe84f5eb7a6c6 100644 |
| --- a/chrome/test/base/chrome_test_suite.cc |
| +++ b/chrome/test/base/chrome_test_suite.cc |
| @@ -4,6 +4,11 @@ |
| #include "chrome/test/base/chrome_test_suite.h" |
| +#if defined(OS_CHROMEOS) |
| +#include <stdio.h> |
| +#include <unistd.h> |
| +#endif |
| + |
| #include "base/command_line.h" |
| #include "base/file_util.h" |
| #include "base/memory/ref_counted.h" |
| @@ -159,6 +164,19 @@ ChromeTestSuite::ChromeTestSuite(int argc, char** argv) |
| ChromeTestSuite::~ChromeTestSuite() { |
| } |
| +static bool IsCrosPythonProcess() { |
|
jam
2012/07/24 15:32:19
nit: put static method in the annonymous namespace
glotov
2012/07/24 16:23:41
I'd leave it here: locality is more important for
jam
2012/07/24 16:27:55
it's chrome style to put static functions that are
glotov
2012/07/24 17:05:05
Done.
|
| +#if defined(OS_CHROMEOS) |
| + char buf[80]; |
| + int num_read = readlink("/proc/self/exe", buf, sizeof(buf) - 1); |
| + if (num_read == -1) |
| + return false; |
| + buf[num_read] = 0; |
| + const char kPythonPrefix[] = "/python"; |
| + return !strncmp(strrchr(buf, '/'), kPythonPrefix, sizeof(kPythonPrefix) - 1); |
| +#endif // defined(OS_CHROMEOS) |
| + return false; |
| +} |
| + |
| void ChromeTestSuite::Initialize() { |
| #if defined(OS_MACOSX) |
| base::mac::ScopedNSAutoreleasePool autorelease_pool; |
| @@ -171,6 +189,12 @@ void ChromeTestSuite::Initialize() { |
| PathService::Override(base::DIR_MODULE, browser_dir_); |
| } |
| + // Disable external libraries load if we are under python process in |
| + // ChromeOS. That means we are autotest and, if ASAN is used, |
| + // external libraries load crashes. |
| + if (!IsCrosPythonProcess()) |
| + content::ContentTestSuiteBase::DisableLoadingExternalLibraries(); |
| + |
| // Initialize after overriding paths as some content paths depend on correct |
| // values for DIR_EXE and DIR_MODULE. |
| content::ContentTestSuiteBase::Initialize(); |