f2f743aef0
This avoids breaking other tests which depend on backports modules, since the backports.lzma module is currently incompatible with other backports modules.
335 lines
9.8 KiB
YAML
335 lines
9.8 KiB
YAML
# Test code for the archive module.
|
|
# (c) 2017, Abhijeet Kasurde <akasurde@redhat.com>
|
|
|
|
# This file is part of Ansible
|
|
#
|
|
# Ansible is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# Ansible is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with Ansible. If not, see <http://www.gnu.org/licenses/>.
|
|
# Make sure we start fresh
|
|
|
|
- name: Ensure zip is present to create test archive (yum)
|
|
yum: name=zip state=latest
|
|
when: ansible_pkg_mgr == 'yum'
|
|
|
|
- name: Ensure zip is present to create test archive (apt)
|
|
apt: name=zip state=latest
|
|
when: ansible_pkg_mgr == 'apt'
|
|
|
|
- name: Install prerequisites for backports.lzma when using python2 (non OSX)
|
|
block:
|
|
- name: Set liblzma package name depending on the OS
|
|
set_fact:
|
|
liblzma_dev_package:
|
|
Debian: liblzma-dev
|
|
RedHat: xz-devel
|
|
Suse: xz-devel
|
|
- name: Ensure liblzma-dev is present to install backports-lzma
|
|
package: name={{ liblzma_dev_package[ansible_os_family] }} state=latest
|
|
when: ansible_os_family in liblzma_dev_package.keys()
|
|
when:
|
|
- ansible_python_version.split('.')[0] == '2'
|
|
- ansible_os_family != 'Darwin'
|
|
|
|
- name: Install prerequisites for backports.lzma when using python2 (OSX)
|
|
block:
|
|
- name: Find brew binary
|
|
command: which brew
|
|
register: brew_which
|
|
- name: Get owner of brew binary
|
|
stat: path="{{ brew_which.stdout }}"
|
|
register: brew_stat
|
|
- name: "Install package"
|
|
homebrew:
|
|
name: xz
|
|
state: present
|
|
update_homebrew: no
|
|
become: yes
|
|
become_user: "{{ brew_stat.stat.pw_name }}"
|
|
when:
|
|
- ansible_python_version.split('.')[0] == '2'
|
|
- ansible_os_family == 'Darwin'
|
|
|
|
- name: Ensure backports.lzma is present to create test archive (pip)
|
|
pip: name=backports.lzma state=latest
|
|
when: ansible_python_version.split('.')[0] == '2'
|
|
register: backports_lzma_pip
|
|
|
|
- name: prep our file
|
|
copy: src={{ item }} dest={{output_dir}}/{{ item }}
|
|
with_items:
|
|
- foo.txt
|
|
- bar.txt
|
|
|
|
- name: archive using gz
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_01.gz"
|
|
format: gz
|
|
register: archive_gz_result_01
|
|
|
|
- debug: msg="{{ archive_gz_result_01 }}"
|
|
|
|
- name: verify that the files archived
|
|
file: path={{output_dir}}/archive_01.gz state=file
|
|
|
|
- name: check if gz file exists
|
|
assert:
|
|
that:
|
|
- "{{ archive_gz_result_01.changed }}"
|
|
- "{{ 'archived' in archive_gz_result_01 }}"
|
|
- "{{ archive_gz_result_01['archived'] | length }} == 2"
|
|
|
|
- name: archive using zip
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_01.zip"
|
|
format: zip
|
|
register: archive_zip_result_01
|
|
|
|
- debug: msg="{{ archive_zip_result_01 }}"
|
|
|
|
- name: verify that the files archived
|
|
file: path={{output_dir}}/archive_01.zip state=file
|
|
|
|
- name: check if zip file exists
|
|
assert:
|
|
that:
|
|
- "{{ archive_zip_result_01.changed }}"
|
|
- "{{ 'archived' in archive_zip_result_01 }}"
|
|
- "{{ archive_zip_result_01['archived'] | length }} == 2"
|
|
|
|
- name: archive using bz2
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_01.bz2"
|
|
format: bz2
|
|
register: archive_bz2_result_01
|
|
|
|
- debug: msg="{{ archive_bz2_result_01 }}"
|
|
|
|
- name: verify that the files archived
|
|
file: path={{output_dir}}/archive_01.bz2 state=file
|
|
|
|
- name: check if bzip file exists
|
|
assert:
|
|
that:
|
|
- "{{ archive_bz2_result_01.changed }}"
|
|
- "{{ 'archived' in archive_bz2_result_01 }}"
|
|
- "{{ archive_bz2_result_01['archived'] | length }} == 2"
|
|
|
|
- name: archive using xz
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_01.xz"
|
|
format: xz
|
|
register: archive_xz_result_01
|
|
|
|
- debug: msg="{{ archive_xz_result_01 }}"
|
|
|
|
- name: verify that the files archived
|
|
file: path={{output_dir}}/archive_01.xz state=file
|
|
|
|
- name: check if xz file exists
|
|
assert:
|
|
that:
|
|
- "{{ archive_xz_result_01.changed }}"
|
|
- "{{ 'archived' in archive_xz_result_01 }}"
|
|
- "{{ archive_xz_result_01['archived'] | length }} == 2"
|
|
|
|
- name: archive and set mode to 0600
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_02.gz"
|
|
format: gz
|
|
mode: "u+rwX,g-rwx,o-rwx"
|
|
register: archive_bz2_result_02
|
|
|
|
- name: Test that the file modes were changed
|
|
stat:
|
|
path: "{{ output_dir }}/archive_02.gz"
|
|
register: archive_02_gz_stat
|
|
|
|
- debug: msg="{{ archive_02_gz_stat}}"
|
|
|
|
- name: Test that the file modes were changed
|
|
assert:
|
|
that:
|
|
- "archive_02_gz_stat.changed == False "
|
|
- "archive_02_gz_stat.stat.mode == '0600'"
|
|
- "'archived' in archive_bz2_result_02"
|
|
- "{{ archive_bz2_result_02['archived']| length}} == 2"
|
|
|
|
- name: remove our gz
|
|
file: path="{{ output_dir }}/archive_02.gz" state=absent
|
|
|
|
|
|
- name: archive and set mode to 0600
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_02.zip"
|
|
format: zip
|
|
mode: "u+rwX,g-rwx,o-rwx"
|
|
register: archive_zip_result_02
|
|
|
|
- name: Test that the file modes were changed
|
|
stat:
|
|
path: "{{ output_dir }}/archive_02.zip"
|
|
register: archive_02_zip_stat
|
|
|
|
- name: Test that the file modes were changed
|
|
assert:
|
|
that:
|
|
- "archive_02_zip_stat.changed == False"
|
|
- "archive_02_zip_stat.stat.mode == '0600'"
|
|
- "'archived' in archive_zip_result_02"
|
|
- "{{ archive_zip_result_02['archived']| length}} == 2"
|
|
|
|
- name: remove our zip
|
|
file: path="{{ output_dir }}/archive_02.zip" state=absent
|
|
|
|
|
|
- name: archive and set mode to 0600
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_02.bz2"
|
|
format: bz2
|
|
mode: "u+rwX,g-rwx,o-rwx"
|
|
register: archive_bz2_result_02
|
|
|
|
- name: Test that the file modes were changed
|
|
stat:
|
|
path: "{{ output_dir }}/archive_02.bz2"
|
|
register: archive_02_bz2_stat
|
|
|
|
- name: Test that the file modes were changed
|
|
assert:
|
|
that:
|
|
- "archive_02_bz2_stat.changed == False"
|
|
- "archive_02_bz2_stat.stat.mode == '0600'"
|
|
- "'archived' in archive_bz2_result_02"
|
|
- "{{ archive_bz2_result_02['archived']| length}} == 2"
|
|
|
|
- name: remove our bz2
|
|
file: path="{{ output_dir }}/archive_02.bz2" state=absent
|
|
|
|
- name: archive and set mode to 0600
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/archive_02.xz"
|
|
format: xz
|
|
mode: "u+rwX,g-rwx,o-rwx"
|
|
register: archive_xz_result_02
|
|
|
|
- name: Test that the file modes were changed
|
|
stat:
|
|
path: "{{ output_dir }}/archive_02.xz"
|
|
register: archive_02_xz_stat
|
|
|
|
- name: Test that the file modes were changed
|
|
assert:
|
|
that:
|
|
- "archive_02_xz_stat.changed == False"
|
|
- "archive_02_xz_stat.stat.mode == '0600'"
|
|
- "'archived' in archive_xz_result_02"
|
|
- "{{ archive_xz_result_02['archived']| length}} == 2"
|
|
|
|
- name: remove our xz
|
|
file: path="{{ output_dir }}/archive_02.xz" state=absent
|
|
|
|
- name: test that gz archive that contains non-ascii filenames
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz"
|
|
format: gz
|
|
register: nonascii_result_0
|
|
|
|
- name: Check that file is really there
|
|
stat:
|
|
path: "{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz"
|
|
register: nonascii_stat0
|
|
|
|
- name: Assert that nonascii tests succeeded
|
|
assert:
|
|
that:
|
|
- "nonascii_result_0.changed == true"
|
|
- "nonascii_stat0.stat.exists == true"
|
|
|
|
- name: remove nonascii test
|
|
file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.tar.gz" state=absent
|
|
|
|
- name: test that bz2 archive that contains non-ascii filenames
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.bz2"
|
|
format: bz2
|
|
register: nonascii_result_1
|
|
|
|
- name: Check that file is really there
|
|
stat:
|
|
path: "{{ output_dir }}/test-archive-nonascii-くらとみ.bz2"
|
|
register: nonascii_stat_1
|
|
|
|
- name: Assert that nonascii tests succeeded
|
|
assert:
|
|
that:
|
|
- "nonascii_result_1.changed == true"
|
|
- "nonascii_stat_1.stat.exists == true"
|
|
|
|
- name: remove nonascii test
|
|
file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.bz2" state=absent
|
|
|
|
- name: test that xz archive that contains non-ascii filenames
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.xz"
|
|
format: xz
|
|
register: nonascii_result_1
|
|
|
|
- name: Check that file is really there
|
|
stat:
|
|
path: "{{ output_dir }}/test-archive-nonascii-くらとみ.xz"
|
|
register: nonascii_stat_1
|
|
|
|
- name: Assert that nonascii tests succeeded
|
|
assert:
|
|
that:
|
|
- "nonascii_result_1.changed == true"
|
|
- "nonascii_stat_1.stat.exists == true"
|
|
|
|
- name: remove nonascii test
|
|
file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.xz" state=absent
|
|
|
|
- name: test that zip archive that contains non-ascii filenames
|
|
archive:
|
|
path: "{{ output_dir }}/*.txt"
|
|
dest: "{{ output_dir }}/test-archive-nonascii-くらとみ.zip"
|
|
format: zip
|
|
register: nonascii_result_2
|
|
|
|
- name: Check that file is really there
|
|
stat:
|
|
path: "{{ output_dir }}/test-archive-nonascii-くらとみ.zip"
|
|
register: nonascii_stat_2
|
|
|
|
- name: Assert that nonascii tests succeeded
|
|
assert:
|
|
that:
|
|
- "nonascii_result_2.changed == true"
|
|
- "nonascii_stat_2.stat.exists == true"
|
|
|
|
- name: remove nonascii test
|
|
file: path="{{ output_dir }}/test-archive-nonascii-くらとみ.zip" state=absent
|
|
|
|
- name: Remove backports.lzma if previously installed (pip)
|
|
pip: name=backports.lzma state=absent
|
|
when: backports_lzma_pip is changed
|