mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
a65e34ce77
* Fix synchronize retries The synchronize module munges its task args on every invocation of run(). This was problematic because the munged data was not fit for use by a second pass of the synchronize module. Correct this by using a copy of the task args on every invocation of run() so that the original args are not affected. Local testing using this playbook seems to confirm that things work as expected: - hosts: all tasks: - delay: 2 register: task_result retries: 1 until: task_result.rc == 0 synchronize: dest: /tmp/out mode: pull src: /tmp/nonexistent/ fixes #18281 * Update synchroncization fixture assertions When we started operating on a copy of the task args the test assertions were no longer asserting things about the munged state but of the pristine state. Convert the copy of task args to a class member so that it can be compared against later in testing and update the assertions to check this munged copy. * Shuffle objects around for cleaner testing Attach the temporary args dict to the task rather than the action as this makes updating the existing tests cleaner.
38 lines
1.2 KiB
YAML
38 lines
1.2 KiB
YAML
task_args:
|
|
src: /tmp/deleteme
|
|
dest: /tmp/deleteme
|
|
#rsync_path: rsync
|
|
_task:
|
|
become: True
|
|
become_method: None
|
|
fixtures:
|
|
taskvars_in: task_vars_in.json
|
|
taskvars_out: task_vars_out.json
|
|
connection:
|
|
transport: 'ssh'
|
|
_play_context:
|
|
become: True
|
|
become_method: sudo
|
|
remote_addr: el6host
|
|
remote_user: root
|
|
hostvars:
|
|
'127.0.0.1': {}
|
|
'::1': {}
|
|
'localhost': {}
|
|
asserts:
|
|
- "hasattr(SAM._connection, 'ismock')"
|
|
- "SAM._connection.transport == 'local'"
|
|
- "self.execute_called"
|
|
- "self.final_module_args['_local_rsync_path'] == 'rsync'"
|
|
# this is a crucial aspect of this scenario ...
|
|
- "self.final_module_args['rsync_path'] == '\"sudo rsync\"'"
|
|
- "self.final_module_args['src'] == '/tmp/deleteme'"
|
|
- "self.final_module_args['dest'] == 'root@el6host:/tmp/deleteme'"
|
|
- "self.task.become == True"
|
|
- "self.task.become_user == None"
|
|
- "self._play_context.shell == 'sh'"
|
|
- "self._play_context.remote_addr == 'el6host'"
|
|
- "self._play_context.remote_user == 'root'"
|
|
- "self._play_context.become == False"
|
|
- "self._play_context.become_user == 'root'"
|
|
- "self._play_context.password == None"
|