| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // This class sets up the environment for running the native tests inside an | 5 // This class sets up the environment for running the native tests inside an |
| 6 // android application. It outputs (to a fifo) markers identifying the | 6 // android application. It outputs (to a fifo) markers identifying the |
| 7 // START/PASSED/CRASH of the test suite, FAILURE/SUCCESS of individual tests, | 7 // START/PASSED/CRASH of the test suite, FAILURE/SUCCESS of individual tests, |
| 8 // etc. | 8 // etc. |
| 9 // These markers are read by the test runner script to generate test results. | 9 // These markers are read by the test runner script to generate test results. |
| 10 // It installs signal handlers to detect crashes. | 10 // It installs signal handlers to detect crashes. |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 102 ParseArgsFromCommandLineFile(kCommandLineFilePath, &args); | 102 ParseArgsFromCommandLineFile(kCommandLineFilePath, &args); |
| 103 | 103 |
| 104 std::vector<char*> argv; | 104 std::vector<char*> argv; |
| 105 int argc = ArgsToArgv(args, &argv); | 105 int argc = ArgsToArgv(args, &argv); |
| 106 | 106 |
| 107 // Fully initialize command line with arguments. | 107 // Fully initialize command line with arguments. |
| 108 CommandLine::ForCurrentProcess()->AppendArguments( | 108 CommandLine::ForCurrentProcess()->AppendArguments( |
| 109 CommandLine(argc, &argv[0]), false); | 109 CommandLine(argc, &argv[0]), false); |
| 110 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); | 110 const CommandLine& command_line = *CommandLine::ForCurrentProcess(); |
| 111 | 111 |
| 112 FilePath files_dir(base::android::ConvertJavaStringToUTF8(env, jfiles_dir)); | 112 base::FilePath files_dir( |
| 113 base::android::ConvertJavaStringToUTF8(env, jfiles_dir)); |
| 113 | 114 |
| 114 // A few options, such "--gtest_list_tests", will just use printf directly | 115 // A few options, such "--gtest_list_tests", will just use printf directly |
| 115 // Always redirect stdout to a known file. | 116 // Always redirect stdout to a known file. |
| 116 FilePath fifo_path(files_dir.Append(FilePath("test.fifo"))); | 117 base::FilePath fifo_path(files_dir.Append(base::FilePath("test.fifo"))); |
| 117 CreateFIFO(fifo_path.value().c_str()); | 118 CreateFIFO(fifo_path.value().c_str()); |
| 118 | 119 |
| 119 FilePath stderr_fifo_path, stdin_fifo_path; | 120 base::FilePath stderr_fifo_path, stdin_fifo_path; |
| 120 | 121 |
| 121 // DumpRenderTree needs a separate fifo for the stderr output. For all | 122 // DumpRenderTree needs a separate fifo for the stderr output. For all |
| 122 // other tests, insert stderr content to the same fifo we use for stdout. | 123 // other tests, insert stderr content to the same fifo we use for stdout. |
| 123 if (command_line.HasSwitch(kSeparateStderrFifo)) { | 124 if (command_line.HasSwitch(kSeparateStderrFifo)) { |
| 124 stderr_fifo_path = files_dir.Append(FilePath("stderr.fifo")); | 125 stderr_fifo_path = files_dir.Append(base::FilePath("stderr.fifo")); |
| 125 CreateFIFO(stderr_fifo_path.value().c_str()); | 126 CreateFIFO(stderr_fifo_path.value().c_str()); |
| 126 } | 127 } |
| 127 | 128 |
| 128 // DumpRenderTree uses stdin to receive input about which test to run. | 129 // DumpRenderTree uses stdin to receive input about which test to run. |
| 129 if (command_line.HasSwitch(kCreateStdinFifo)) { | 130 if (command_line.HasSwitch(kCreateStdinFifo)) { |
| 130 stdin_fifo_path = files_dir.Append(FilePath("stdin.fifo")); | 131 stdin_fifo_path = files_dir.Append(base::FilePath("stdin.fifo")); |
| 131 CreateFIFO(stdin_fifo_path.value().c_str()); | 132 CreateFIFO(stdin_fifo_path.value().c_str()); |
| 132 } | 133 } |
| 133 | 134 |
| 134 // Only redirect the streams after all fifos have been created. | 135 // Only redirect the streams after all fifos have been created. |
| 135 RedirectStream(stdout, fifo_path.value().c_str(), "w"); | 136 RedirectStream(stdout, fifo_path.value().c_str(), "w"); |
| 136 if (!stdin_fifo_path.empty()) | 137 if (!stdin_fifo_path.empty()) |
| 137 RedirectStream(stdin, stdin_fifo_path.value().c_str(), "r"); | 138 RedirectStream(stdin, stdin_fifo_path.value().c_str(), "r"); |
| 138 if (!stderr_fifo_path.empty()) | 139 if (!stderr_fifo_path.empty()) |
| 139 RedirectStream(stderr, stderr_fifo_path.value().c_str(), "w"); | 140 RedirectStream(stderr, stderr_fifo_path.value().c_str(), "w"); |
| 140 else | 141 else |
| (...skipping 17 matching lines...) Expand all Loading... |
| 158 InstallHandlers(); | 159 InstallHandlers(); |
| 159 | 160 |
| 160 base::android::InitVM(vm); | 161 base::android::InitVM(vm); |
| 161 JNIEnv* env = base::android::AttachCurrentThread(); | 162 JNIEnv* env = base::android::AttachCurrentThread(); |
| 162 if (!RegisterNativesImpl(env)) { | 163 if (!RegisterNativesImpl(env)) { |
| 163 return -1; | 164 return -1; |
| 164 } | 165 } |
| 165 | 166 |
| 166 return JNI_VERSION_1_4; | 167 return JNI_VERSION_1_4; |
| 167 } | 168 } |
| OLD | NEW |