1#!/usr/bin/env python3
2# SPDX-License-Identifier: GPL-2.0+
3#
4# Copyright (c) 2012 The Chromium OS Authors.
5#
6
7"""See README for more information"""
8
9import doctest
10import multiprocessing
11import os
12import re
13import sys
14import unittest
15
16# Bring in the patman libraries
17our_path = os.path.dirname(os.path.realpath(__file__))
18sys.path.insert(1, os.path.join(our_path, '..'))
19
20# Our modules
21from buildman import board
22from buildman import bsettings
23from buildman import builder
24from buildman import cmdline
25from buildman import control
26from buildman import toolchain
27from patman import patchstream
28from patman import gitutil
29from patman import terminal
30
31def RunTests(skip_net_tests):
32    import func_test
33    import test
34    import doctest
35
36    result = unittest.TestResult()
37    for module in ['buildman.toolchain', 'patman.gitutil']:
38        suite = doctest.DocTestSuite(module)
39        suite.run(result)
40
41    sys.argv = [sys.argv[0]]
42    if skip_net_tests:
43        test.use_network = False
44    for module in (test.TestBuild, func_test.TestFunctional):
45        suite = unittest.TestLoader().loadTestsFromTestCase(module)
46        suite.run(result)
47
48    print(result)
49    for test, err in result.errors:
50        print(err)
51    for test, err in result.failures:
52        print(err)
53
54
55options, args = cmdline.ParseArgs()
56
57# Run our meagre tests
58if options.test:
59    RunTests(options.skip_net_tests)
60
61# Build selected commits for selected boards
62else:
63    bsettings.Setup(options.config_file)
64    ret_code = control.DoBuildman(options, args)
65    sys.exit(ret_code)
66