Home | History | Annotate | Download | only in bin
      1 #!/usr/bin/env python2.7
      2 
      3 # Copyright 2015 The Chromium Authors. All rights reserved.
      4 # Use of this source code is governed by a BSD-style license that can be
      5 # found in the LICENSE file.
      6 
      7 """Runs the unit test suite for systrace."""
      8 
      9 import optparse
     10 import os
     11 import sys
     12 import unittest
     13 
     14 _SYSTRACE_DIR = os.path.abspath(
     15     os.path.join(os.path.dirname(__file__), os.path.pardir))
     16 sys.path.insert(0, _SYSTRACE_DIR)
     17 from systrace import decorators
     18 
     19 
     20 def main():
     21   parser = optparse.OptionParser()
     22   parser.add_option("-d", "--device", dest="device",
     23                     help="device the test runs on", metavar="DEVICE")
     24   options, _args = parser.parse_args()  # pylint: disable=unused-variable
     25   unfiltered_suite = unittest.TestLoader().discover(
     26       _SYSTRACE_DIR,
     27       pattern = '*_unittest.py',
     28       top_level_dir=_SYSTRACE_DIR)
     29   suite = unittest.TestSuite()
     30 
     31   for test_group in unfiltered_suite._tests:
     32     for inner_group in test_group:
     33       for test in inner_group:
     34         method = getattr(
     35           test, test._testMethodName)  # pylint: disable=protected-access
     36         if not decorators.ShouldSkip(method, options.device):
     37           suite.addTest(test)
     38 
     39   result = unittest.TextTestRunner(verbosity=2).run(suite)
     40   if result.wasSuccessful():
     41     sys.exit(0)
     42   else:
     43     sys.exit(1)
     44 
     45 if __name__ == '__main__':
     46   main()
     47