unarchive - properly handle relative path for `dest` (#75267)

* unarchive - properly handle relative path for dest

* Add integration test

* Return output of underlying commands with increased verbosity

* Revert "Return output of underlying commands with increased verbosity"

This reverts commit a2790c8275cdc5697b65670a0beffdc74b741bf6.

* Warn when a relative destination path was provided
pull/80122/head
Sam Doran 1 year ago committed by GitHub
parent f47bc03599
commit a56428de11
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -0,0 +1,2 @@
bugfixes:
- unarchive - allow relative path for ``dest`` (https://github.com/ansible/ansible/issues/64612)

@ -1022,7 +1022,12 @@ def main():
src = module.params['src']
dest = module.params['dest']
b_dest = to_bytes(dest, errors='surrogate_or_strict')
abs_dest = os.path.abspath(dest)
b_dest = to_bytes(abs_dest, errors='surrogate_or_strict')
if not os.path.isabs(dest):
module.warn("Relative destination path '{dest}' was resolved to absolute path '{abs_dest}'.".format(dest=dest, abs_dest=abs_dest))
remote_src = module.params['remote_src']
file_args = module.load_file_common_arguments(module.params)

@ -20,3 +20,4 @@
- import_tasks: test_different_language_var.yml
- import_tasks: test_invalid_options.yml
- import_tasks: test_ownership_top_folder.yml
- import_tasks: test_relative_dest.yml

@ -0,0 +1,26 @@
- name: Create relative test directory
file:
path: test-unarchive-relative
state: directory
- name: Unarchive a file using a relative destination path
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar"
dest: test-unarchive-relative
remote_src: yes
register: relative_dest_1
- name: Unarchive a file using a relative destination path again
unarchive:
src: "{{ remote_tmp_dir }}/test-unarchive.tar"
dest: test-unarchive-relative
remote_src: yes
register: relative_dest_2
- name: Ensure changes were made correctly
assert:
that:
- relative_dest_1 is changed
- relative_dest_1.warnings | length > 0
- relative_dest_1.warnings[0] is search('absolute path')
- relative_dest_2 is not changed
Loading…
Cancel
Save