From cd56ea7fa67883304da43e7c34c992d33d02be96 Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Thu, 16 Oct 2025 18:05:39 +0200 Subject: [PATCH] [stable-4] Adjust 'report this' messages to only report if the latest version still has this problem (#1174) * Adjust 'report this' messages to only report if the latest version still has this problem. (#1173) (cherry picked from commit 6b5d76bdee7b0e923d00a6f51a4cec8c08ed5465) * Adjust checks. (cherry picked from commit 24f35644e394d6bc2f97498d1c9511b6edf46f7d) (cherry picked from commit 075bc91ce848e6bfd00412afec966c1ccce10e9c) --- plugins/module_utils/compose_v2.py | 15 ++++-- plugins/modules/current_container_facts.py | 3 +- plugins/modules/docker_container.py | 3 +- .../docker_compose_v2/tasks/tests/build.yml | 12 ++--- .../tasks/tests/container-exit.yml | 4 +- .../tasks/tests/definition.yml | 48 +++++++++---------- .../docker_compose_v2/tasks/tests/pull.yml | 28 +++++------ .../tasks/tests/start-stop.yml | 48 +++++++++---------- 8 files changed, 84 insertions(+), 77 deletions(-) diff --git a/plugins/module_utils/compose_v2.py b/plugins/module_utils/compose_v2.py index 304e45c6..e6217bae 100644 --- a/plugins/module_utils/compose_v2.py +++ b/plugins/module_utils/compose_v2.py @@ -325,7 +325,8 @@ def _warn_missing_dry_run_prefix(line, warn_missing_dry_run_prefix, warn_functio # This could be a bug, a change of docker compose's output format, ... # Tell the user to report it to us :-) warn_function( - 'Event line is missing dry-run mode marker: {0!r}. Please report this at ' + 'Event line is missing dry-run mode marker: {0!r}. Please check with the latest community.docker version,' + ' and if the problem still happens there, please report this at ' 'https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md' .format(line) ) @@ -336,7 +337,8 @@ def _warn_unparsable_line(line, warn_function): # Tell the user to report it to us :-) if warn_function: warn_function( - 'Cannot parse event from line: {0!r}. Please report this at ' + 'Cannot parse event from line: {0!r}. Please check with the latest community.docker version,' + ' and if the problem still happens there, please report this at ' 'https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md' .format(line) ) @@ -384,7 +386,8 @@ def parse_json_events(stderr, warn_function=None): continue if warn_function: warn_function( - 'Cannot parse event from non-JSON line: {0!r}. Please report this at ' + 'Cannot parse event from non-JSON line: {0!r}. Please check with the latest community.docker version,' + ' and if the problem still happens there, please report this at ' 'https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md' .format(line) ) @@ -394,7 +397,8 @@ def parse_json_events(stderr, warn_function=None): except Exception as exc: if warn_function: warn_function( - 'Cannot parse event from line: {0!r}: {1}. Please report this at ' + 'Cannot parse event from line: {0!r}: {1}. Please check with the latest community.docker version,' + ' and if the problem still happens there, please report this at ' 'https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md' .format(line, exc) ) @@ -451,7 +455,8 @@ def parse_json_events(stderr, warn_function=None): except KeyError: if warn_function: warn_function( - 'Unknown resource type {0!r} in line {1!r}. Please report this at ' + 'Unknown resource type {0!r} in line {1!r}. Please check with the latest community.docker version,' + ' and if the problem still happens there, please report this at ' 'https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md' .format(resource_type_str, line) ) diff --git a/plugins/modules/current_container_facts.py b/plugins/modules/current_container_facts.py index 2daf60bb..35411905 100644 --- a/plugins/modules/current_container_facts.py +++ b/plugins/modules/current_container_facts.py @@ -17,7 +17,8 @@ version_added: 1.1.0 description: - Return facts about whether the module runs in a Docker or podman container. - This module attempts a best-effort detection. There might be special cases where - it does not work; if you encounter one, L(please file an issue, + it does not work; if you encounter one, make sure that this is still a problem with + the latest community.docker release, and if it is, L(please file an issue, https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&template=bug_report.md). author: - Felix Fontein (@felixfontein) diff --git a/plugins/modules/docker_container.py b/plugins/modules/docker_container.py index ab4535c0..6123fe08 100644 --- a/plugins/modules/docker_container.py +++ b/plugins/modules/docker_container.py @@ -774,7 +774,8 @@ options: - Platform for the container in the format C(os[/arch[/variant]]). - "Note that since community.docker 3.5.0, the module uses both the image's metadata and the Docker daemon's information to normalize platform strings similarly to how Docker itself is doing this. - If you notice idempotency problems, L(please create an issue in the community.docker GitHub repository, + If you notice idempotency problems, please verify whether this is still a problem with the latest + release of community.docker, and if it is, L(create an issue in the community.docker GitHub repository, https://github.com/ansible-collections/community.docker/issues/new?assignees=&labels=&projects=&template=bug_report.md). For older community.docker versions, you can use the O(comparisons) option with C(platform: ignore) to prevent accidental recreation of the container due to this." diff --git a/tests/integration/targets/docker_compose_v2/tasks/tests/build.yml b/tests/integration/targets/docker_compose_v2/tasks/tests/build.yml index 736848a3..8a9ed553 100644 --- a/tests/integration/targets/docker_compose_v2/tasks/tests/build.yml +++ b/tests/integration/targets/docker_compose_v2/tasks/tests/build.yml @@ -87,7 +87,7 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - present_1.containers | length == 1 - present_1.containers[0].Name == (pname ~ '-' ~ cname ~ '-1') @@ -97,17 +97,17 @@ present_1.images[0].ContainerName == (pname ~ '-' ~ cname ~ '-1') - present_1.images[0].Repository == iname - present_1.images[0].Tag == "latest" - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 # - present_4_check is changed -- whether this is true depends on a combination of Docker CLI and Docker Compose version... # Compose 2.37.3 with Docker 28.2.x results in 'changed', while Compose 2.37.3 with Docker 28.3.0 results in 'not changed'. # It seems that Docker is now clever enough to notice that nothing is rebuilt... - - present_4_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4 is not changed - - present_4.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4.warnings | default([]) | select('regex', ' please report this at ') | length == 0 always: - name: Cleanup diff --git a/tests/integration/targets/docker_compose_v2/tasks/tests/container-exit.yml b/tests/integration/targets/docker_compose_v2/tasks/tests/container-exit.yml index 6b9d1fa4..e1f4487a 100644 --- a/tests/integration/targets/docker_compose_v2/tasks/tests/container-exit.yml +++ b/tests/integration/targets/docker_compose_v2/tasks/tests/container-exit.yml @@ -54,7 +54,7 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is failed - present_1.containers | length == 1 - present_1.containers[0].Name == (pname ~ '-' ~ cname ~ '-1') @@ -67,6 +67,6 @@ present_1.images[0].ContainerName == (pname ~ '-' ~ cname ~ '-1') - present_1.images[0].Repository == (docker_test_image_alpine | split(':') | first) - present_1.images[0].Tag == (docker_test_image_alpine | split(':') | last) - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - >- ("container " ~ pname ~ '-' ~ cname ~ "-1 exited (0)") in present_1.msg diff --git a/tests/integration/targets/docker_compose_v2/tasks/tests/definition.yml b/tests/integration/targets/docker_compose_v2/tasks/tests/definition.yml index da034198..b0460744 100644 --- a/tests/integration/targets/docker_compose_v2/tasks/tests/definition.yml +++ b/tests/integration/targets/docker_compose_v2/tasks/tests/definition.yml @@ -77,7 +77,7 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - present_1.containers | length == 1 - present_1.containers[0].Name == (pname ~ '-' ~ cname ~ '-1') @@ -88,15 +88,15 @@ present_1.images[0].ContainerName == (pname ~ '-' ~ cname ~ '-1') - present_1.images[0].Repository == (docker_test_image_alpine | split(':') | first) - present_1.images[0].Tag == (docker_test_image_alpine | split(':') | last) - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3_check is changed - - present_3_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3 is changed - - present_3.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3.warnings | default([]) | select('regex', ' please report this at ') | length == 0 #################################################################### ## Absent ########################################################## @@ -135,13 +135,13 @@ - assert: that: - absent_1_check is changed - - absent_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_1 is changed - - absent_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_2_check is not changed - - absent_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_2 is not changed - - absent_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 #################################################################### ## Stopping and starting ########################################### @@ -261,30 +261,30 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3_check is changed - - present_3_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3 is changed - - present_3.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4_check is not changed - - present_4_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4 is not changed - - present_4.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5_check is changed - - present_5_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5 is changed - - present_5.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_6_check is changed - - present_6_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_6_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_6 is changed - - present_6.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_6.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_7_check is changed - - present_7_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_7_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_7 is changed - - present_7.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_7.warnings | default([]) | select('regex', ' please report this at ') | length == 0 diff --git a/tests/integration/targets/docker_compose_v2/tasks/tests/pull.yml b/tests/integration/targets/docker_compose_v2/tasks/tests/pull.yml index 8376b530..57914393 100644 --- a/tests/integration/targets/docker_compose_v2/tasks/tests/pull.yml +++ b/tests/integration/targets/docker_compose_v2/tasks/tests/pull.yml @@ -82,16 +82,16 @@ that: - present_1_check is failed or present_1_check is changed - present_1_check is changed or present_1_check.msg.startswith('General error:') - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is failed - present_1.msg.startswith('General error:') - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is failed - present_2_check.msg.startswith('Error when processing ' ~ cname ~ ':') - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is failed - present_2.msg.startswith('Error when processing ' ~ cname ~ ':') - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 #################################################################### ## Regular image ################################################### @@ -192,32 +192,32 @@ - present_1_check is changed - (present_1_check.actions | selectattr('status', 'eq', 'Pulling') | first) is truthy - (present_1_check.actions | selectattr('status', 'eq', 'Creating') | first) is truthy - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - (present_1.actions | selectattr('status', 'eq', 'Pulling') | first) is truthy - (present_1.actions | selectattr('status', 'eq', 'Creating') | first) is truthy - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3_check is changed - (present_3_check.actions | selectattr('status', 'eq', 'Pulling') | first) is truthy - present_3_check.actions | selectattr('status', 'eq', 'Creating') | length == 0 - present_3_check.actions | selectattr('status', 'eq', 'Recreating') | length == 0 - - present_3_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3 is not changed - (present_3.actions | selectattr('status', 'eq', 'Pulling') | first) is truthy - present_3.actions | selectattr('status', 'eq', 'Creating') | length == 0 - present_3.actions | selectattr('status', 'eq', 'Recreating') | length == 0 - - present_3.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4_check is changed - present_4_check.actions | selectattr('status', 'eq', 'Pulling') | length == 0 - - present_4_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4 is changed - present_4.actions | selectattr('status', 'eq', 'Pulling') | length == 0 - - present_4.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5_check is not changed - - present_5_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5 is not changed - - present_5.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5.warnings | default([]) | select('regex', ' please report this at ') | length == 0 diff --git a/tests/integration/targets/docker_compose_v2/tasks/tests/start-stop.yml b/tests/integration/targets/docker_compose_v2/tasks/tests/start-stop.yml index da1b9f9b..2431c2df 100644 --- a/tests/integration/targets/docker_compose_v2/tasks/tests/start-stop.yml +++ b/tests/integration/targets/docker_compose_v2/tasks/tests/start-stop.yml @@ -87,7 +87,7 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - present_1.containers | length == 1 - present_1.containers[0].Name == (pname ~ '-' ~ cname ~ '-1') @@ -98,15 +98,15 @@ present_1.images[0].ContainerName == (pname ~ '-' ~ cname ~ '-1') - present_1.images[0].Repository == (docker_test_image_alpine | split(':') | first) - present_1.images[0].Tag == (docker_test_image_alpine | split(':') | last) - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3_check is changed - - present_3_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3 is changed - - present_3.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3.warnings | default([]) | select('regex', ' please report this at ') | length == 0 #################################################################### ## Absent ########################################################## @@ -141,13 +141,13 @@ - assert: that: - absent_1_check is changed - - absent_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_1 is changed - - absent_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_2_check is not changed - - absent_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - absent_2 is not changed - - absent_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - absent_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 #################################################################### ## Stopping and starting ########################################### @@ -257,30 +257,30 @@ - assert: that: - present_1_check is changed - - present_1_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_1 is changed - - present_1.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_1.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2_check is not changed - - present_2_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_2 is not changed - - present_2.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_2.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3_check is changed - - present_3_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_3 is changed - - present_3.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_3.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4_check is not changed - - present_4_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_4 is not changed - - present_4.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_4.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5_check is changed - - present_5_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_5 is changed - - present_5.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_5.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_6_check is changed - - present_6_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_6_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_6 is changed - - present_6.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_6.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_7_check is changed - - present_7_check.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_7_check.warnings | default([]) | select('regex', ' please report this at ') | length == 0 - present_7 is changed - - present_7.warnings | default([]) | select('regex', ' Please report this at ') | length == 0 + - present_7.warnings | default([]) | select('regex', ' please report this at ') | length == 0