123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #!/usr/bin/env vpython3
- # Copyright (c) 2012 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- """Top level script for running all python unittests in the NaCl SDK.
- """
- from __future__ import print_function
- import argparse
- import os
- import subprocess
- import sys
- import unittest
- # add tools folder to sys.path
- SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
- TOOLS_DIR = os.path.join(SCRIPT_DIR, 'tools')
- BUILD_TOOLS_DIR = os.path.join(SCRIPT_DIR, 'build_tools')
- sys.path.append(TOOLS_DIR)
- sys.path.append(os.path.join(TOOLS_DIR, 'tests'))
- sys.path.append(os.path.join(TOOLS_DIR, 'lib', 'tests'))
- sys.path.append(BUILD_TOOLS_DIR)
- sys.path.append(os.path.join(BUILD_TOOLS_DIR, 'tests'))
- import build_paths
- PKG_VER_DIR = os.path.join(build_paths.NACL_DIR, 'build', 'package_version')
- TAR_DIR = os.path.join(build_paths.NACL_DIR, 'toolchain', '.tars')
- PKG_VER = os.path.join(PKG_VER_DIR, 'package_version.py')
- EXTRACT_PACKAGES = ['nacl_x86_glibc', 'nacl_arm_glibc']
- TOOLCHAIN_OUT = os.path.join(build_paths.OUT_DIR, 'sdk_tests', 'toolchain')
- # List of modules containing unittests. The goal is to keep the total
- # runtime of these tests under 2 seconds. Any slower tests should go
- # in TEST_MODULES_BIG.
- TEST_MODULES = [
- 'build_artifacts_test',
- 'build_version_test',
- 'create_html_test',
- 'create_nmf_test',
- 'easy_template_test',
- 'elf_test',
- 'fix_deps_test',
- 'getos_test',
- 'get_shared_deps_test',
- 'httpd_test',
- 'nacl_config_test',
- 'oshelpers_test',
- 'parse_dsc_test',
- 'quote_test',
- 'sdktools_config_test',
- 'sel_ldr_test',
- 'test_projects_test',
- 'update_nacl_manifest_test',
- 'verify_filelist_test',
- 'verify_ppapi_test',
- ]
- # Slower tests. For example the 'sdktools' are mostly slower system tests
- # that longer to run. If --quick is passed then we don't run these.
- TEST_MODULES_BIG = [
- 'sdktools_commands_test',
- 'sdktools_test',
- ]
- def ExtractToolchains():
- cmd = [sys.executable, PKG_VER,
- '--packages', ','.join(EXTRACT_PACKAGES),
- '--tar-dir', TAR_DIR,
- '--dest-dir', TOOLCHAIN_OUT,
- 'extract']
- subprocess.check_call(cmd)
- def main(args):
- parser = argparse.ArgumentParser(description=__doc__)
- parser.add_argument('-v', '--verbose', action='store_true')
- parser.add_argument('--quick', action='store_true')
- options = parser.parse_args(args)
- # Some of the unit tests use parts of toolchains. Extract to TOOLCHAIN_OUT.
- print('Extracting toolchains...')
- ExtractToolchains()
- suite = unittest.TestSuite()
- modules = TEST_MODULES
- if not options.quick:
- modules += TEST_MODULES_BIG
- for module_name in modules:
- module = __import__(module_name)
- suite.addTests(unittest.defaultTestLoader.loadTestsFromModule(module))
- if options.verbose:
- verbosity = 2
- else:
- verbosity = 1
- print('Running unittests...')
- result = unittest.TextTestRunner(verbosity=verbosity).run(suite)
- return int(not result.wasSuccessful())
- if __name__ == '__main__':
- sys.exit(main(sys.argv[1:]))
|