mirror of https://github.com/ansible/ansible.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
YAML
88 lines
2.6 KiB
YAML
- name: Test missing binaries
|
|
when: ansible_pkg_mgr in ('yum', 'dnf', 'apt', 'pkgng')
|
|
block:
|
|
- name: Remove zip binaries
|
|
package:
|
|
state: absent
|
|
name:
|
|
- zip
|
|
- unzip
|
|
notify: restore packages
|
|
|
|
- name: create unarchive destinations
|
|
file:
|
|
path: '{{ remote_tmp_dir }}/test-unarchive-{{ item }}'
|
|
state: directory
|
|
loop:
|
|
- zip
|
|
- tar
|
|
|
|
# With the zip binaries absent and tar still present, this task should work
|
|
- name: unarchive a tar file
|
|
unarchive:
|
|
src: '{{remote_tmp_dir}}/test-unarchive.tar'
|
|
dest: '{{remote_tmp_dir}}/test-unarchive-tar'
|
|
remote_src: yes
|
|
register: tar
|
|
|
|
- name: unarchive a zip file
|
|
unarchive:
|
|
src: '{{remote_tmp_dir}}/test-unarchive.zip'
|
|
dest: '{{remote_tmp_dir}}/test-unarchive-zip'
|
|
list_files: True
|
|
remote_src: yes
|
|
register: zip_fail
|
|
ignore_errors: yes
|
|
# FreeBSD does not have zipinfo, but does have a bootstrapped unzip in /usr/bin
|
|
# which alone is sufficient to run unarchive.
|
|
# Exclude /usr/bin from the PATH to test having no binary available.
|
|
environment:
|
|
PATH: "{{ ENV_PATH }}"
|
|
vars:
|
|
ENV_PATH: "{{ lookup('env', 'PATH') | regex_replace(re, '') }}"
|
|
re: "[^A-Za-z](\/usr\/bin:?)"
|
|
|
|
- name: Ensure tasks worked as expected
|
|
assert:
|
|
that:
|
|
- tar is success
|
|
- zip_fail is failed
|
|
- zip_fail.msg is search('Unable to find required')
|
|
|
|
- name: unarchive a zip file using unzip without zipinfo
|
|
unarchive:
|
|
src: '{{remote_tmp_dir}}/test-unarchive.zip'
|
|
dest: '{{remote_tmp_dir}}/test-unarchive-zip'
|
|
list_files: True
|
|
remote_src: yes
|
|
register: zip_success
|
|
# FreeBSD does not have zipinfo, but does have a bootstrapped unzip in /usr/bin
|
|
# which alone is sufficient to run unarchive.
|
|
when: ansible_pkg_mgr == 'pkgng'
|
|
|
|
- assert:
|
|
that:
|
|
- zip_success is success
|
|
- zip_success.changed
|
|
# Verify that file list is generated
|
|
- "'files' in zip_success"
|
|
- "zip_success['files']| length == 3"
|
|
- "'foo-unarchive.txt' in zip_success['files']"
|
|
- "'foo-unarchive-777.txt' in zip_success['files']"
|
|
- "'FOO-UNAR.TXT' in zip_success['files']"
|
|
when: ansible_pkg_mgr == 'pkgng'
|
|
|
|
- name: Remove unarchive destinations
|
|
file:
|
|
path: '{{ remote_tmp_dir }}/test-unarchive-{{ item }}'
|
|
state: absent
|
|
loop:
|
|
- zip
|
|
- tar
|
|
|
|
- name: Reinsntall zip binaries
|
|
package:
|
|
name:
|
|
- zip
|
|
- unzip
|