@@ -73,6 +73,7 @@ def parse_filters(kwargs) -> dict[str, Any]:
completed_before = kwargs['completed_before'].astimezone()
filters = {'build': regex_filter(kwargs['build_filter']),
+ 'parent_build_number': regex_filter(kwargs['parent_build_filter']),
'test': regex_filter(kwargs['test_filter']),
'ignore-test': regex_filter(kwargs['ignore_test_filter']),
'status': statuses,
@@ -184,6 +185,8 @@ failures_list_options = [
help="Only show some tests"),
click.option('--build-filter', '-b', multiple=True,
help="Only show some builds"),
+ click.option('--parent-build-filter', '-p', multiple=True,
+ help="Only show some builds with parent build id"),
click.option('--owner-filter', '-o', multiple=True,
help='Only show some owners ("none" for no owner)'),
click.option('--ignore-test-filter', '-T', multiple=True,
@@ -223,6 +226,8 @@ def _format_pending_failures(builds: list[swatbuild.Build],
) -> tuple[list[list[str]], list[str]]:
# Generate a list of formatted builds on failures.
def format_header(field):
+ if field == swatbuild.Field.PARENT_BUILD_NUMBER:
+ return "Parent"
if field == swatbuild.Field.STATUS:
return "Sts"
return str(field)
@@ -284,6 +289,7 @@ def _show_failures(refresh: str, urlopens: set[str], limit: int,
shown_fields_all = [
swatbuild.Field.BUILD,
+ swatbuild.Field.PARENT_BUILD_NUMBER,
swatbuild.Field.STATUS,
swatbuild.Field.TEST,
swatbuild.Field.OWNER,
@@ -102,6 +102,7 @@ class Field(enum.StrEnum):
USER_NOTES = 'Notes'
USER_STATUS = 'New Triage'
TRIAGE = 'Triage'
+ PARENT_BUILD_NUMBER = 'Parent Build Number'
class Failure:
@@ -402,7 +403,8 @@ class Build:
if not all(simple_match(field) for field in simple_filters):
return False
- regex_filters = [Field.BUILD, Field.OWNER, Field.TEST]
+ regex_filters = [Field.BUILD, Field.OWNER, Field.TEST,
+ Field.PARENT_BUILD_NUMBER]
if not all(regex_match(field) for field in regex_filters):
return False
To be able to filter failures by parent build number, e.g. filter all failures for a-full build number xyz, add a --parent-build-filter (-p) option to swattool. The option can be passed multiple times and can be a regular expression. It is also displayed by default in show-pending-failures, after the column "Build" as "Parent". Signed-off-by: Antonin Godard <antonin.godard@bootlin.com> --- swattool/main.py | 6 ++++++ swattool/swatbuild.py | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) --- base-commit: 8930d3e3f71dc3d2a33e8df5ade430deeeb7019b change-id: 20250620-parent-build-filter-cd0c6ab8d86d Best regards,