1
0
Fork 0
mirror of https://github.com/ansible-collections/community.general.git synced 2024-09-14 20:13:21 +02:00

win_copy: allow src to have invalid windows chars (#31392)

* win_copy: allow src to have invalid windows chars

* create file with colon instead of avoid checkout errors
This commit is contained in:
Jordan Borean 2017-10-06 15:23:37 +10:00 committed by GitHub
parent 14b9a6b350
commit c4b51009f0
5 changed files with 37 additions and 4 deletions

View file

@ -473,6 +473,8 @@ class ActionModule(ActionBase):
symlinks=source_files['symlinks'] symlinks=source_files['symlinks']
) )
) )
# src is not required for query, will fail path validation is src has unix allowed chars
query_args.pop('src', None)
query_args.pop('content', None) query_args.pop('content', None)
query_return = self._execute_module(module_args=query_args, task_vars=task_vars) query_return = self._execute_module(module_args=query_args, task_vars=task_vars)

View file

@ -28,7 +28,7 @@
- name: fail to copy an encrypted file without the password set - name: fail to copy an encrypted file without the password set
win_copy: win_copy:
src: '{{role_path}}/files-vault/vault-file' src: '{{role_path}}/files-different/vault/vault-file'
dest: '{{test_win_copy_path}}\file' dest: '{{test_win_copy_path}}\file'
register: fail_copy_encrypted_file register: fail_copy_encrypted_file
ignore_errors: yes # weird failed_when doesn't work in this case ignore_errors: yes # weird failed_when doesn't work in this case
@ -37,11 +37,11 @@
assert: assert:
that: that:
- fail_copy_encrypted_file|failed - fail_copy_encrypted_file|failed
- fail_copy_encrypted_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-vault/vault-file' - fail_copy_encrypted_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-different/vault/vault-file'
- name: fail to copy a directory with an encrypted file without the password - name: fail to copy a directory with an encrypted file without the password
win_copy: win_copy:
src: '{{role_path}}/files-vault' src: '{{role_path}}/files-different/vault'
dest: '{{test_win_copy_path}}' dest: '{{test_win_copy_path}}'
register: fail_copy_directory_with_enc_file register: fail_copy_directory_with_enc_file
ignore_errors: yes ignore_errors: yes
@ -50,7 +50,7 @@
assert: assert:
that: that:
- fail_copy_directory_with_enc_file|failed - fail_copy_directory_with_enc_file|failed
- fail_copy_directory_with_enc_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-vault/vault-file' - fail_copy_directory_with_enc_file.msg == 'A vault password or secret must be specified to decrypt {{role_path}}/files-different/vault/vault-file'
- name: copy with content (check mode) - name: copy with content (check mode)
win_copy: win_copy:
@ -412,6 +412,37 @@
register: fail_folder_to_file register: fail_folder_to_file
failed_when: "'object at parent directory path is already a file' not in fail_folder_to_file.msg" failed_when: "'object at parent directory path is already a file' not in fail_folder_to_file.msg"
# https://github.com/ansible/ansible/issues/31336
- name: create file with colon in the name
copy:
dest: '{{role_path}}/files-different/colon:file'
content: test
delegate_to: localhost
- name: copy a file with colon as a source
win_copy:
src: '{{role_path}}/files-different/colon:file'
dest: '{{test_win_copy_path}}\colon.file'
register: copy_file_with_colon
- name: get result of file with colon as a source
win_stat:
path: '{{test_win_copy_path}}\colon.file'
register: copy_file_with_colon_result
- name: assert results of copy a file with colon as a source
assert:
that:
- copy_file_with_colon|changed
- copy_file_with_colon_result.stat.exists == True
- copy_file_with_colon_result.stat.checksum == "a94a8fe5ccb19ba61c4c0873d391e987982fbbd3"
- name: remove file with colon in the name
file:
path: '{{role_path}}/files-different/colon:file'
state: absent
delegate_to: localhost
- name: remove test folder after local to remote tests - name: remove test folder after local to remote tests
win_file: win_file:
path: '{{test_win_copy_path}}' path: '{{test_win_copy_path}}'