Skip to content

templates: Break out build/test summaries #310

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
111 changes: 66 additions & 45 deletions kcidb/templates/build.j2
Original file line number Diff line number Diff line change
@@ -6,6 +6,61 @@
reject("none") | join(" ") | default(build.id, true) -}}
{% endmacro %}

{%- macro get_build_format(space, invalid, valid, unknown) -%}
{{-
"%" + space + "s" +
((" %s %" +
(invalid | string | length | string) + "s")
if invalid else
"%.0s%.0s") +
((" %s %" +
(valid | string | length | string) + "s")
if valid else
"%.0s%.0s") +
((" %s %" +
(unknown | string | length | string) + "s")
if unknown else
"%.0s%.0s")
-}}
{% endmacro %}

{%- macro status(architecture,
invalid_build_count,
valid_build_count,
unknown_build_count,
build_fmt) -%}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be called architecture_status, as in "producing a summary for builds in an "architecture" container". However, it might turn out that we don't need this particular separate macro after all.

{{- build_fmt | format("?" if architecture is none
else architecture,
"❌" if invalid_build_count else "➖",
(invalid_build_count | string)
if invalid_build_count else "",
"✅" if valid_build_count else "➖",
(valid_build_count | string)
if valid_build_count else "",
"❓" if unknown_build_count else "➖",
(unknown_build_count | string)
if unknown_build_count else "") -}}
{% endmacro %}

{%- macro build_status(container, space="") -%}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this should be named something like container_status, since this is producing a build status summary for a container, not one particular build. Besides the file is already called build.j2 and having "build" in the name would be repeating ourselves.

{% set invalid_build_count =
container | selectattr("valid", "false") | list | length %}
{% set valid_build_count =
container | selectattr("valid", "true") | list | length %}
{% set unknown_build_count =
container | selectattr("valid", "none") | list | length %}
{% set build_fmt = get_build_format(space,
invalid_build_count,
valid_build_count,
unknown_build_count)
%}
{{- status("",
invalid_build_count,
valid_build_count,
unknown_build_count,
build_fmt) -}}
{% endmacro %}

{% macro container_summary(container, max_list_len) %}
{% if container.builds %}
{{- "\nBUILDS" }}
@@ -16,54 +71,20 @@
{% set unknown_builds =
container.builds | selectattr("valid", "none") | list %}
{{- "\n Status" }}
{% set invalid_build_count = invalid_builds | length %}
{% set valid_build_count = valid_builds | length %}
{% set unknown_build_count = unknown_builds | length %}
{% set build_fmt =
"%" +
((8 + (container.architecture_valid_builds |
map("default", "", true) | map("length") | max)) | string) +
"s" +
((" %s %" +
(invalid_build_count | string | length | string) + "s")
if invalid_build_count else
"%.0s%.0s") +
((" %s %" +
(valid_build_count | string | length | string) + "s")
if valid_build_count else
"%.0s%.0s") +
((" %s %" +
(unknown_build_count | string | length | string) + "s")
if unknown_build_count else
"%.0s%.0s")
%}
{% macro status(architecture,
invalid_build_count,
valid_build_count,
unknown_build_count) %}
{{- build_fmt | format("?" if architecture is none
else architecture,
"❌" if invalid_build_count else "➖",
(invalid_build_count | string)
if invalid_build_count else "",
"✅" if valid_build_count else "➖",
(valid_build_count | string)
if valid_build_count else "",
"❓" if unknown_build_count else "➖",
(unknown_build_count | string)
if unknown_build_count else "") -}}
{% endmacro %}
{{- status("",
invalid_build_count,
valid_build_count,
unknown_build_count) }}
{% set space = (( 8 + (container.architecture_valid_builds |
map("default", "", true) | map("length") | max)) | string) %}
{{- build_status(container.builds, space) }}
{{- "\n Architectures" }}
{% for architecture, valid_builds
{% for architecture, arch_valid_builds
in container.architecture_valid_builds.items() %}
{{- status(architecture,
valid_builds[false] | length,
valid_builds[true] | length,
valid_builds[none] | length) }}
arch_valid_builds[false] | length,
arch_valid_builds[true] | length,
arch_valid_builds[none] | length,
get_build_format(space,
invalid_builds | length,
valid_builds | length,
unknown_builds | length)) }}
{% endfor %}
{% if invalid_builds %}
{{- " Failures" }}
3 changes: 1 addition & 2 deletions kcidb/templates/build_description.txt.j2
Original file line number Diff line number Diff line change
@@ -13,8 +13,7 @@ OVERVIEW

Build: {{ misc_macros.valid_badge(build.valid) }}
{% if build.tests %}
Tests: {{ test_macros.waived_status_badge(build.tests_root.waived,
build.tests_root.status) }}
Tests: {{ test_macros.test_status(build.tests_root.waived_status_nodes) }}
{% endif %}

BUILD
5 changes: 2 additions & 3 deletions kcidb/templates/checkout_description.txt.j2
Original file line number Diff line number Diff line change
@@ -13,11 +13,10 @@ OVERVIEW

Checkout: {{ misc_macros.valid_badge(checkout.valid) }}
{% if checkout.builds %}
Builds: {{ misc_macros.valid_badge(checkout.builds_valid) }}
Builds: {{ build_macros.build_status(checkout.builds) }}
{% endif %}
{% if checkout.tests %}
Tests: {{ test_macros.waived_status_badge(checkout.tests_root.waived,
checkout.tests_root.status) }}
Tests: {{ test_macros.test_status(checkout.tests_root.waived_status_nodes) }}
{% endif %}

CHECKOUT
5 changes: 2 additions & 3 deletions kcidb/templates/revision_description.txt.j2
Original file line number Diff line number Diff line change
@@ -15,11 +15,10 @@ OVERVIEW
Patches: {{ misc_macros.valid_badge(revision.checkouts_valid) }}
{% endif %}
{% if revision.builds %}
Builds: {{ misc_macros.valid_badge(revision.builds_valid) }}
Builds: {{ build_macros.build_status(revision.builds) }}
{% endif %}
{% if revision.tests %}
Tests: {{ test_macros.waived_status_badge(revision.tests_root.waived,
revision.tests_root.status) }}
Tests: {{ test_macros.test_status(revision.tests_root.waived_status_nodes) }}
{% endif %}

REVISION
20 changes: 12 additions & 8 deletions kcidb/templates/test.j2
Original file line number Diff line number Diff line change
@@ -37,20 +37,24 @@
reject("none") | join(" ") | default(test.id, true) -}}
{% endmacro %}

{% macro test_status(waived_status_nodes) %}
{% for waived, status_nodes in waived_status_nodes.items() %}
{% for status, nodes in status_nodes.items() %}
{% if nodes %}
{{- " " + waived_status_emoji(waived, status) +
" " + (nodes | length | string) -}}
{% endif %}
{% endfor %}
{% endfor %}
{% endmacro %}

{% macro container_summary(container, max_list_len) %}
{% if container.tests %}
{{- "\nTESTS" }}
{% set waived_status_nodes = container.tests_root.waived_status_nodes %}
{{- "\n Status" }}
{{- "\n " -}}
{% for waived, status_nodes in waived_status_nodes.items() %}
{% for status, nodes in status_nodes.items() %}
{% if nodes %}
{{- " " + waived_status_emoji(waived, status) +
" " + (nodes | length | string) -}}
{% endif %}
{% endfor %}
{% endfor %}
{{ test_status(waived_status_nodes) }}
{{- "" }}
{% set errored_nodes = waived_status_nodes[false]["ERROR"] %}
{% if errored_nodes %}