1b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch#!/usr/bin/env python
2b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Copyright 2014 the V8 project authors. All rights reserved.
3b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# Redistribution and use in source and binary forms, with or without
4b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# modification, are permitted provided that the following conditions are
5b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# met:
6b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#
7b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#     * Redistributions of source code must retain the above copyright
8b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       notice, this list of conditions and the following disclaimer.
9b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#     * Redistributions in binary form must reproduce the above
10b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       copyright notice, this list of conditions and the following
11b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       disclaimer in the documentation and/or other materials provided
12b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       with the distribution.
13b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#     * Neither the name of Google Inc. nor the names of its
14b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       contributors may be used to endorse or promote products derived
15b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#       from this software without specific prior written permission.
16b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch#
17b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
18b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
19b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
20b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
21b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
22b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
23b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
27b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28b0fe1620dcb4135ac3ab2d66ff93072373911299Ben Murdoch
29b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# Wraps test execution with a coverage analysis. To get the best speed, the
30b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch# native python coverage version >= 3.7.1 should be installed.
31b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
32b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport coverage
33b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport os
34b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport unittest
35b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochimport sys
36b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
37b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
38b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochdef Main(argv):
39b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  script_path = os.path.dirname(os.path.abspath(__file__))
40b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  cov = coverage.coverage(include=([os.path.join(script_path, '*.py')]))
41b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  cov.start()
42b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  import test_scripts
43b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  alltests = map(unittest.TestLoader().loadTestsFromTestCase, [
44b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    test_scripts.ToplevelTest,
45b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    test_scripts.ScriptTest,
46b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch    test_scripts.SystemTest,
47b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  ])
48b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  unittest.TextTestRunner(verbosity=2).run(unittest.TestSuite(alltests))
49b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  cov.stop()
50b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  print cov.report()
51b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
52b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch
53b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdochif __name__ == '__main__':
54b8a8cc1952d61a2f3a2568848933943a543b5d3eBen Murdoch  sys.exit(Main(sys.argv))
55