Skip to content
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

templates: Break out build/test summaries #310

Draft
wants to merge 4 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
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
Expand Up @@ -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")
-}}
spbnick marked this conversation as resolved.
Show resolved Hide resolved
{% 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" }}
Expand All @@ -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" }}
Expand Down
3 changes: 1 addition & 2 deletions kcidb/templates/build_description.txt.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions kcidb/templates/checkout_description.txt.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
5 changes: 2 additions & 3 deletions kcidb/templates/revision_description.txt.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
20 changes: 12 additions & 8 deletions kcidb/templates/test.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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 %}
Expand Down