mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-24 05:40:23 -07:00
new module: filesize - create or resize a file, given its size (#2232)
* new module: filesize * description: create or resize a file, given its size * with integration tests * Update plugins/modules/files/filesize.py (version_added) Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru> * Update filesize.py (extends_documentation_fragment: use fqcn) Co-authored-by: Amin Vakil <info@aminvakil.com> * doc: use strict lowercase booleans (true/false) rather than other variants * use *raw* type to manage size values * drop 'miB' unit family * Apply suggestions from code review Co-authored-by: Felix Fontein <felix@fontein.de> * add more details Co-authored-by: Andrew Klychkov <aaklychkov@mail.ru> Co-authored-by: Amin Vakil <info@aminvakil.com> Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
parent
91a0264f38
commit
f87a39b21d
10 changed files with 1685 additions and 0 deletions
1
tests/integration/targets/filesize/aliases
Normal file
1
tests/integration/targets/filesize/aliases
Normal file
|
@ -0,0 +1 @@
|
|||
shippable/posix/group1
|
4
tests/integration/targets/filesize/defaults/main.yml
Normal file
4
tests/integration/targets/filesize/defaults/main.yml
Normal file
|
@ -0,0 +1,4 @@
|
|||
---
|
||||
filesize_testdir: "/tmp/testdir"
|
||||
filesize_testfile: "{{ filesize_testdir }}/testfile"
|
||||
filesize_testlink: "{{ filesize_testdir }}/testlink"
|
407
tests/integration/targets/filesize/tasks/basics.yml
Normal file
407
tests/integration/targets/filesize/tasks/basics.yml
Normal file
|
@ -0,0 +1,407 @@
|
|||
---
|
||||
# Test module with basic parameters.
|
||||
# Create a file, grow it, reduce it to its initial size and check the match
|
||||
# between initial and final checksums. Also check size formats consistency
|
||||
# (as 57001B == 57001 B == 57.001 kB, for example, or 0 block or 0 unit is
|
||||
# zero, etc).
|
||||
|
||||
- name: Create an empty file (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0
|
||||
register: filesize_test_basic_01
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file (should not exist)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_01
|
||||
|
||||
|
||||
- name: Create an empty file
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0
|
||||
register: filesize_test_basic_02
|
||||
|
||||
- name: Stat the file (should exist now)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_02
|
||||
|
||||
|
||||
- name: Create an empty file (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0G
|
||||
register: filesize_test_basic_03
|
||||
check_mode: yes
|
||||
|
||||
- name: Create an empty file (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0G
|
||||
register: filesize_test_basic_04
|
||||
|
||||
- name: Stat the file (should still exist, unchanged)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_04
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
# check_mode & idempotency are in good shape.
|
||||
- filesize_test_basic_01 is changed
|
||||
- filesize_test_basic_02 is changed
|
||||
- filesize_test_basic_03 is not changed
|
||||
- filesize_test_basic_04 is not changed
|
||||
|
||||
# check_mode returns the same command than actual mode.
|
||||
- filesize_test_basic_02.cmd == filesize_test_basic_01.cmd
|
||||
- filesize_test_basic_03.cmd is undefined
|
||||
- filesize_test_basic_04.cmd is undefined
|
||||
|
||||
# Module's specific return results are consistent with user input, that
|
||||
# means: with *expected* results.
|
||||
- filesize_test_basic_01.filesize.bytes == 0
|
||||
- filesize_test_basic_02.filesize.bytes == 0
|
||||
- filesize_test_basic_03.filesize.bytes == 0
|
||||
- filesize_test_basic_04.filesize.bytes == 0
|
||||
|
||||
- filesize_test_basic_01.size_diff == 0
|
||||
- filesize_test_basic_02.size_diff == 0
|
||||
- filesize_test_basic_03.size_diff == 0
|
||||
- filesize_test_basic_04.size_diff == 0
|
||||
|
||||
# Results populated by module.set_fs_attributes_if_different() are still
|
||||
# consistent with current state of the file.
|
||||
- filesize_test_basic_01.state is undefined
|
||||
- filesize_test_basic_02.state in ["file"]
|
||||
- filesize_test_basic_01.size is undefined
|
||||
- filesize_test_basic_02.size == 0
|
||||
- filesize_test_basic_03.size == 0
|
||||
- filesize_test_basic_04.size == 0
|
||||
|
||||
# Cross results with those retrieved by another module.
|
||||
- not filesize_stat_basic_01.stat.exists
|
||||
- filesize_stat_basic_02.stat.exists
|
||||
- filesize_stat_basic_02.stat.isreg
|
||||
- filesize_stat_basic_02.stat.size == 0
|
||||
- filesize_stat_basic_04.stat.size == 0
|
||||
|
||||
|
||||
- name: Fill the file up to 57kB (57000B) with random data (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57kB
|
||||
source: /dev/urandom
|
||||
register: filesize_test_basic_11
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file (should still be unchanged)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_11
|
||||
|
||||
|
||||
- name: Fill the file up to 57kB (57000B) with random data
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57kB
|
||||
source: /dev/urandom
|
||||
register: filesize_test_basic_12
|
||||
|
||||
- name: Stat the resulting file (and get its checksum)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_12
|
||||
|
||||
- name: Store checksum as fact
|
||||
ansible.builtin.set_fact:
|
||||
filesize_test_checksum: "{{ filesize_stat_basic_12.stat.checksum }}"
|
||||
|
||||
|
||||
- name: Fill the file up to 57000B (57kB) with random data (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57000B
|
||||
source: /dev/urandom
|
||||
register: filesize_test_basic_13
|
||||
check_mode: yes
|
||||
|
||||
- name: Fill the file up to 57000B (57kB) with random data (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57000B
|
||||
source: /dev/urandom
|
||||
register: filesize_test_basic_14
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_14
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_basic_11 is changed
|
||||
- filesize_test_basic_12 is changed
|
||||
- filesize_test_basic_13 is not changed
|
||||
- filesize_test_basic_14 is not changed
|
||||
|
||||
- filesize_test_basic_12.cmd == filesize_test_basic_11.cmd
|
||||
- filesize_test_basic_13.cmd is undefined
|
||||
- filesize_test_basic_14.cmd is undefined
|
||||
|
||||
- filesize_test_basic_11.filesize.bytes == 57000
|
||||
- filesize_test_basic_12.filesize.bytes == 57000
|
||||
- filesize_test_basic_13.filesize.bytes == 57000
|
||||
- filesize_test_basic_14.filesize.bytes == 57000
|
||||
|
||||
- filesize_test_basic_11.size_diff == 57000
|
||||
- filesize_test_basic_12.size_diff == 57000
|
||||
- filesize_test_basic_13.size_diff == 0
|
||||
- filesize_test_basic_14.size_diff == 0
|
||||
|
||||
- filesize_stat_basic_11.stat.size == 0
|
||||
- filesize_stat_basic_12.stat.size == 57000
|
||||
- filesize_stat_basic_14.stat.size == 57000
|
||||
|
||||
- filesize_stat_basic_14.stat.checksum == filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Expand the file with 1 byte (57001B) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57001B
|
||||
register: filesize_test_basic_21
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_21
|
||||
|
||||
|
||||
- name: Expand the file with 1 byte (57001B)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57001B
|
||||
register: filesize_test_basic_22
|
||||
|
||||
- name: Stat the file (should have grown of 1 byte)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_22
|
||||
|
||||
|
||||
- name: Expand the file with 1 byte (57.001 kB) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57.001 kB
|
||||
register: filesize_test_basic_23
|
||||
check_mode: yes
|
||||
|
||||
- name: Expand the file with 1 byte (57.001 kB) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57.001 kB
|
||||
register: filesize_test_basic_24
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_24
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_basic_21 is changed
|
||||
- filesize_test_basic_22 is changed
|
||||
- filesize_test_basic_23 is not changed
|
||||
- filesize_test_basic_24 is not changed
|
||||
|
||||
- filesize_test_basic_22.cmd == filesize_test_basic_21.cmd
|
||||
- filesize_test_basic_23.cmd is undefined
|
||||
- filesize_test_basic_24.cmd is undefined
|
||||
|
||||
- filesize_test_basic_21.filesize.bytes == 57001
|
||||
- filesize_test_basic_22.filesize.bytes == 57001
|
||||
- filesize_test_basic_23.filesize.bytes == 57001
|
||||
- filesize_test_basic_24.filesize.bytes == 57001
|
||||
|
||||
- filesize_test_basic_21.size_diff == 1
|
||||
- filesize_test_basic_22.size_diff == 1
|
||||
- filesize_test_basic_23.size_diff == 0
|
||||
- filesize_test_basic_24.size_diff == 0
|
||||
|
||||
- filesize_stat_basic_21.stat.size == 57000
|
||||
- filesize_stat_basic_22.stat.size == 57001
|
||||
- filesize_stat_basic_24.stat.size == 57001
|
||||
|
||||
- filesize_stat_basic_21.stat.checksum == filesize_test_checksum
|
||||
- filesize_stat_basic_22.stat.checksum != filesize_test_checksum
|
||||
- filesize_stat_basic_24.stat.checksum != filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Expand the file up to 2 MiB (2*1024*1024 bytes) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 2 MiB
|
||||
register: filesize_test_basic_31
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_31
|
||||
|
||||
|
||||
- name: Expand the file up to 2 MiB (2*1024*1024 bytes)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 2 MiB
|
||||
register: filesize_test_basic_32
|
||||
|
||||
- name: Stat the file again (should have grown to 2MiB)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_32
|
||||
|
||||
|
||||
- name: Expand the file up to 2×1M (2*1024*1024 bytes) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 2
|
||||
blocksize: 1M
|
||||
register: filesize_test_basic_33
|
||||
check_mode: yes
|
||||
|
||||
- name: Expand the file up to 2×1M (2*1024*1024 bytes) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 2
|
||||
blocksize: 1M
|
||||
register: filesize_test_basic_34
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_34
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_basic_31 is changed
|
||||
- filesize_test_basic_32 is changed
|
||||
- filesize_test_basic_33 is not changed
|
||||
- filesize_test_basic_34 is not changed
|
||||
|
||||
- filesize_test_basic_32.cmd == filesize_test_basic_31.cmd
|
||||
- filesize_test_basic_33.cmd is undefined
|
||||
- filesize_test_basic_34.cmd is undefined
|
||||
|
||||
- filesize_test_basic_31.filesize.bytes == 2*1024**2
|
||||
- filesize_test_basic_32.filesize.bytes == 2*1024**2
|
||||
- filesize_test_basic_33.filesize.bytes == 2*1024**2
|
||||
- filesize_test_basic_34.filesize.bytes == 2*1024**2
|
||||
|
||||
- filesize_test_basic_31.size_diff == 2*1024**2 - 57001
|
||||
- filesize_test_basic_32.size_diff == 2*1024**2 - 57001
|
||||
- filesize_test_basic_33.size_diff == 0
|
||||
- filesize_test_basic_34.size_diff == 0
|
||||
|
||||
- filesize_stat_basic_31.stat.size == 57001
|
||||
- filesize_stat_basic_32.stat.size == 2*1024**2
|
||||
- filesize_stat_basic_34.stat.size == 2*1024**2
|
||||
|
||||
|
||||
|
||||
- name: Truncate the file to 57kB (57000B) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57kB
|
||||
register: filesize_test_basic_41
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the resulting file (should be unchanged)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_41
|
||||
|
||||
|
||||
- name: Truncate the file to 57kB (57000B)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57kB
|
||||
register: filesize_test_basic_42
|
||||
|
||||
- name: Stat the resulting file (and get its checksum)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_42
|
||||
|
||||
|
||||
- name: Truncate the file to 57000 B (57kB) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57000 B
|
||||
register: filesize_test_basic_43
|
||||
check_mode: yes
|
||||
|
||||
- name: Truncate the file to 57000 B (57kB) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 57000 B
|
||||
register: filesize_test_basic_44
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_basic_44
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_basic_41 is changed
|
||||
- filesize_test_basic_42 is changed
|
||||
- filesize_test_basic_43 is not changed
|
||||
- filesize_test_basic_44 is not changed
|
||||
|
||||
- filesize_test_basic_42.cmd == filesize_test_basic_41.cmd
|
||||
- filesize_test_basic_43.cmd is undefined
|
||||
- filesize_test_basic_44.cmd is undefined
|
||||
|
||||
- filesize_test_basic_41.filesize.bytes == 57000
|
||||
- filesize_test_basic_42.filesize.bytes == 57000
|
||||
- filesize_test_basic_43.filesize.bytes == 57000
|
||||
- filesize_test_basic_44.filesize.bytes == 57000
|
||||
|
||||
- filesize_test_basic_41.size_diff == 57000 - 2*1024**2
|
||||
- filesize_test_basic_42.size_diff == 57000 - 2*1024**2
|
||||
- filesize_test_basic_43.size_diff == 0
|
||||
- filesize_test_basic_44.size_diff == 0
|
||||
|
||||
- filesize_stat_basic_41.stat.size == 2*1024**2
|
||||
- filesize_stat_basic_42.stat.size == 57000
|
||||
- filesize_stat_basic_44.stat.size == 57000
|
||||
|
||||
# The original random file is back.
|
||||
- filesize_stat_basic_41.stat.checksum != filesize_test_checksum
|
||||
- filesize_stat_basic_42.stat.checksum == filesize_test_checksum
|
||||
- filesize_stat_basic_44.stat.checksum == filesize_test_checksum
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
129
tests/integration/targets/filesize/tasks/errors.yml
Normal file
129
tests/integration/targets/filesize/tasks/errors.yml
Normal file
|
@ -0,0 +1,129 @@
|
|||
---
|
||||
# Check error handling of the module.
|
||||
# 1. Missing or unknown parameters
|
||||
# 2. Wrong values (missing source device, invalid size...)
|
||||
|
||||
- name: Trigger an error due to missing parameter (path)
|
||||
community.general.filesize:
|
||||
size: 1kB
|
||||
register: filesize_test_error_01
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to missing parameter (size)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_test_error_02
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to conflicting parameters (force|sparse)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1MB
|
||||
force: yes
|
||||
sparse: yes
|
||||
register: filesize_test_error_03
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid file path (not a file)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testdir }}"
|
||||
size: 4096B
|
||||
register: filesize_test_error_04
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid file path (unexisting parent dir)
|
||||
community.general.filesize:
|
||||
path: "/unexistent/{{ filesize_testfile }}"
|
||||
size: 4096B
|
||||
register: filesize_test_error_05
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid size unit (b)"
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4096b
|
||||
register: filesize_test_error_06
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid size value (bytes require integer)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1000.5B
|
||||
register: filesize_test_error_07
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid blocksize value (not an integer)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1M
|
||||
blocksize: "12.5"
|
||||
register: filesize_test_error_08
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid blocksize value type (dict)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1M
|
||||
blocksize:
|
||||
bytes: 512
|
||||
register: filesize_test_error_09
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid source device (/dev/unexistent)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1M
|
||||
source: /dev/unexistent
|
||||
register: filesize_test_error_10
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Trigger an error due to invalid source device (/dev/null)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 1M
|
||||
source: /dev/null
|
||||
register: filesize_test_error_11
|
||||
ignore_errors: yes
|
||||
|
||||
|
||||
- name: Assert that expected errors have been triggered
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- "filesize_test_error_01 is failed"
|
||||
- "filesize_test_error_01.msg == 'missing required arguments: path'"
|
||||
- "filesize_test_error_02 is failed"
|
||||
- "filesize_test_error_02.msg == 'missing required arguments: size'"
|
||||
- "filesize_test_error_03 is failed"
|
||||
- "filesize_test_error_03.msg == 'parameters values are mutually exclusive: force=true|sparse=true'"
|
||||
- "filesize_test_error_04 is failed"
|
||||
- "filesize_test_error_04.msg == '%s exists but is not a regular file' % filesize_testdir"
|
||||
- "filesize_test_error_05 is failed"
|
||||
- "filesize_test_error_05.msg == 'parent directory of the file must exist prior to run this module'"
|
||||
- "filesize_test_error_06 is failed"
|
||||
- "filesize_test_error_06.msg is match('invalid size unit')"
|
||||
- "filesize_test_error_07 is failed"
|
||||
- "filesize_test_error_07.msg == 'byte is the smallest unit and requires an integer value'"
|
||||
- "filesize_test_error_08 is failed"
|
||||
- "filesize_test_error_08.msg == 'invalid blocksize value: bytes require an integer value'"
|
||||
- "filesize_test_error_09 is failed"
|
||||
- "filesize_test_error_09.msg is match('invalid value type')"
|
||||
- "filesize_test_error_10 is failed"
|
||||
- "filesize_test_error_10.msg == 'dd error while creating file %s with size 1M from source /dev/unexistent: see stderr for details' % filesize_testfile"
|
||||
- "filesize_test_error_11 is failed"
|
||||
- "filesize_test_error_11.msg == 'module error while creating file %s with size 1M from source /dev/null: file is 0 bytes long' % filesize_testfile"
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
245
tests/integration/targets/filesize/tasks/floats.yml
Normal file
245
tests/integration/targets/filesize/tasks/floats.yml
Normal file
|
@ -0,0 +1,245 @@
|
|||
---
|
||||
# Test module with floating point numbers (ensure they're not rounded too
|
||||
# wrongly), since in python floats are tricky:
|
||||
# 256.256 * 1000 == 256255.9999999997
|
||||
# 512.512 * 1000 == 512511.9999999994
|
||||
# 512.513 * 1000 == 512513.0000000006 != .512513 * 1000000
|
||||
|
||||
- name: Create a file with a size of 512.512kB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 512.512kB
|
||||
register: filesize_test_float_01
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file (should not exist)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_01
|
||||
|
||||
|
||||
- name: Create a file with a size of 512.512kB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 512.512kB
|
||||
register: filesize_test_float_02
|
||||
|
||||
- name: Stat the file (should exist now)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_02
|
||||
|
||||
|
||||
- name: Create a file with a size of 0.512512MB (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0.512512MB
|
||||
register: filesize_test_float_03
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a file with a size of 0.512512MB (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0.512512MB
|
||||
register: filesize_test_float_04
|
||||
|
||||
- name: Stat the file (should still exist, unchanged)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_04
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_float_01 is changed
|
||||
- filesize_test_float_02 is changed
|
||||
- filesize_test_float_03 is not changed
|
||||
- filesize_test_float_04 is not changed
|
||||
|
||||
- filesize_test_float_02.cmd == filesize_test_float_01.cmd
|
||||
- filesize_test_float_03.cmd is undefined
|
||||
- filesize_test_float_04.cmd is undefined
|
||||
|
||||
- filesize_test_float_01.filesize.bytes == 512512
|
||||
- filesize_test_float_02.filesize.bytes == 512512
|
||||
- filesize_test_float_03.filesize.bytes == 512512
|
||||
- filesize_test_float_04.filesize.bytes == 512512
|
||||
|
||||
- filesize_test_float_01.size_diff == 512512
|
||||
- filesize_test_float_02.size_diff == 512512
|
||||
- filesize_test_float_03.size_diff == 0
|
||||
- filesize_test_float_04.size_diff == 0
|
||||
|
||||
- filesize_test_float_01.state is undefined
|
||||
- filesize_test_float_02.state in ["file"]
|
||||
- filesize_test_float_01.size is undefined
|
||||
- filesize_test_float_02.size == 512512
|
||||
- filesize_test_float_03.size == 512512
|
||||
- filesize_test_float_04.size == 512512
|
||||
|
||||
- not filesize_stat_float_01.stat.exists
|
||||
- filesize_stat_float_02.stat.exists
|
||||
- filesize_stat_float_02.stat.isreg
|
||||
- filesize_stat_float_02.stat.size == 512512
|
||||
- filesize_stat_float_04.stat.size == 512512
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 512.513kB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 512.513kB
|
||||
register: filesize_test_float_11
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_11
|
||||
|
||||
|
||||
- name: Create a file with a size of 512.513kB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 512.513kB
|
||||
register: filesize_test_float_12
|
||||
|
||||
- name: Stat the file (should have grown of 1 byte)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_12
|
||||
|
||||
|
||||
- name: Create a file with a size of 0.512513MB (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0.512513MB
|
||||
register: filesize_test_float_13
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a file with a size of 0.512513MB (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 0.512513MB
|
||||
register: filesize_test_float_14
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_14
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_float_11 is changed
|
||||
- filesize_test_float_12 is changed
|
||||
- filesize_test_float_13 is not changed
|
||||
- filesize_test_float_14 is not changed
|
||||
|
||||
- filesize_test_float_12.cmd == filesize_test_float_11.cmd
|
||||
- filesize_test_float_13.cmd is undefined
|
||||
- filesize_test_float_14.cmd is undefined
|
||||
|
||||
- filesize_test_float_11.filesize.bytes == 512513
|
||||
- filesize_test_float_12.filesize.bytes == 512513
|
||||
- filesize_test_float_13.filesize.bytes == 512513
|
||||
- filesize_test_float_14.filesize.bytes == 512513
|
||||
|
||||
- filesize_test_float_11.size_diff == 1
|
||||
- filesize_test_float_12.size_diff == 1
|
||||
- filesize_test_float_13.size_diff == 0
|
||||
- filesize_test_float_14.size_diff == 0
|
||||
|
||||
- filesize_test_float_11.size == 512512
|
||||
- filesize_test_float_12.size == 512513
|
||||
- filesize_test_float_13.size == 512513
|
||||
- filesize_test_float_14.size == 512513
|
||||
|
||||
- filesize_stat_float_11.stat.size == 512512
|
||||
- filesize_stat_float_12.stat.size == 512513
|
||||
- filesize_stat_float_14.stat.size == 512513
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 4.004MB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.004MB
|
||||
register: filesize_test_float_21
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_21
|
||||
|
||||
|
||||
- name: Create a file with a size of 4.004MB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.004MB
|
||||
register: filesize_test_float_22
|
||||
|
||||
- name: Stat the file (should have grown to 4.004MB)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_22
|
||||
|
||||
|
||||
- name: Create a file with a size of 4.004MB (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.004MB
|
||||
register: filesize_test_float_23
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a file with a size of 4.004MB (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.004MB
|
||||
register: filesize_test_float_24
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
register: filesize_stat_float_24
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_float_21 is changed
|
||||
- filesize_test_float_22 is changed
|
||||
- filesize_test_float_23 is not changed
|
||||
- filesize_test_float_24 is not changed
|
||||
|
||||
- filesize_test_float_22.cmd == filesize_test_float_21.cmd
|
||||
- filesize_test_float_23.cmd is undefined
|
||||
- filesize_test_float_24.cmd is undefined
|
||||
|
||||
- filesize_test_float_21.filesize.bytes == 4004000
|
||||
- filesize_test_float_22.filesize.bytes == 4004000
|
||||
- filesize_test_float_23.filesize.bytes == 4004000
|
||||
- filesize_test_float_24.filesize.bytes == 4004000
|
||||
|
||||
- filesize_test_float_21.size_diff == 4004000 - 512513
|
||||
- filesize_test_float_22.size_diff == 4004000 - 512513
|
||||
- filesize_test_float_23.size_diff == 0
|
||||
- filesize_test_float_24.size_diff == 0
|
||||
|
||||
- filesize_test_float_21.size == 512513
|
||||
- filesize_test_float_22.size == 4004000
|
||||
- filesize_test_float_23.size == 4004000
|
||||
- filesize_test_float_24.size == 4004000
|
||||
|
||||
- filesize_stat_float_21.stat.size == 512513
|
||||
- filesize_stat_float_22.stat.size == 4004000
|
||||
- filesize_stat_float_24.stat.size == 4004000
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
40
tests/integration/targets/filesize/tasks/main.yml
Normal file
40
tests/integration/targets/filesize/tasks/main.yml
Normal file
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
####################################################################
|
||||
# WARNING: These are designed specifically for Ansible tests #
|
||||
# and should not be used as examples of how to write Ansible roles #
|
||||
####################################################################
|
||||
|
||||
- name: Ensure the test dir is present
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testdir }}"
|
||||
state: directory
|
||||
|
||||
- name: Ensure the test file is absent
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
||||
|
||||
- name: Run all tests and remove the workspace anyway
|
||||
block:
|
||||
- name: Include tasks to test error handling
|
||||
include_tasks: errors.yml
|
||||
|
||||
- name: Include tasks to test basic behaviours
|
||||
include_tasks: basics.yml
|
||||
|
||||
- name: Include tasks to test playing with floating point numbers
|
||||
include_tasks: floats.yml
|
||||
|
||||
- name: Include tasks to test playing with sparse files
|
||||
include_tasks: sparse.yml
|
||||
when:
|
||||
- not (ansible_os_family == 'Darwin' and ansible_distribution_version is version('11', '<'))
|
||||
|
||||
- name: Include tasks to test playing with symlinks
|
||||
include_tasks: symlinks.yml
|
||||
|
||||
always:
|
||||
- name: Remove test dir
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testdir }}"
|
||||
state: absent
|
282
tests/integration/targets/filesize/tasks/sparse.yml
Normal file
282
tests/integration/targets/filesize/tasks/sparse.yml
Normal file
|
@ -0,0 +1,282 @@
|
|||
---
|
||||
# Test module with sparse files
|
||||
|
||||
- name: Create a huge sparse file of 4TB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4TB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_01
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file (should not exist)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_01
|
||||
|
||||
|
||||
- name: Create a huge sparse file of 4TB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4TB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_02
|
||||
|
||||
- name: Stat the resulting file (should exist now)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_02
|
||||
|
||||
|
||||
- name: Create a huge sparse file of 4TB (4000GB) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4000GB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_03
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a huge sparse file of 4TB (4000GB) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4000GB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_04
|
||||
|
||||
- name: Create a huge sparse file of 4TB (4000000 × 1MB) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4000000
|
||||
blocksize: 1MB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_05
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a huge sparse file of 4TB (4000000 × 1MB) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4000000
|
||||
blocksize: 1MB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_06
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_06
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_sparse_01 is changed
|
||||
- filesize_test_sparse_02 is changed
|
||||
- filesize_test_sparse_03 is not changed
|
||||
- filesize_test_sparse_04 is not changed
|
||||
- filesize_test_sparse_05 is not changed
|
||||
- filesize_test_sparse_06 is not changed
|
||||
|
||||
- filesize_test_sparse_02.cmd == filesize_test_sparse_01.cmd
|
||||
- filesize_test_sparse_03.cmd is undefined
|
||||
- filesize_test_sparse_04.cmd is undefined
|
||||
- filesize_test_sparse_05.cmd is undefined
|
||||
- filesize_test_sparse_06.cmd is undefined
|
||||
|
||||
- filesize_test_sparse_01.filesize.bytes == 4*1000**4
|
||||
- filesize_test_sparse_02.filesize.bytes == 4*1000**4
|
||||
- filesize_test_sparse_03.filesize.bytes == 4*1000**4
|
||||
- filesize_test_sparse_04.filesize.bytes == 4*1000**4
|
||||
- filesize_test_sparse_05.filesize.bytes == 4*1000**4
|
||||
- filesize_test_sparse_06.filesize.bytes == 4*1000**4
|
||||
|
||||
- filesize_test_sparse_01.size_diff == 4*1000**4
|
||||
- filesize_test_sparse_02.size_diff == 4*1000**4
|
||||
- filesize_test_sparse_03.size_diff == 0
|
||||
- filesize_test_sparse_04.size_diff == 0
|
||||
- filesize_test_sparse_05.size_diff == 0
|
||||
- filesize_test_sparse_06.size_diff == 0
|
||||
|
||||
- filesize_test_sparse_01.state is undefined
|
||||
- filesize_test_sparse_02.state in ["file"]
|
||||
- filesize_test_sparse_01.size is undefined
|
||||
- filesize_test_sparse_02.size == 4*1000**4
|
||||
- filesize_test_sparse_03.size == 4*1000**4
|
||||
- filesize_test_sparse_04.size == 4*1000**4
|
||||
- filesize_test_sparse_05.size == 4*1000**4
|
||||
- filesize_test_sparse_06.size == 4*1000**4
|
||||
|
||||
- not filesize_stat_sparse_01.stat.exists
|
||||
- filesize_stat_sparse_02.stat.exists
|
||||
- filesize_stat_sparse_02.stat.isreg
|
||||
- filesize_stat_sparse_02.stat.size == 4*1000**4
|
||||
- filesize_stat_sparse_06.stat.size == 4*1000**4
|
||||
|
||||
|
||||
|
||||
- name: Change sparse file size to 4TiB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4TiB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_11
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_11
|
||||
|
||||
|
||||
- name: Change sparse file size to 4TiB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4TiB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_12
|
||||
|
||||
- name: Stat the file again (should have grown)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_12
|
||||
|
||||
|
||||
- name: Change sparse file size to 4TiB (4096GiB) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4096GiB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_13
|
||||
check_mode: yes
|
||||
|
||||
- name: Change sparse file size to 4TiB (4096GiB) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4096GiB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_14
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_14
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_sparse_11 is changed
|
||||
- filesize_test_sparse_12 is changed
|
||||
- filesize_test_sparse_13 is not changed
|
||||
- filesize_test_sparse_14 is not changed
|
||||
|
||||
- filesize_test_sparse_12.cmd == filesize_test_sparse_11.cmd
|
||||
- filesize_test_sparse_13.cmd is undefined
|
||||
- filesize_test_sparse_14.cmd is undefined
|
||||
|
||||
- filesize_test_sparse_11.size_diff == 398046511104
|
||||
- filesize_test_sparse_12.size_diff == 398046511104
|
||||
- filesize_test_sparse_13.size_diff == 0
|
||||
- filesize_test_sparse_14.size_diff == 0
|
||||
|
||||
- filesize_test_sparse_11.size == 4000000000000
|
||||
- filesize_test_sparse_12.size == 4398046511104
|
||||
- filesize_test_sparse_13.size == 4398046511104
|
||||
- filesize_test_sparse_14.size == 4398046511104
|
||||
|
||||
- filesize_stat_sparse_11.stat.size == 4000000000000
|
||||
- filesize_stat_sparse_12.stat.size == 4398046511104
|
||||
- filesize_stat_sparse_14.stat.size == 4398046511104
|
||||
|
||||
|
||||
|
||||
- name: Change sparse file size to 4.321TB (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.321TB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_21
|
||||
check_mode: yes
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_21
|
||||
|
||||
|
||||
- name: Change sparse file size to 4.321TB
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4.321TB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_22
|
||||
|
||||
- name: Stat the file again (should have been reduced)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_22
|
||||
|
||||
|
||||
- name: Change sparse file size to 4321×1GB (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4321
|
||||
blocksize: 1GB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_23
|
||||
check_mode: yes
|
||||
|
||||
- name: Change sparse file size to 4321×1GB (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testfile }}"
|
||||
size: 4321
|
||||
blocksize: 1GB
|
||||
sparse: yes
|
||||
register: filesize_test_sparse_24
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_testfile }}"
|
||||
get_checksum: no
|
||||
register: filesize_stat_sparse_24
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_sparse_21 is changed
|
||||
- filesize_test_sparse_22 is changed
|
||||
- filesize_test_sparse_23 is not changed
|
||||
- filesize_test_sparse_24 is not changed
|
||||
|
||||
- filesize_test_sparse_22.cmd == filesize_test_sparse_21.cmd
|
||||
- filesize_test_sparse_23.cmd is undefined
|
||||
- filesize_test_sparse_24.cmd is undefined
|
||||
|
||||
- filesize_test_sparse_21.size_diff == 4321*1000**3 - 4*1024**4
|
||||
- filesize_test_sparse_22.size_diff == 4321*1000**3 - 4*1024**4
|
||||
- filesize_test_sparse_23.size_diff == 0
|
||||
- filesize_test_sparse_24.size_diff == 0
|
||||
|
||||
- filesize_test_sparse_21.size == 4398046511104
|
||||
- filesize_test_sparse_22.size == 4321000000000
|
||||
- filesize_test_sparse_23.size == 4321000000000
|
||||
- filesize_test_sparse_24.size == 4321000000000
|
||||
|
||||
- filesize_stat_sparse_21.stat.size == 4398046511104
|
||||
- filesize_stat_sparse_22.stat.size == 4321000000000
|
||||
- filesize_stat_sparse_24.stat.size == 4321000000000
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
93
tests/integration/targets/filesize/tasks/symlinks.yml
Normal file
93
tests/integration/targets/filesize/tasks/symlinks.yml
Normal file
|
@ -0,0 +1,93 @@
|
|||
---
|
||||
# Check that the module works with symlinks, as expected, i.e. as dd does:
|
||||
# follow symlinks.
|
||||
|
||||
- name: Ensure the test file is absent
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
||||
|
||||
- name: Create a broken symlink in the same directory
|
||||
ansible.builtin.file:
|
||||
src: "{{ filesize_testfile | basename }}"
|
||||
dest: "{{ filesize_testlink }}"
|
||||
state: link
|
||||
force: yes
|
||||
follow: no
|
||||
|
||||
|
||||
|
||||
- name: Create a file with a size of 512 kB (512000 bytes) (check mode)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testlink }}"
|
||||
size: "512 kB"
|
||||
register: filesize_test_symlink_01
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a file with a size of 512 kB (512000 bytes)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testlink }}"
|
||||
size: "512 kB"
|
||||
register: filesize_test_symlink_02
|
||||
|
||||
- name: Stat the resulting file (not the symlink)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_test_symlink_02.path }}"
|
||||
register: filesize_stat_symlink_02
|
||||
|
||||
|
||||
- name: Create a file with a size of 500 KiB (512000 bytes) (check mode, idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testlink }}"
|
||||
size: "500 KiB"
|
||||
register: filesize_test_symlink_03
|
||||
check_mode: yes
|
||||
|
||||
- name: Create a file with a size of 500 KiB (512000 bytes) (idempotency)
|
||||
community.general.filesize:
|
||||
path: "{{ filesize_testlink }}"
|
||||
size: "500 KiB"
|
||||
register: filesize_test_symlink_04
|
||||
|
||||
- name: Stat the file again (should remain the same)
|
||||
ansible.builtin.stat:
|
||||
path: "{{ filesize_test_symlink_04.path }}"
|
||||
register: filesize_stat_symlink_04
|
||||
|
||||
|
||||
- name: Assert that results are as expected
|
||||
ansible.builtin.assert:
|
||||
that:
|
||||
- filesize_test_symlink_01 is changed
|
||||
- filesize_test_symlink_02 is changed
|
||||
- filesize_test_symlink_03 is not changed
|
||||
- filesize_test_symlink_04 is not changed
|
||||
|
||||
- filesize_test_symlink_02.cmd == filesize_test_symlink_01.cmd
|
||||
- filesize_test_symlink_03.cmd is undefined
|
||||
- filesize_test_symlink_04.cmd is undefined
|
||||
|
||||
- filesize_test_symlink_01.state is undefined
|
||||
- filesize_test_symlink_02.state in ["file"]
|
||||
- filesize_test_symlink_01.size is undefined
|
||||
- filesize_test_symlink_02.size == 512000
|
||||
- filesize_test_symlink_03.size == 512000
|
||||
- filesize_test_symlink_04.size == 512000
|
||||
|
||||
- filesize_stat_symlink_02.stat.size == 512000
|
||||
- filesize_stat_symlink_04.stat.size == 512000
|
||||
|
||||
- filesize_test_symlink_04.path == filesize_test_symlink_02.path
|
||||
- filesize_test_symlink_04.path != filesize_testlink
|
||||
|
||||
|
||||
|
||||
- name: Remove test file
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testfile }}"
|
||||
state: absent
|
||||
|
||||
- name: Remove test link
|
||||
ansible.builtin.file:
|
||||
path: "{{ filesize_testlink }}"
|
||||
state: absent
|
Loading…
Add table
Add a link
Reference in a new issue