Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
| 4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
| 5 | 5 |
| 6 ''' Runs various chrome tests through valgrind_test.py.''' | 6 ''' Runs various chrome tests through valgrind_test.py.''' |
| 7 | 7 |
| 8 import glob | 8 import glob |
| 9 import logging | 9 import logging |
| 10 import optparse | 10 import optparse |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 43 if self._test not in self._test_list: | 43 if self._test not in self._test_list: |
| 44 raise TestNotFound("Unknown test: %s" % test) | 44 raise TestNotFound("Unknown test: %s" % test) |
| 45 | 45 |
| 46 if options.gtest_filter and options.gtest_filter != self._gtest_filter: | 46 if options.gtest_filter and options.gtest_filter != self._gtest_filter: |
| 47 raise MultipleGTestFiltersSpecified("Can not specify both --gtest_filter " | 47 raise MultipleGTestFiltersSpecified("Can not specify both --gtest_filter " |
| 48 "and --test %s" % test) | 48 "and --test %s" % test) |
| 49 | 49 |
| 50 self._options = options | 50 self._options = options |
| 51 self._args = args | 51 self._args = args |
| 52 | 52 |
| 53 script_dir = path_utils.ScriptDir() | 53 # Compute the top of the tree (the "source dir") from the script dir |
| 54 # Compute the top of the tree (the "source dir") from the script dir (where | 54 # (where this script lives). We assume that the script dir is in |
| 55 # this script lives). We assume that the script dir is in tools/valgrind/ | 55 # tools/drmemory/scripts relative to the top of the tree. |
| 56 # relative to the top of the tree. | 56 script_dir = os.path.dirname(path_utils.ScriptDir()) |
| 57 self._source_dir = os.path.dirname(os.path.dirname(script_dir)) | 57 self._source_dir = os.path.dirname(os.path.dirname(script_dir)) |
| 58 # since this path is used for string matching, make sure it's always | 58 # since this path is used for string matching, make sure it's always |
| 59 # an absolute Unix-style path | 59 # an absolute Unix-style path |
| 60 self._source_dir = os.path.abspath(self._source_dir).replace('\\', '/') | 60 self._source_dir = os.path.abspath(self._source_dir).replace('\\', '/') |
| 61 valgrind_test_script = os.path.join(script_dir, "valgrind_test.py") | 61 valgrind_test_script = os.path.join(script_dir, "valgrind_test.py") |
| 62 self._command_preamble = ["--source-dir=%s" % (self._source_dir)] | 62 self._command_preamble = ["--source-dir=%s" % (self._source_dir)] |
| 63 | 63 |
| 64 if not self._options.build_dir: | 64 if not self._options.build_dir: |
| 65 dirs = [ | 65 dirs = [ |
| 66 os.path.join(self._source_dir, "xcodebuild", "Debug"), | 66 os.path.join(self._source_dir, "xcodebuild", "Debug"), |
| (...skipping 195 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 262 cmd = self._DefaultCommand(tool, None, self._args) | 262 cmd = self._DefaultCommand(tool, None, self._args) |
| 263 self.SetupLdPath(False) | 263 self.SetupLdPath(False) |
| 264 return tool.Run(cmd, None) | 264 return tool.Run(cmd, None) |
| 265 | 265 |
| 266 def TestPDFiumUnitTests(self): | 266 def TestPDFiumUnitTests(self): |
| 267 return self.SimpleTest("pdfium_unittests", "pdfium_unittests") | 267 return self.SimpleTest("pdfium_unittests", "pdfium_unittests") |
| 268 | 268 |
| 269 def TestPDFiumEmbedderTests(self): | 269 def TestPDFiumEmbedderTests(self): |
| 270 return self.SimpleTest("pdfium_embeddertests", "pdfium_embeddertests") | 270 return self.SimpleTest("pdfium_embeddertests", "pdfium_embeddertests") |
| 271 | 271 |
| 272 def TestPDFiumTest(self, script_name): | |
| 273 # Build the command line in 'cmd'. | |
| 274 # It's going to be roughly | |
| 275 # python valgrind_test.py ... | |
| 276 # but we'll use the --indirect_pdfium_test flag to valgrind_test.py | |
| 277 # to avoid valgrinding python. | |
| 278 | |
| 279 # Start by building the valgrind_test.py commandline. | |
| 280 tool = valgrind_test.CreateTool(self._options.valgrind_tool) | |
| 281 cmd = self._DefaultCommand(tool) | |
| 282 cmd.append("--trace_children") | |
| 283 cmd.append("--indirect_pdfium_test") | |
| 284 cmd.append("--ignore_exit_code") | |
| 285 # Now build script_cmd, the run_corpus_tests commandline. | |
| 286 script = os.path.join(self._source_dir, "testing", "tools", script_name) | |
| 287 script_cmd = ["python", script] | |
| 288 if self._options.build_dir: | |
| 289 script_cmd.extend(["--build-dir", self._options.build_dir]) | |
| 290 # TODO(zhaoqin): it only runs in single process mode now, | |
| 291 # need figure out why it does not work with test_one_file_parallel | |
| 292 # in run_corpus_tests.py. | |
| 293 if script_name == "run_corpus_tests.py": | |
| 294 script_cmd.extend(["-j", "1"]) | |
| 295 # Now run script_cmd with the wrapper in cmd | |
| 296 cmd.append("--") | |
| 297 cmd.extend(script_cmd) | |
| 298 | |
| 299 ret = tool.Run(cmd, "layout", min_runtime_in_seconds=0) | |
| 300 return ret | |
| 301 | |
| 302 def TestPDFiumJavascript(self): | |
| 303 return self.TestPDFiumTest("run_javascript_tests.py") | |
| 304 | |
| 305 def TestPDFiumPixel(self): | |
| 306 return self.TestPDFiumTest("run_pixel_tests.py") | |
| 307 | |
| 308 def TestPDFiumCorpus(self): | |
| 309 return self.TestPDFiumTest("run_corpus_tests.py") | |
| 310 | |
| 272 # The known list of tests. | 311 # The known list of tests. |
| 273 _test_list = { | 312 _test_list = { |
| 274 "cmdline" : RunCmdLine, | 313 "cmdline" : RunCmdLine, |
| 275 "pdfium_unittests": TestPDFiumUnitTests, | 314 "pdfium_corpus": TestPDFiumCorpus, |
| 276 "pdfium_embeddertests": TestPDFiumEmbedderTests, | 315 "pdfium_embeddertests": TestPDFiumEmbedderTests, |
| 277 } | 316 "pdfium_javascript": TestPDFiumJavascript, |
| 317 "pdfium_pixel": TestPDFiumPixel, | |
| 318 "pdfium_unittests": TestPDFiumUnitTests, | |
| 319 } | |
|
Lei Zhang
2015/11/21 20:21:59
2 spaces too many indentation
zhaoqin
2015/11/23 21:47:19
Done.
| |
| 278 | 320 |
| 279 | 321 |
| 280 def _main(): | 322 def _main(): |
| 281 parser = optparse.OptionParser("usage: %prog -b <dir> -t <test> " | 323 parser = optparse.OptionParser("usage: %prog -b <dir> -t <test> " |
| 282 "[-t <test> ...]") | 324 "[-t <test> ...]") |
| 283 | 325 |
| 284 parser.add_option("--help-tests", dest="help_tests", action="store_true", | 326 parser.add_option("--help-tests", dest="help_tests", action="store_true", |
| 285 default=False, help="List all available tests") | 327 default=False, help="List all available tests") |
| 286 parser.add_option("-b", "--build-dir", | 328 parser.add_option("-b", "--build-dir", |
| 287 help="the location of the compiler output") | 329 help="the location of the compiler output") |
| (...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 344 | 386 |
| 345 for t in options.test: | 387 for t in options.test: |
| 346 tests = ChromeTests(options, args, t) | 388 tests = ChromeTests(options, args, t) |
| 347 ret = tests.Run() | 389 ret = tests.Run() |
| 348 if ret: return ret | 390 if ret: return ret |
| 349 return 0 | 391 return 0 |
| 350 | 392 |
| 351 | 393 |
| 352 if __name__ == "__main__": | 394 if __name__ == "__main__": |
| 353 sys.exit(_main()) | 395 sys.exit(_main()) |
| OLD | NEW |