mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-08-03 20:54:24 -07:00
parent
4727fb77b3
commit
eff25c8a6e
28 changed files with 187 additions and 157 deletions
54
tests/integration/targets/callback/filter_plugins/helper.py
Normal file
54
tests/integration/targets/callback/filter_plugins/helper.py
Normal file
|
@ -0,0 +1,54 @@
|
|||
# Copyright (c) Ansible Project
|
||||
# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt)
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from __future__ import (absolute_import, division, print_function)
|
||||
__metaclass__ = type
|
||||
|
||||
from ansible.module_utils.six import string_types
|
||||
|
||||
|
||||
def callback_results_extractor(outputs_results):
|
||||
results = []
|
||||
for result in outputs_results:
|
||||
differences = []
|
||||
expected_output = result['test']['expected_output']
|
||||
stdout_lines = result['stdout_lines']
|
||||
for i in range(max(len(expected_output), len(stdout_lines))):
|
||||
line = "line_%s" % (i + 1)
|
||||
test_line = stdout_lines[i] if i < len(stdout_lines) else None
|
||||
expected_lines = expected_output[i] if i < len(expected_output) else None
|
||||
if not isinstance(expected_lines, string_types) and expected_lines is not None:
|
||||
if test_line not in expected_lines:
|
||||
differences.append({
|
||||
'line': {
|
||||
'expected_one_of': expected_lines,
|
||||
'got': test_line,
|
||||
}
|
||||
})
|
||||
else:
|
||||
if test_line != expected_lines:
|
||||
differences.append({
|
||||
'line': {
|
||||
'expected': expected_lines,
|
||||
'got': test_line,
|
||||
}
|
||||
})
|
||||
results.append({
|
||||
'name': result['test']['name'],
|
||||
'output': {
|
||||
'differences': differences,
|
||||
'expected': expected_output,
|
||||
'got': stdout_lines,
|
||||
},
|
||||
})
|
||||
return results
|
||||
|
||||
|
||||
class FilterModule:
|
||||
''' Jinja2 compat filters '''
|
||||
|
||||
def filters(self):
|
||||
return {
|
||||
'callback_results_extractor': callback_results_extractor,
|
||||
}
|
|
@ -50,44 +50,11 @@
|
|||
- name: Assert test output equals expected output
|
||||
assert:
|
||||
that: result.output.differences | length == 0
|
||||
loop: "{{ results }}"
|
||||
loop: "{{ outputs.results | callback_results_extractor }}"
|
||||
loop_control:
|
||||
loop_var: result
|
||||
label: "{{ result.name }}"
|
||||
register: assertions
|
||||
vars:
|
||||
results: >-
|
||||
{%- set results = [] -%}
|
||||
{%- for result in outputs.results -%}
|
||||
{%- set differences = [] -%}
|
||||
{%- for i in range([result.test.expected_output | count, result.stdout_lines | count] | max) -%}
|
||||
{%- set line = "line_%s" | format(i+1) -%}
|
||||
{%- set test_line = result.stdout_lines[i] | default(none) -%}
|
||||
{%- set expected_lines = result.test.expected_output[i] | default(none) -%}
|
||||
{%- if expected_lines is not string and expected_lines is not none -%}
|
||||
{%- if test_line not in expected_lines -%}
|
||||
{{- differences.append({
|
||||
line: {
|
||||
'expected_one_of': expected_lines,
|
||||
'got': test_line }}) -}}
|
||||
{%- endif -%}
|
||||
{%- else -%}
|
||||
{%- if expected_lines != test_line -%}
|
||||
{{- differences.append({
|
||||
line: {
|
||||
'expected': expected_lines,
|
||||
'got': test_line }}) -}}
|
||||
{%- endif -%}
|
||||
{%- endif -%}
|
||||
{%- endfor -%}
|
||||
{{- results.append({
|
||||
'name': result.test.name,
|
||||
'output': {
|
||||
'differences': differences,
|
||||
'expected': result.test.expected_output,
|
||||
'got': result.stdout_lines }}) -}}
|
||||
{%- endfor -%}
|
||||
{{- results -}}
|
||||
|
||||
always:
|
||||
- name: Remove temporary playbooks
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue