[test coverage] Add tests for set_stats (#74243)

* satisfy the all-knowing, ever present God of Sanity and use 'grep -c' vs. 'wc -l'
This commit is contained in:
David Shrewsbury 2021-04-13 11:43:53 -04:00 committed by GitHub
parent 93fdba7013
commit 5e55af2f02
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 106 additions and 0 deletions

View file

@ -0,0 +1 @@
shippable/posix/group5

View file

@ -0,0 +1,13 @@
#!/usr/bin/env bash
set -eux
export ANSIBLE_SHOW_CUSTOM_STATS=yes
# Simple tests
ansible-playbook test_simple.yml
# This playbook does two set_stats calls setting my_int to 10 and 15.
# The aggregated output should add to 25.
output=$(ansible-playbook test_aggregate.yml | grep -c '"my_int": 25')
test "$output" -eq 1

View file

@ -0,0 +1,13 @@
---
- hosts: localhost
gather_facts: false
tasks:
- name: First set_stats
set_stats:
data:
my_int: 10
- name: Second set_stats
set_stats:
data:
my_int: 15

View file

@ -0,0 +1,79 @@
---
- hosts: localhost
gather_facts: false
tasks:
- name: test simple data with defaults
set_stats:
data:
my_int: 42
my_string: "foo"
register: result
- name: assert simple data return
assert:
that:
- result is succeeded
- not result.changed
- '"ansible_stats" in result'
- '"data" in result.ansible_stats'
- result.ansible_stats.data.my_int == 42
- result.ansible_stats.data.my_string == "foo"
- '"per_host" in result.ansible_stats'
- not result.ansible_stats.per_host
- '"aggregate" in result.ansible_stats'
- result.ansible_stats.aggregate
- name: test per_host and aggregate settings
set_stats:
data:
my_int: 42
per_host: yes
aggregate: no
register: result
- name: assert per_host and aggregate changes
assert:
that:
- result is succeeded
- not result.changed
- '"ansible_stats" in result'
- '"per_host" in result.ansible_stats'
- result.ansible_stats.per_host
- '"aggregate" in result.ansible_stats'
- not result.ansible_stats.aggregate
- name: Test bad call
block:
- name: "EXPECTED FAILURE - test invalid data type"
set_stats:
data:
- 1
- 2
- fail:
msg: "should not get here"
rescue:
- assert:
that:
- ansible_failed_task.name == "EXPECTED FAILURE - test invalid data type"
- ansible_failed_result.msg == "The 'data' option needs to be a dictionary/hash"
- name: Test options from template
set_stats:
data:
my_string: "foo"
aggregate: "x"
- name: Test bad data
block:
- name: "EXPECTED FAILURE - bad data"
set_stats:
data:
.bad: 1
- fail:
msg: "should not get here"
rescue:
- assert:
that:
- ansible_failed_task.name == "EXPECTED FAILURE - bad data"
- ansible_failed_result.msg == "The variable name '.bad' is not valid. Variables must start with a letter or underscore character, and contain only letters, numbers and underscores."