From 34f77a498c86dc9953a487c34aecfbc29622d202 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ciro=20Santilli=20=E5=85=AD=E5=9B=9B=E4=BA=8B=E4=BB=B6=20?= =?UTF-8?q?=E6=B3=95=E8=BD=AE=E5=8A=9F?= Date: Tue, 22 Jan 2019 00:00:00 +0000 Subject: [PATCH] test-gdb: allow running just one test --- README.adoc | 2 +- test-gdb | 35 +++++++++++++++++++++++++---------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/README.adoc b/README.adoc index d4db3aa..57bb473 100644 --- a/README.adoc +++ b/README.adoc @@ -11892,7 +11892,7 @@ Sources: * link:build-test-gdb[] * link:test-gdb[] -If something goes wrong, re-run the test commands manually and use `--verbose` to understand what happened: +If a test fails, re-run the test commands manually and use `--verbose` to understand what happened: .... ./run --arch arm --background --baremetal add --wait-gdb & diff --git a/test-gdb b/test-gdb index 6ffe179..cfde9f2 100755 --- a/test-gdb +++ b/test-gdb @@ -6,23 +6,38 @@ import os import common class Main(common.LkmcCliFunction): + def __init__(self): + super().__init__() + self.add_argument( + 'tests', + metavar='tests', + nargs='*', + help='''\ +If given, run only the given tests. Otherwise, run all tests, +found by searching for the Python test files. +''' + ) + def timed_main(self): run = self.import_path('run').Main() run_gdb = self.import_path('run-gdb').Main() for emulator in self.env['emulators']: if self.env['arch'] in self.env['crosstool_ng_supported_archs']: - test_scripts_noext = [] - for f in os.listdir(self.env['baremetal_src_dir']): - base, ext = os.path.splitext(f) - if ext == '.py': - test_scripts_noext.append(base) - for root, dirs, files in os.walk(os.path.join(self.env['baremetal_src_dir'], 'arch', self.env['arch'])): - for f in files: + if self.env['tests'] == []: + test_scripts_noext = [] + for f in os.listdir(self.env['baremetal_src_dir']): base, ext = os.path.splitext(f) if ext == '.py': - full_path = os.path.join(root, base) - relpath = os.path.relpath(full_path, self.env['baremetal_src_dir']) - test_scripts_noext.append(relpath) + test_scripts_noext.append(base) + for root, dirs, files in os.walk(os.path.join(self.env['baremetal_src_dir'], 'arch', self.env['arch'])): + for f in files: + base, ext = os.path.splitext(f) + if ext == '.py': + full_path = os.path.join(root, base) + relpath = os.path.relpath(full_path, self.env['baremetal_src_dir']) + test_scripts_noext.append(relpath) + else: + test_scripts_noext = self.env['tests'] for test_script_noext in test_scripts_noext: run_thread = threading.Thread(target=lambda: run( archs=[self.env['arch']],