Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of mbed-sdk-tools by
test/export/build_test.py@31:182518299918, 2017-01-04 (annotated)
- Committer:
- The Other Jimmy
- Date:
- Wed Jan 04 11:58:24 2017 -0600
- Revision:
- 31:182518299918
- Parent:
- 25:aef6536015e3
Update tools to follow mbed-os tools release 5.3.1
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
screamer | 25:aef6536015e3 | 1 | #!/usr/bin/env python |
screamer | 25:aef6536015e3 | 2 | """ |
screamer | 25:aef6536015e3 | 3 | mbed SDK |
The Other Jimmy |
31:182518299918 | 4 | Copyright (c) 2011-2016 ARM Limited |
screamer | 25:aef6536015e3 | 5 | |
screamer | 25:aef6536015e3 | 6 | Licensed under the Apache License, Version 2.0 (the "License"); |
screamer | 25:aef6536015e3 | 7 | you may not use this file except in compliance with the License. |
screamer | 25:aef6536015e3 | 8 | You may obtain a copy of the License at |
screamer | 25:aef6536015e3 | 9 | |
screamer | 25:aef6536015e3 | 10 | http://www.apache.org/licenses/LICENSE-2.0 |
screamer | 25:aef6536015e3 | 11 | |
screamer | 25:aef6536015e3 | 12 | Unless required by applicable law or agreed to in writing, software |
screamer | 25:aef6536015e3 | 13 | distributed under the License is distributed on an "AS IS" BASIS, |
screamer | 25:aef6536015e3 | 14 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
screamer | 25:aef6536015e3 | 15 | See the License for the specific language governing permissions and |
screamer | 25:aef6536015e3 | 16 | limitations under the License. |
screamer | 25:aef6536015e3 | 17 | """ |
screamer | 25:aef6536015e3 | 18 | |
screamer | 25:aef6536015e3 | 19 | import sys |
The Other Jimmy |
31:182518299918 | 20 | from os import remove, rename |
The Other Jimmy |
31:182518299918 | 21 | from os.path import join, dirname, exists, abspath |
The Other Jimmy |
31:182518299918 | 22 | ROOT = abspath(join(dirname(__file__), "..", "..", "..")) |
The Other Jimmy |
31:182518299918 | 23 | sys.path.insert(0, ROOT) |
screamer | 25:aef6536015e3 | 24 | import argparse |
screamer | 25:aef6536015e3 | 25 | import os |
The Other Jimmy |
31:182518299918 | 26 | from argparse import ArgumentTypeError |
The Other Jimmy |
31:182518299918 | 27 | import sys |
The Other Jimmy |
31:182518299918 | 28 | from shutil import rmtree |
The Other Jimmy |
31:182518299918 | 29 | from collections import namedtuple |
The Other Jimmy |
31:182518299918 | 30 | from copy import copy |
screamer | 25:aef6536015e3 | 31 | |
screamer | 25:aef6536015e3 | 32 | |
The Other Jimmy |
31:182518299918 | 33 | from tools.paths import EXPORT_DIR |
The Other Jimmy |
31:182518299918 | 34 | from tools.tests import TESTS |
The Other Jimmy |
31:182518299918 | 35 | from tools.build_api import get_mbed_official_release, RELEASE_VERSIONS |
The Other Jimmy |
31:182518299918 | 36 | from tools.test_api import find_tests |
The Other Jimmy |
31:182518299918 | 37 | from tools.project import export |
The Other Jimmy |
31:182518299918 | 38 | from Queue import Queue |
The Other Jimmy |
31:182518299918 | 39 | from threading import Thread, Lock |
The Other Jimmy |
31:182518299918 | 40 | from tools.project_api import print_results, get_exporter_toolchain |
The Other Jimmy |
31:182518299918 | 41 | from tools.tests import test_name_known, test_known |
The Other Jimmy |
31:182518299918 | 42 | from tools.export import EXPORTERS |
The Other Jimmy |
31:182518299918 | 43 | from tools.utils import argparse_force_lowercase_type, \ |
The Other Jimmy |
31:182518299918 | 44 | argparse_many, columnate, args_error, \ |
The Other Jimmy |
31:182518299918 | 45 | argparse_filestring_type |
The Other Jimmy |
31:182518299918 | 46 | from tools.options import extract_profile |
The Other Jimmy |
31:182518299918 | 47 | |
The Other Jimmy |
31:182518299918 | 48 | print_lock = Lock() |
The Other Jimmy |
31:182518299918 | 49 | |
The Other Jimmy |
31:182518299918 | 50 | def do_queue(Class, function, interable) : |
The Other Jimmy |
31:182518299918 | 51 | q = Queue() |
The Other Jimmy |
31:182518299918 | 52 | threads = [Class(q, function) for each in range(20)] |
The Other Jimmy |
31:182518299918 | 53 | for thing in interable : |
The Other Jimmy |
31:182518299918 | 54 | q.put(thing) |
The Other Jimmy |
31:182518299918 | 55 | for each in threads : |
The Other Jimmy |
31:182518299918 | 56 | each.setDaemon(True) |
The Other Jimmy |
31:182518299918 | 57 | each.start() |
The Other Jimmy |
31:182518299918 | 58 | q.join() |
screamer | 25:aef6536015e3 | 59 | |
screamer | 25:aef6536015e3 | 60 | |
The Other Jimmy |
31:182518299918 | 61 | class Reader (Thread) : |
The Other Jimmy |
31:182518299918 | 62 | def __init__(self, queue, func) : |
The Other Jimmy |
31:182518299918 | 63 | Thread.__init__(self) |
The Other Jimmy |
31:182518299918 | 64 | self.queue = queue |
The Other Jimmy |
31:182518299918 | 65 | self.func = func |
The Other Jimmy |
31:182518299918 | 66 | |
The Other Jimmy |
31:182518299918 | 67 | def start(self) : |
The Other Jimmy |
31:182518299918 | 68 | sys.stdout.flush() |
The Other Jimmy |
31:182518299918 | 69 | while not self.queue.empty() : |
The Other Jimmy |
31:182518299918 | 70 | test = self.queue.get() |
The Other Jimmy |
31:182518299918 | 71 | self.func(test) |
The Other Jimmy |
31:182518299918 | 72 | self.queue.task_done() |
The Other Jimmy |
31:182518299918 | 73 | |
The Other Jimmy |
31:182518299918 | 74 | |
The Other Jimmy |
31:182518299918 | 75 | class ExportBuildTest(object): |
The Other Jimmy |
31:182518299918 | 76 | """Object to encapsulate logic for progen build testing""" |
The Other Jimmy |
31:182518299918 | 77 | def __init__(self, tests, parser, options): |
The Other Jimmy |
31:182518299918 | 78 | """ |
The Other Jimmy |
31:182518299918 | 79 | Initialize an instance of class ProgenBuildTest |
The Other Jimmy |
31:182518299918 | 80 | Args: |
The Other Jimmy |
31:182518299918 | 81 | tests: array of TestCase instances |
The Other Jimmy |
31:182518299918 | 82 | """ |
The Other Jimmy |
31:182518299918 | 83 | self.total = len(tests) |
The Other Jimmy |
31:182518299918 | 84 | self.parser = parser |
The Other Jimmy |
31:182518299918 | 85 | self.options = options |
The Other Jimmy |
31:182518299918 | 86 | self.counter = 0 |
The Other Jimmy |
31:182518299918 | 87 | self.successes = [] |
The Other Jimmy |
31:182518299918 | 88 | self.failures = [] |
The Other Jimmy |
31:182518299918 | 89 | self.skips = [] |
The Other Jimmy |
31:182518299918 | 90 | self.tests = [ExportBuildTest.test_case(test) for test in tests] |
The Other Jimmy |
31:182518299918 | 91 | self.build_queue = Queue() |
screamer | 25:aef6536015e3 | 92 | |
screamer | 25:aef6536015e3 | 93 | @staticmethod |
The Other Jimmy |
31:182518299918 | 94 | def test_case(case): |
The Other Jimmy |
31:182518299918 | 95 | TestCase = namedtuple('TestCase', case.keys()) |
The Other Jimmy |
31:182518299918 | 96 | return TestCase(**case) |
The Other Jimmy |
31:182518299918 | 97 | |
The Other Jimmy |
31:182518299918 | 98 | def handle_log(self,log): |
screamer | 25:aef6536015e3 | 99 | try: |
The Other Jimmy |
31:182518299918 | 100 | with open(log, 'r') as in_log: |
The Other Jimmy |
31:182518299918 | 101 | print in_log.read() |
The Other Jimmy |
31:182518299918 | 102 | sys.stdout.flush() |
The Other Jimmy |
31:182518299918 | 103 | log_name = join(EXPORT_DIR, dirname(log) + "_log.txt") |
The Other Jimmy |
31:182518299918 | 104 | if exists(log_name): |
The Other Jimmy |
31:182518299918 | 105 | # delete it if so |
The Other Jimmy |
31:182518299918 | 106 | remove(log_name) |
The Other Jimmy |
31:182518299918 | 107 | rename(log, log_name) |
The Other Jimmy |
31:182518299918 | 108 | except IOError: |
The Other Jimmy |
31:182518299918 | 109 | pass |
screamer | 25:aef6536015e3 | 110 | |
The Other Jimmy |
31:182518299918 | 111 | def batch_tests(self, clean=False): |
The Other Jimmy |
31:182518299918 | 112 | """Performs all exports of self.tests |
The Other Jimmy |
31:182518299918 | 113 | Peroform_exports will fill self.build_queue. |
The Other Jimmy |
31:182518299918 | 114 | This function will empty self.build_queue and call the test's |
The Other Jimmy |
31:182518299918 | 115 | IDE's build function.""" |
The Other Jimmy |
31:182518299918 | 116 | do_queue(Reader, self.perform_exports, self.tests) |
The Other Jimmy |
31:182518299918 | 117 | self.counter = 0 |
The Other Jimmy |
31:182518299918 | 118 | self.total = self.build_queue.qsize() |
The Other Jimmy |
31:182518299918 | 119 | while not self.build_queue.empty(): |
The Other Jimmy |
31:182518299918 | 120 | build = self.build_queue.get() |
The Other Jimmy |
31:182518299918 | 121 | self.counter +=1 |
The Other Jimmy |
31:182518299918 | 122 | exporter = build[0] |
The Other Jimmy |
31:182518299918 | 123 | test_case = build[1] |
The Other Jimmy |
31:182518299918 | 124 | self.display_counter("Building test case %s::%s\t%s" |
The Other Jimmy |
31:182518299918 | 125 | % (test_case.mcu, |
The Other Jimmy |
31:182518299918 | 126 | test_case.ide, |
The Other Jimmy |
31:182518299918 | 127 | test_case.name)) |
screamer | 25:aef6536015e3 | 128 | |
The Other Jimmy |
31:182518299918 | 129 | cwd = os.getcwd() |
The Other Jimmy |
31:182518299918 | 130 | os.chdir(exporter.export_dir) |
The Other Jimmy |
31:182518299918 | 131 | res = EXPORTERS[exporter.NAME.lower()].build(exporter.project_name, cleanup=False) |
The Other Jimmy |
31:182518299918 | 132 | os.chdir(cwd) |
The Other Jimmy |
31:182518299918 | 133 | if res: |
The Other Jimmy |
31:182518299918 | 134 | self.failures.append("%s::%s\t%s" % (test_case.mcu, |
The Other Jimmy |
31:182518299918 | 135 | test_case.ide, |
The Other Jimmy |
31:182518299918 | 136 | test_case.name)) |
The Other Jimmy |
31:182518299918 | 137 | else: |
The Other Jimmy |
31:182518299918 | 138 | self.successes.append("%s::%s\t%s" % (test_case.mcu, |
The Other Jimmy |
31:182518299918 | 139 | test_case.ide, |
The Other Jimmy |
31:182518299918 | 140 | test_case.name)) |
The Other Jimmy |
31:182518299918 | 141 | self.handle_log(exporter.generated_files[-1]) |
The Other Jimmy |
31:182518299918 | 142 | if clean: |
The Other Jimmy |
31:182518299918 | 143 | rmtree(exporter.export_dir) |
The Other Jimmy |
31:182518299918 | 144 | |
The Other Jimmy |
31:182518299918 | 145 | def display_counter (self, message) : |
The Other Jimmy |
31:182518299918 | 146 | with print_lock: |
The Other Jimmy |
31:182518299918 | 147 | sys.stdout.write("{}/{} {}".format(self.counter, self.total, |
The Other Jimmy |
31:182518299918 | 148 | message) +"\n") |
The Other Jimmy |
31:182518299918 | 149 | sys.stdout.flush() |
screamer | 25:aef6536015e3 | 150 | |
The Other Jimmy |
31:182518299918 | 151 | def perform_exports(self, test_case): |
The Other Jimmy |
31:182518299918 | 152 | """ |
The Other Jimmy |
31:182518299918 | 153 | Generate the project file for test_case and fill self.build_queue |
The Other Jimmy |
31:182518299918 | 154 | Args: |
The Other Jimmy |
31:182518299918 | 155 | test_case: object of type TestCase |
The Other Jimmy |
31:182518299918 | 156 | """ |
The Other Jimmy |
31:182518299918 | 157 | sys.stdout.flush() |
The Other Jimmy |
31:182518299918 | 158 | self.counter += 1 |
The Other Jimmy |
31:182518299918 | 159 | name_str = ('%s_%s_%s') % (test_case.mcu, test_case.ide, test_case.name) |
The Other Jimmy |
31:182518299918 | 160 | self.display_counter("Exporting test case %s::%s\t%s" % (test_case.mcu, |
The Other Jimmy |
31:182518299918 | 161 | test_case.ide, |
The Other Jimmy |
31:182518299918 | 162 | test_case.name)) |
The Other Jimmy |
31:182518299918 | 163 | exporter, toolchain = get_exporter_toolchain(test_case.ide) |
The Other Jimmy |
31:182518299918 | 164 | if test_case.mcu not in exporter.TARGETS: |
The Other Jimmy |
31:182518299918 | 165 | self.skips.append("%s::%s\t%s" % (test_case.mcu, test_case.ide, |
The Other Jimmy |
31:182518299918 | 166 | test_case.name)) |
The Other Jimmy |
31:182518299918 | 167 | return |
The Other Jimmy |
31:182518299918 | 168 | profile = extract_profile(self.parser, self.options, toolchain) |
The Other Jimmy |
31:182518299918 | 169 | exporter = export(test_case.mcu, test_case.ide, |
The Other Jimmy |
31:182518299918 | 170 | project_id=test_case.id, zip_proj=None, |
The Other Jimmy |
31:182518299918 | 171 | clean=True, src=test_case.src, |
The Other Jimmy |
31:182518299918 | 172 | export_path=join(EXPORT_DIR,name_str), |
The Other Jimmy |
31:182518299918 | 173 | silent=True, build_profile=profile) |
The Other Jimmy |
31:182518299918 | 174 | exporter.generated_files.append(join(EXPORT_DIR,name_str,test_case.log)) |
The Other Jimmy |
31:182518299918 | 175 | self.build_queue.put((exporter,test_case)) |
The Other Jimmy |
31:182518299918 | 176 | # Check if the specified name is in all_os_tests |
screamer | 25:aef6536015e3 | 177 | |
screamer | 25:aef6536015e3 | 178 | |
The Other Jimmy |
31:182518299918 | 179 | def check_valid_mbed_os(test): |
The Other Jimmy |
31:182518299918 | 180 | """Check if the specified name is in all_os_tests |
The Other Jimmy |
31:182518299918 | 181 | args: |
The Other Jimmy |
31:182518299918 | 182 | test: string name to index all_os_tests |
The Other Jimmy |
31:182518299918 | 183 | returns: tuple of test_name and source location of test, |
The Other Jimmy |
31:182518299918 | 184 | as given by find_tests""" |
The Other Jimmy |
31:182518299918 | 185 | all_os_tests = find_tests(ROOT, "K64F", "ARM") |
The Other Jimmy |
31:182518299918 | 186 | if test in all_os_tests.keys(): |
The Other Jimmy |
31:182518299918 | 187 | return (test, all_os_tests[test]) |
The Other Jimmy |
31:182518299918 | 188 | else: |
The Other Jimmy |
31:182518299918 | 189 | supported = columnate([t for t in all_os_tests.keys()]) |
The Other Jimmy |
31:182518299918 | 190 | raise ArgumentTypeError("Program with name '{0}' not found. " |
The Other Jimmy |
31:182518299918 | 191 | "Supported tests are: \n{1}".format(test,supported)) |
The Other Jimmy |
31:182518299918 | 192 | |
The Other Jimmy |
31:182518299918 | 193 | |
The Other Jimmy |
31:182518299918 | 194 | def check_version(version): |
The Other Jimmy |
31:182518299918 | 195 | """Check if the specified version is valid |
The Other Jimmy |
31:182518299918 | 196 | args: |
The Other Jimmy |
31:182518299918 | 197 | version: integer versio of mbed |
The Other Jimmy |
31:182518299918 | 198 | returns: |
The Other Jimmy |
31:182518299918 | 199 | version if it is valid""" |
The Other Jimmy |
31:182518299918 | 200 | if version not in RELEASE_VERSIONS: |
The Other Jimmy |
31:182518299918 | 201 | raise ArgumentTypeError("Choose from versions : %s"%", ".join(RELEASE_VERSIONS)) |
The Other Jimmy |
31:182518299918 | 202 | return version |
screamer | 25:aef6536015e3 | 203 | |
The Other Jimmy |
31:182518299918 | 204 | |
The Other Jimmy |
31:182518299918 | 205 | def main(): |
The Other Jimmy |
31:182518299918 | 206 | """Entry point""" |
The Other Jimmy |
31:182518299918 | 207 | |
The Other Jimmy |
31:182518299918 | 208 | ide_list = ["iar", "uvision"] |
The Other Jimmy |
31:182518299918 | 209 | |
The Other Jimmy |
31:182518299918 | 210 | default_v2 = [test_name_known("MBED_BLINKY")] |
The Other Jimmy |
31:182518299918 | 211 | default_v5 = [check_valid_mbed_os('tests-mbedmicro-rtos-mbed-basic')] |
The Other Jimmy |
31:182518299918 | 212 | |
The Other Jimmy |
31:182518299918 | 213 | parser = argparse.ArgumentParser(description= |
The Other Jimmy |
31:182518299918 | 214 | "Test progen builders. Leave any flag off" |
The Other Jimmy |
31:182518299918 | 215 | " to run with all possible options.") |
The Other Jimmy |
31:182518299918 | 216 | parser.add_argument("-i", |
The Other Jimmy |
31:182518299918 | 217 | dest="ides", |
The Other Jimmy |
31:182518299918 | 218 | default=ide_list, |
The Other Jimmy |
31:182518299918 | 219 | type=argparse_many(argparse_force_lowercase_type( |
The Other Jimmy |
31:182518299918 | 220 | ide_list, "toolchain")), |
The Other Jimmy |
31:182518299918 | 221 | help="The target IDE: %s"% str(ide_list)) |
The Other Jimmy |
31:182518299918 | 222 | |
The Other Jimmy |
31:182518299918 | 223 | parser.add_argument( "-p", |
The Other Jimmy |
31:182518299918 | 224 | type=argparse_many(test_known), |
The Other Jimmy |
31:182518299918 | 225 | dest="programs", |
The Other Jimmy |
31:182518299918 | 226 | help="The index of the desired test program: [0-%d]" |
The Other Jimmy |
31:182518299918 | 227 | % (len(TESTS) - 1)) |
screamer | 25:aef6536015e3 | 228 | |
screamer | 25:aef6536015e3 | 229 | parser.add_argument("-n", |
The Other Jimmy |
31:182518299918 | 230 | type=argparse_many(test_name_known), |
The Other Jimmy |
31:182518299918 | 231 | dest="programs", |
The Other Jimmy |
31:182518299918 | 232 | help="The name of the desired test program") |
screamer | 25:aef6536015e3 | 233 | |
The Other Jimmy |
31:182518299918 | 234 | parser.add_argument("-m", "--mcu", |
The Other Jimmy |
31:182518299918 | 235 | help=("Generate projects for the given MCUs"), |
The Other Jimmy |
31:182518299918 | 236 | metavar="MCU", |
The Other Jimmy |
31:182518299918 | 237 | type=argparse_many(str.upper)) |
The Other Jimmy |
31:182518299918 | 238 | |
The Other Jimmy |
31:182518299918 | 239 | parser.add_argument("-os-tests", |
The Other Jimmy |
31:182518299918 | 240 | type=argparse_many(check_valid_mbed_os), |
The Other Jimmy |
31:182518299918 | 241 | dest="os_tests", |
The Other Jimmy |
31:182518299918 | 242 | help="Mbed-os tests") |
screamer | 25:aef6536015e3 | 243 | |
screamer | 25:aef6536015e3 | 244 | parser.add_argument("-c", "--clean", |
screamer | 25:aef6536015e3 | 245 | dest="clean", |
The Other Jimmy |
31:182518299918 | 246 | action="store_true", |
screamer | 25:aef6536015e3 | 247 | help="clean up the exported project files", |
screamer | 25:aef6536015e3 | 248 | default=False) |
screamer | 25:aef6536015e3 | 249 | |
The Other Jimmy |
31:182518299918 | 250 | parser.add_argument("--release", |
The Other Jimmy |
31:182518299918 | 251 | dest="release", |
The Other Jimmy |
31:182518299918 | 252 | type=check_version, |
The Other Jimmy |
31:182518299918 | 253 | help="Which version of mbed to test", |
The Other Jimmy |
31:182518299918 | 254 | default=RELEASE_VERSIONS[-1]) |
screamer | 25:aef6536015e3 | 255 | |
The Other Jimmy |
31:182518299918 | 256 | parser.add_argument("--profile", |
The Other Jimmy |
31:182518299918 | 257 | dest="profile", |
The Other Jimmy |
31:182518299918 | 258 | action="append", |
The Other Jimmy |
31:182518299918 | 259 | type=argparse_filestring_type, |
The Other Jimmy |
31:182518299918 | 260 | default=[]) |
screamer | 25:aef6536015e3 | 261 | |
The Other Jimmy |
31:182518299918 | 262 | options = parser.parse_args() |
The Other Jimmy |
31:182518299918 | 263 | # targets in chosen release |
The Other Jimmy |
31:182518299918 | 264 | targetnames = [target[0] for target in |
The Other Jimmy |
31:182518299918 | 265 | get_mbed_official_release(options.release)] |
The Other Jimmy |
31:182518299918 | 266 | # all targets in release are default |
The Other Jimmy |
31:182518299918 | 267 | test_targets = options.mcu or targetnames |
The Other Jimmy |
31:182518299918 | 268 | if not all([t in targetnames for t in test_targets]): |
The Other Jimmy |
31:182518299918 | 269 | args_error(parser, "Only specify targets in release %s:\n%s" |
The Other Jimmy |
31:182518299918 | 270 | %(options.release, columnate(sorted(targetnames)))) |
screamer | 25:aef6536015e3 | 271 | |
The Other Jimmy |
31:182518299918 | 272 | v2_tests, v5_tests = [],[] |
The Other Jimmy |
31:182518299918 | 273 | if options.release == '5': |
The Other Jimmy |
31:182518299918 | 274 | v5_tests = options.os_tests or default_v5 |
The Other Jimmy |
31:182518299918 | 275 | elif options.release == '2': |
The Other Jimmy |
31:182518299918 | 276 | v2_tests = options.programs or default_v2 |
screamer | 25:aef6536015e3 | 277 | |
The Other Jimmy |
31:182518299918 | 278 | tests = [] |
The Other Jimmy |
31:182518299918 | 279 | default_test = {key:None for key in ['ide', 'mcu', 'name', 'id', 'src', 'log']} |
The Other Jimmy |
31:182518299918 | 280 | for mcu in test_targets: |
The Other Jimmy |
31:182518299918 | 281 | for ide in options.ides: |
The Other Jimmy |
31:182518299918 | 282 | log = "build_log.txt" if ide == 'iar' \ |
The Other Jimmy |
31:182518299918 | 283 | else join('build', 'build_log.txt') |
The Other Jimmy |
31:182518299918 | 284 | # add each test case to the tests array |
The Other Jimmy |
31:182518299918 | 285 | default_test.update({'mcu': mcu, 'ide': ide, 'log':log}) |
The Other Jimmy |
31:182518299918 | 286 | for test in v2_tests: |
The Other Jimmy |
31:182518299918 | 287 | default_test.update({'name':TESTS[test]["id"], 'id':test}) |
The Other Jimmy |
31:182518299918 | 288 | tests.append(copy(default_test)) |
The Other Jimmy |
31:182518299918 | 289 | for test in v5_tests: |
The Other Jimmy |
31:182518299918 | 290 | default_test.update({'name':test[0],'src':[test[1],ROOT]}) |
The Other Jimmy |
31:182518299918 | 291 | tests.append(copy(default_test)) |
The Other Jimmy |
31:182518299918 | 292 | test = ExportBuildTest(tests, parser, options) |
The Other Jimmy |
31:182518299918 | 293 | test.batch_tests(clean=options.clean) |
The Other Jimmy |
31:182518299918 | 294 | print_results(test.successes, test.failures, test.skips) |
The Other Jimmy |
31:182518299918 | 295 | sys.exit(len(test.failures)) |
screamer | 25:aef6536015e3 | 296 | |
The Other Jimmy |
31:182518299918 | 297 | if __name__ == "__main__": |
The Other Jimmy |
31:182518299918 | 298 | main() |