mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-02 14:40:19 -07:00
Tweaked merge_hash to also affect Runner behavior
This commit is contained in:
parent
94d189bc7f
commit
6826aa7360
9 changed files with 110 additions and 23 deletions
|
@ -10,6 +10,7 @@ import ansible.utils as utils
|
|||
import ansible.callbacks as ans_callbacks
|
||||
import os
|
||||
import shutil
|
||||
import ansible.constants as C
|
||||
|
||||
EVENTS = []
|
||||
|
||||
|
@ -93,6 +94,8 @@ class TestPlaybook(unittest.TestCase):
|
|||
os.unlink('/tmp/ansible_test_data_copy.out')
|
||||
if os.path.exists('/tmp/ansible_test_data_template.out'):
|
||||
os.unlink('/tmp/ansible_test_data_template.out')
|
||||
if os.path.exists('/tmp/ansible_test_messages.out'):
|
||||
os.unlink('/tmp/ansible_test_messages.out')
|
||||
|
||||
def _prepare_stage_dir(self):
|
||||
stage_path = os.path.join(self.test_dir, 'test_data')
|
||||
|
@ -236,3 +239,69 @@ class TestPlaybook(unittest.TestCase):
|
|||
play = ansible.playbook.Play(playbook, playbook.playbook[0], os.getcwd())
|
||||
assert play.hosts == ';'.join(('host1', 'host2', 'host3'))
|
||||
|
||||
def test_playbook_hash_replace(self):
|
||||
# save default hash behavior so we can restore it in the end of the test
|
||||
saved_hash_behavior = C.DEFAULT_HASH_BEHAVIOUR
|
||||
C.DEFAULT_HASH_BEHAVIOUR = "replace"
|
||||
|
||||
test_callbacks = TestCallbacks()
|
||||
playbook = ansible.playbook.PlayBook(
|
||||
playbook=os.path.join(self.test_dir, 'test_hash_behavior', 'playbook.yml'),
|
||||
host_list='test/ansible_hosts',
|
||||
stats=ans_callbacks.AggregateStats(),
|
||||
callbacks=test_callbacks,
|
||||
runner_callbacks=test_callbacks
|
||||
)
|
||||
playbook.run()
|
||||
|
||||
with open('/tmp/ansible_test_messages.out') as f:
|
||||
actual = [l.strip() for l in f.readlines()]
|
||||
|
||||
print "**ACTUAL**"
|
||||
print actual
|
||||
|
||||
expected = [
|
||||
"goodbye: Goodbye World!"
|
||||
]
|
||||
|
||||
print "**EXPECTED**"
|
||||
print expected
|
||||
|
||||
assert actual == expected
|
||||
|
||||
# restore default hash behavior
|
||||
C.DEFAULT_HASH_BEHAVIOUR = saved_hash_behavior
|
||||
|
||||
def test_playbook_hash_merge(self):
|
||||
# save default hash behavior so we can restore it in the end of the test
|
||||
saved_hash_behavior = C.DEFAULT_HASH_BEHAVIOUR
|
||||
C.DEFAULT_HASH_BEHAVIOUR = "merge"
|
||||
|
||||
test_callbacks = TestCallbacks()
|
||||
playbook = ansible.playbook.PlayBook(
|
||||
playbook=os.path.join(self.test_dir, 'test_hash_behavior', 'playbook.yml'),
|
||||
host_list='test/ansible_hosts',
|
||||
stats=ans_callbacks.AggregateStats(),
|
||||
callbacks=test_callbacks,
|
||||
runner_callbacks=test_callbacks
|
||||
)
|
||||
playbook.run()
|
||||
|
||||
with open('/tmp/ansible_test_messages.out') as f:
|
||||
actual = [l.strip() for l in f.readlines()]
|
||||
|
||||
print "**ACTUAL**"
|
||||
print actual
|
||||
|
||||
expected = [
|
||||
"hello: Hello World!",
|
||||
"goodbye: Goodbye World!"
|
||||
]
|
||||
|
||||
print "**EXPECTED**"
|
||||
print expected
|
||||
|
||||
assert actual == expected
|
||||
|
||||
# restore default hash behavior
|
||||
C.DEFAULT_HASH_BEHAVIOUR = saved_hash_behavior
|
||||
|
|
3
test/test_hash_behavior/goodbye.yml
Normal file
3
test/test_hash_behavior/goodbye.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
messages:
|
||||
goodbye: "Goodbye World!"
|
3
test/test_hash_behavior/hello.yml
Normal file
3
test/test_hash_behavior/hello.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
---
|
||||
messages:
|
||||
hello: "Hello World!"
|
3
test/test_hash_behavior/message.j2
Normal file
3
test/test_hash_behavior/message.j2
Normal file
|
@ -0,0 +1,3 @@
|
|||
{% for k, v in messages.iteritems() %}
|
||||
{{ k }}: {{ v }}
|
||||
{% endfor %}
|
11
test/test_hash_behavior/playbook.yml
Normal file
11
test/test_hash_behavior/playbook.yml
Normal file
|
@ -0,0 +1,11 @@
|
|||
---
|
||||
- hosts: all
|
||||
connection: local
|
||||
|
||||
vars_files:
|
||||
- hello.yml
|
||||
- goodbye.yml
|
||||
|
||||
tasks:
|
||||
- name: generate messages
|
||||
action: template src=message.j2 dest=/tmp/ansible_test_messages.out
|
Loading…
Add table
Add a link
Reference in a new issue