mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
Migrate Linux CI roles to test targets. (#17997)
This commit is contained in:
parent
374e4348e4
commit
75e4645ee7
263 changed files with 53 additions and 53 deletions
1
test/integration/targets/unarchive/files/foo.txt
Normal file
1
test/integration/targets/unarchive/files/foo.txt
Normal file
|
@ -0,0 +1 @@
|
|||
foo.txt
|
Binary file not shown.
3
test/integration/targets/unarchive/meta/main.yml
Normal file
3
test/integration/targets/unarchive/meta/main.yml
Normal file
|
@ -0,0 +1,3 @@
|
|||
dependencies:
|
||||
- prepare_tests
|
||||
|
427
test/integration/targets/unarchive/tasks/main.yml
Normal file
427
test/integration/targets/unarchive/tasks/main.yml
Normal file
|
@ -0,0 +1,427 @@
|
|||
# Test code for the unarchive module.
|
||||
# (c) 2014, Richard Isaacson <richard.c.isaacson@gmail.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 (dnf)
|
||||
# dnf: name=zip state=latest
|
||||
# when: ansible_pkg_mgr == 'dnf'
|
||||
|
||||
- name: Ensure zip is present to create test archive (apt)
|
||||
apt: name=zip state=latest
|
||||
when: ansible_pkg_mgr == 'apt'
|
||||
|
||||
- name: prep our file
|
||||
copy: src=foo.txt dest={{output_dir}}/foo-unarchive.txt
|
||||
|
||||
- name: prep a tar file
|
||||
shell: tar cvf test-unarchive.tar foo-unarchive.txt chdir={{output_dir}}
|
||||
|
||||
- name: prep a tar.gz file
|
||||
shell: tar czvf test-unarchive.tar.gz foo-unarchive.txt chdir={{output_dir}}
|
||||
|
||||
- name: prep a zip file
|
||||
shell: zip test-unarchive.zip foo-unarchive.txt chdir={{output_dir}}
|
||||
|
||||
- name: prep a subdirectory
|
||||
file: path={{output_dir}}/unarchive-dir state=directory
|
||||
|
||||
- name: prep our file
|
||||
copy: src=foo.txt dest={{output_dir}}/unarchive-dir/foo-unarchive.txt
|
||||
|
||||
- name: prep a tar.gz file with directory
|
||||
shell: tar czvf test-unarchive-dir.tar.gz unarchive-dir chdir={{output_dir}}
|
||||
|
||||
- name: create our tar unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar state=directory
|
||||
|
||||
- name: unarchive a tar file
|
||||
unarchive: src={{output_dir}}/test-unarchive.tar dest="{{output_dir | expanduser}}/test-unarchive-tar" remote_src=yes
|
||||
register: unarchive01
|
||||
|
||||
- name: verify that the file was marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive01.changed == true"
|
||||
|
||||
- name: verify that the file was unarchived
|
||||
file: path={{output_dir}}/test-unarchive-tar/foo-unarchive.txt state=file
|
||||
|
||||
- name: remove our tar unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar state=absent
|
||||
|
||||
- name: create our tar.gz unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
- name: unarchive a tar.gz file
|
||||
unarchive: src={{output_dir}}/test-unarchive.tar.gz dest={{output_dir | expanduser}}/test-unarchive-tar-gz remote_src=yes
|
||||
register: unarchive02
|
||||
|
||||
- name: verify that the file was marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive02.changed == true"
|
||||
# Verify that no file list is generated
|
||||
- "'files' not in unarchive02"
|
||||
|
||||
- name: verify that the file was unarchived
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz/foo-unarchive.txt state=file
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=absent
|
||||
|
||||
- name: create our tar.gz unarchive destination for creates
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
- name: unarchive a tar.gz file with creates set
|
||||
unarchive: src={{output_dir}}/test-unarchive.tar.gz dest={{output_dir | expanduser}}/test-unarchive-tar-gz remote_src=yes creates={{output_dir}}/test-unarchive-tar-gz/foo-unarchive.txt
|
||||
register: unarchive02b
|
||||
|
||||
- name: verify that the file was marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive02b.changed == true"
|
||||
|
||||
- name: verify that the file was unarchived
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz/foo-unarchive.txt state=file
|
||||
|
||||
- name: unarchive a tar.gz file with creates over an existing file
|
||||
unarchive: src={{output_dir}}/test-unarchive.tar.gz dest={{output_dir | expanduser}}/test-unarchive-tar-gz remote_src=yes creates={{output_dir}}/test-unarchive-tar-gz/foo-unarchive.txt
|
||||
register: unarchive02c
|
||||
|
||||
- name: verify that the file was not marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive02c.changed == false"
|
||||
|
||||
- name: unarchive a tar.gz file with creates over an existing file using complex_args
|
||||
unarchive:
|
||||
src: "{{output_dir}}/test-unarchive.tar.gz"
|
||||
dest: "{{output_dir | expanduser}}/test-unarchive-tar-gz"
|
||||
remote_src: yes
|
||||
creates: "{{output_dir}}/test-unarchive-tar-gz/foo-unarchive.txt"
|
||||
register: unarchive02d
|
||||
|
||||
- name: verify that the file was not marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive02d.changed == false"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=absent
|
||||
|
||||
- name: create our zip unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-zip state=directory
|
||||
|
||||
- name: unarchive a zip file
|
||||
unarchive: src={{output_dir}}/test-unarchive.zip dest={{output_dir | expanduser}}/test-unarchive-zip remote_src=yes list_files=True
|
||||
register: unarchive03
|
||||
|
||||
- name: verify that the file was marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive03.changed == true"
|
||||
# Verify that file list is generated
|
||||
- "'files' in unarchive03"
|
||||
- "{{unarchive03['files']| length}} == 1"
|
||||
- "'foo-unarchive.txt' in unarchive03['files']"
|
||||
|
||||
- name: verify that the file was unarchived
|
||||
file: path={{output_dir}}/test-unarchive-zip/foo-unarchive.txt state=file
|
||||
|
||||
- name: remove our zip unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-zip state=absent
|
||||
|
||||
- name: remove our test file for the archive
|
||||
file: path={{output_dir}}/foo-unarchive.txt state=absent
|
||||
|
||||
- name: check if /tmp/foo-unarchive.text exists
|
||||
stat: path=/tmp/foo-unarchive.txt
|
||||
ignore_errors: True
|
||||
register: unarchive04
|
||||
|
||||
- name: fail if the proposed destination file exists for safey
|
||||
fail: msg="/tmp/foo-unarchive.txt already exists, aborting"
|
||||
when: unarchive04.stat.exists
|
||||
|
||||
- name: try unarchiving to /tmp
|
||||
unarchive: src={{output_dir}}/test-unarchive.tar.gz dest=/tmp remote_src=yes
|
||||
register: unarchive05
|
||||
|
||||
- name: verify that the file was marked as changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive05.changed == true"
|
||||
|
||||
- name: verify that the file was unarchived
|
||||
file: path=/tmp/foo-unarchive.txt state=file
|
||||
|
||||
- name: remove our unarchive destination
|
||||
file: path=/tmp/foo-unarchive.txt state=absent
|
||||
|
||||
- name: create our unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
- name: unarchive and set mode to 0600
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/test-unarchive-tar-gz"
|
||||
remote_src: yes
|
||||
mode: "u+rwX,g-rwx,o-rwx"
|
||||
list_files: True
|
||||
register: unarchive06
|
||||
|
||||
- name: Test that the file modes were changed
|
||||
stat:
|
||||
path: "{{ output_dir | expanduser }}/test-unarchive-tar-gz/foo-unarchive.txt"
|
||||
register: unarchive06_stat
|
||||
|
||||
- name: Test that the file modes were changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive06.changed == true"
|
||||
- "unarchive06_stat.stat.mode == '0600'"
|
||||
# Verify that file list is generated
|
||||
- "'files' in unarchive06"
|
||||
- "{{unarchive06['files']| length}} == 1"
|
||||
- "'foo-unarchive.txt' in unarchive06['files']"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{ output_dir }}/test-unarchive-tar-gz state=absent
|
||||
|
||||
- name: create our unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
|
||||
- name: unarchive over existing extraction and set mode to 0644
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/test-unarchive-tar-gz"
|
||||
remote_src: yes
|
||||
mode: "u+rwX,g-wx,o-wx,g+r,o+r"
|
||||
register: unarchive06_2
|
||||
|
||||
- name: Test that the file modes were changed
|
||||
stat:
|
||||
path: "{{ output_dir | expanduser }}/test-unarchive-tar-gz/foo-unarchive.txt"
|
||||
register: unarchive06_2_stat
|
||||
|
||||
- debug: var=unarchive06_2_stat.stat.mode
|
||||
- name: Test that the files were changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive06_2.changed == true"
|
||||
- "unarchive06_2_stat.stat.mode == '0644'"
|
||||
|
||||
- name: Repeat the last request to verify no changes
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/test-unarchive-tar-gz"
|
||||
remote_src: yes
|
||||
mode: "u+rwX,g-wx,o-wx,g+r,o+r"
|
||||
list_files: True
|
||||
register: unarchive07
|
||||
|
||||
- name: Test that the files were not changed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive07.changed == false"
|
||||
# Verify that file list is generated
|
||||
- "'files' in unarchive07"
|
||||
- "{{unarchive07['files']| length}} == 1"
|
||||
- "'foo-unarchive.txt' in unarchive07['files']"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{ output_dir }}/test-unarchive-tar-gz state=absent
|
||||
|
||||
|
||||
- name: create our unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
|
||||
- name: create a directory with quotable chars
|
||||
file: path="{{ output_dir }}/test-quotes~root" state=directory
|
||||
|
||||
- name: unarchive into directory with quotable chars
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/test-quotes~root"
|
||||
remote_src: yes
|
||||
register: unarchive08
|
||||
|
||||
- name: Test that unarchive succeeded
|
||||
assert:
|
||||
that:
|
||||
- "unarchive08.changed == true"
|
||||
|
||||
- name: unarchive into directory with quotable chars a second time
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/test-quotes~root"
|
||||
remote_src: yes
|
||||
register: unarchive09
|
||||
|
||||
- name: Test that unarchive did nothing
|
||||
assert:
|
||||
that:
|
||||
- "unarchive09.changed == false"
|
||||
|
||||
- name: remove quotable chars test
|
||||
file: path="{{ output_dir }}/test-quotes~root" state=absent
|
||||
|
||||
- name: create our unarchive destination
|
||||
file:
|
||||
path: "{{ output_dir }}/test-unarchive-nonascii-くらとみ-tar-gz"
|
||||
state: directory
|
||||
|
||||
- name: test that unarchive works with an archive that contains non-ascii filenames
|
||||
unarchive:
|
||||
# Both the filename of the tarball and the filename inside the tarball have
|
||||
# nonascii chars
|
||||
src: "test-unarchive-nonascii-くらとみ.tar.gz"
|
||||
dest: "{{ output_dir }}/test-unarchive-nonascii-くらとみ-tar-gz"
|
||||
mode: "u+rwX,go+rX"
|
||||
remote_src: no
|
||||
register: nonascii_result0
|
||||
|
||||
- name: Check that file is really there
|
||||
stat:
|
||||
path: "{{ output_dir | expanduser }}/test-unarchive-nonascii-くらとみ-tar-gz/storage/àâæçéèïîôœ(copy)!@#$%^&-().jpg"
|
||||
register: nonascii_stat0
|
||||
|
||||
- name: Assert that nonascii tests succeeded
|
||||
assert:
|
||||
that:
|
||||
- "nonascii_result0.changed == true"
|
||||
- "nonascii_stat0.stat.exists == true"
|
||||
|
||||
- name: remove nonascii test
|
||||
file: path="{{ output_dir }}/test-unarchive-nonascii-くらとみ-tar-gz" state=absent
|
||||
|
||||
# Test that unarchiving is performed if files are missing
|
||||
# https://github.com/ansible/ansible-modules-core/issues/1064
|
||||
- name: create our unarchive destination
|
||||
file: path={{output_dir}}/test-unarchive-tar-gz state=directory
|
||||
|
||||
- name: unarchive a tar that has directories
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive-dir.tar.gz"
|
||||
dest: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
mode: "0700"
|
||||
remote_src: yes
|
||||
register: unarchive10
|
||||
|
||||
- name: Test that unarchive succeeded
|
||||
assert:
|
||||
that:
|
||||
- "unarchive10.changed == true"
|
||||
|
||||
- name: Change the mode of the toplevel dir
|
||||
file:
|
||||
path: "{{ output_dir }}/test-unarchive-tar-gz/unarchive-dir"
|
||||
mode: 0701
|
||||
|
||||
- name: Remove a file from the extraction point
|
||||
file:
|
||||
path: "{{ output_dir }}/test-unarchive-tar-gz/unarchive-dir/foo-unarchive.txt"
|
||||
state: absent
|
||||
|
||||
- name: unarchive a tar that has directories
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive-dir.tar.gz"
|
||||
dest: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
mode: "0700"
|
||||
remote_src: yes
|
||||
register: unarchive10_1
|
||||
|
||||
- name: Test that unarchive succeeded
|
||||
assert:
|
||||
that:
|
||||
- "unarchive10_1.changed == true"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{ output_dir }}/test-unarchive-tar-gz state=absent
|
||||
|
||||
#
|
||||
# Symlink tests
|
||||
#
|
||||
|
||||
- name: Create a destination dir
|
||||
file:
|
||||
path: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
state: directory
|
||||
|
||||
- name: Create a symlink to the detination dir
|
||||
file:
|
||||
path: "{{ output_dir }}/link-to-unarchive-dir"
|
||||
src: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
state: "link"
|
||||
|
||||
- name: test that unarchive works when dest is a symlink to a dir
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/link-to-unarchive-dir"
|
||||
mode: "u+rwX,go+rX"
|
||||
remote_src: yes
|
||||
register: unarchive_11
|
||||
|
||||
- name: Check that file is really there
|
||||
stat:
|
||||
path: "{{ output_dir | expanduser }}/test-unarchive-tar-gz/foo-unarchive.txt"
|
||||
register: unarchive11_stat0
|
||||
|
||||
- name: Assert that unarchive when dest is a symlink to a dir worked
|
||||
assert:
|
||||
that:
|
||||
- "unarchive_11.changed == true"
|
||||
- "unarchive11_stat0.stat.exists == true"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{ output_dir }}/test-unarchive-tar-gz state=absent
|
||||
|
||||
|
||||
- name: Create a file
|
||||
file:
|
||||
path: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
state: touch
|
||||
|
||||
- name: Create a symlink to the file
|
||||
file:
|
||||
path: "{{ output_dir }}/link-to-unarchive-file"
|
||||
src: "{{ output_dir }}/test-unarchive-tar-gz"
|
||||
state: "link"
|
||||
|
||||
- name: test that unarchive fails when dest is a link to a file
|
||||
unarchive:
|
||||
src: "{{ output_dir }}/test-unarchive.tar.gz"
|
||||
dest: "{{ output_dir | expanduser }}/link-to-unarchive-file"
|
||||
mode: "u+rwX,go+rX"
|
||||
remote_src: yes
|
||||
ignore_errors: True
|
||||
register: unarchive_12
|
||||
|
||||
- name: Assert that unarchive when dest is a file failed
|
||||
assert:
|
||||
that:
|
||||
- "unarchive_12.failed == true"
|
||||
|
||||
- name: remove our tar.gz unarchive destination
|
||||
file: path={{ output_dir }}/test-unarchive-tar-gz state=absent
|
Loading…
Add table
Add a link
Reference in a new issue