Home | History | Annotate | Download | only in src
      1 #!/usr/bin/env python
      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
      4 # found in the LICENSE file.
      5 
      6 import os
      7 import subprocess
      8 import sys
      9 import unittest
     10 
     11 # add tools folder to sys.path
     12 SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
     13 TOOLS_DIR = os.path.join(SCRIPT_DIR, 'tools')
     14 BUILD_TOOLS_DIR = os.path.join(SCRIPT_DIR, 'build_tools')
     15 
     16 sys.path.append(TOOLS_DIR)
     17 sys.path.append(os.path.join(TOOLS_DIR, 'tests'))
     18 sys.path.append(os.path.join(TOOLS_DIR, 'lib', 'tests'))
     19 sys.path.append(BUILD_TOOLS_DIR)
     20 sys.path.append(os.path.join(BUILD_TOOLS_DIR, 'tests'))
     21 
     22 import build_paths
     23 
     24 PKG_VER_DIR = os.path.join(build_paths.NACL_DIR, 'build', 'package_version')
     25 TAR_DIR = os.path.join(build_paths.NACL_DIR, 'toolchain', '.tars')
     26 
     27 PKG_VER = os.path.join(PKG_VER_DIR, 'package_version.py')
     28 
     29 EXTRACT_PACKAGES = ['nacl_x86_glibc']
     30 TOOLCHAIN_OUT = os.path.join(build_paths.OUT_DIR, 'sdk_tests', 'toolchain')
     31 
     32 TEST_MODULES = [
     33     'create_html_test',
     34     'create_nmf_test',
     35     'easy_template_test',
     36     'elf_test',
     37     'fix_deps_test',
     38     'getos_test',
     39     'get_shared_deps_test',
     40     'httpd_test',
     41     'nacl_config_test',
     42     'oshelpers_test',
     43     'parse_dsc_test',
     44     'quote_test',
     45     'sdktools_commands_test',
     46     'sdktools_config_test',
     47     'sdktools_test',
     48     'sel_ldr_test',
     49     'update_nacl_manifest_test',
     50     'verify_filelist_test',
     51     'verify_ppapi_test',
     52 ]
     53 
     54 def ExtractToolchains():
     55   subprocess.check_output([sys.executable, PKG_VER,
     56                            '--packages', ','.join(EXTRACT_PACKAGES),
     57                            '--tar-dir', TAR_DIR,
     58                            '--dest-dir', TOOLCHAIN_OUT,
     59                            'extract'])
     60 
     61 def main():
     62   # Some of the unit tests use parts of toolchains. Extract to TOOLCHAIN_OUT.
     63   ExtractToolchains()
     64 
     65   suite = unittest.TestSuite()
     66   for module_name in TEST_MODULES:
     67     module = __import__(module_name)
     68     suite.addTests(unittest.defaultTestLoader.loadTestsFromModule(module))
     69 
     70   result = unittest.TextTestRunner(verbosity=2).run(suite)
     71   return int(not result.wasSuccessful())
     72 
     73 if __name__ == '__main__':
     74   sys.exit(main())
     75