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