From 8a754e0858d922e955e71b253c139e071ecec432 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 28 Apr 2024 18:04:21 +0200 Subject: Adding upstream version 2.14.3. Signed-off-by: Daniel Baumann --- test/integration/targets/test_core/tasks/main.yml | 350 ++++++++++++++++++++++ 1 file changed, 350 insertions(+) create mode 100644 test/integration/targets/test_core/tasks/main.yml (limited to 'test/integration/targets/test_core/tasks/main.yml') diff --git a/test/integration/targets/test_core/tasks/main.yml b/test/integration/targets/test_core/tasks/main.yml new file mode 100644 index 0000000..8c2decb --- /dev/null +++ b/test/integration/targets/test_core/tasks/main.yml @@ -0,0 +1,350 @@ +- name: Failure + set_fact: + hello: world + failed_when: true + ignore_errors: yes + register: intentional_failure + +- name: Success + set_fact: + hello: world + register: intentional_success + +- name: Try failure test on non-dictionary + set_fact: + hello: "{{ 'nope' is failure }}" + ignore_errors: yes + register: misuse_of_failure + +- name: Assert failure tests work + assert: + that: + - intentional_failure is failed # old name + - intentional_failure is failure + - intentional_success is not failure + - misuse_of_failure is failed + +- name: Assert successful tests work + assert: + that: + - intentional_success is succeeded # old name + - intentional_success is success # old name + - intentional_success is successful + - intentional_failure is not successful + +- name: Try reachable host + command: id + register: reachable_host + +- name: Try unreachable host + command: id + delegate_to: unreachable + ignore_unreachable: yes + ignore_errors: yes + register: unreachable_host + +- name: Try reachable test on non-dictionary + set_fact: + hello: "{{ 'nope' is reachable }}" + ignore_errors: yes + register: misuse_of_reachable + +- name: Assert reachable tests work + assert: + that: + - misuse_of_reachable is failed + - reachable_host is reachable + - unreachable_host is not reachable + +- name: Try unreachable test on non-dictionary + set_fact: + hello: "{{ 'nope' is unreachable }}" + ignore_errors: yes + register: misuse_of_unreachable + +- name: Assert unreachable tests work + assert: + that: + - misuse_of_unreachable is failed + - reachable_host is not unreachable + - unreachable_host is unreachable + +- name: Make changes + file: + path: dir_for_changed + state: directory + register: directory_created + +- name: Make no changes + file: + path: dir_for_changed + state: directory + register: directory_unchanged + +- name: Try changed test on non-dictionary + set_fact: + hello: "{{ 'nope' is changed }}" + ignore_errors: yes + register: misuse_of_changed + +# providing artificial task results since there are no modules in ansible-core that provide a 'results' list instead of 'changed' +- name: Prepare artificial task results + set_fact: + results_all_changed: + results: + - changed: true + - changed: true + results_some_changed: + results: + - changed: true + - changed: false + results_none_changed: + results: + - changed: false + - changed: false + results_missing_changed: {} + +- name: Assert changed tests work + assert: + that: + - directory_created is changed + - directory_unchanged is not changed + - misuse_of_changed is failed + - results_all_changed is changed + - results_some_changed is changed + - results_none_changed is not changed + - results_missing_changed is not changed + +- name: Skip me + set_fact: + hello: world + when: false + register: skipped_task + +- name: Don't skip me + set_fact: + hello: world + register: executed_task + +- name: Try skipped test on non-dictionary + set_fact: + hello: "{{ 'nope' is skipped }}" + ignore_errors: yes + register: misuse_of_skipped + +- name: Assert skipped tests work + assert: + that: + - skipped_task is skipped + - executed_task is not skipped + - misuse_of_skipped is failure + +- name: Not an async task + set_fact: + hello: world + register: non_async_task + +- name: Complete an async task + command: id + async: 10 + poll: 1 + register: async_completed + +- name: Start an async task without waiting for completion + shell: sleep 3 + async: 10 + poll: 0 + register: async_incomplete + +- name: Try finished test on non-dictionary + set_fact: + hello: "{{ 'nope' is finished }}" + ignore_errors: yes + register: misuse_of_finished + +- name: Assert finished tests work (warning expected) + assert: + that: + - non_async_task is finished + - misuse_of_finished is failed + - async_completed is finished + - async_incomplete is not finished + +- name: Try started test on non-dictionary + set_fact: + hello: "{{ 'nope' is started }}" + ignore_errors: yes + register: misuse_of_started + +- name: Assert started tests work (warning expected) + assert: + that: + - non_async_task is started + - misuse_of_started is failed + - async_completed is started + - async_incomplete is started + +- name: Assert match tests work + assert: + that: + - "'hello' is match('h.ll.')" + - "'hello' is not match('.ll.')" + +- name: Assert search tests work + assert: + that: + - "'hello' is search('.l')" + - "'hello' is not search('nope')" + +- name: Assert regex tests work + assert: + that: + - "'hello' is regex('.l')" + - "'hello' is regex('.L', ignorecase=true)" + - "'hello\nAnsible' is regex('^Ansible', multiline=true)" + - "'hello' is not regex('.L')" + - "'hello\nAnsible' is not regex('^Ansible')" + +- name: Try version tests with bad operator + set_fact: + result: "{{ '1.0' is version('1.0', 'equals') }}" + ignore_errors: yes + register: version_bad_operator + +- name: Try version tests with bad value + set_fact: + result: "{{ '1.0' is version('nope', '==', true) }}" + ignore_errors: yes + register: version_bad_value + +- name: Try version with both strict and version_type + debug: + msg: "{{ '1.0' is version('1.0', strict=False, version_type='loose') }}" + ignore_errors: yes + register: version_strict_version_type + +- name: Try version with bad version_type + debug: + msg: "{{ '1.0' is version('1.0', version_type='boom') }}" + ignore_errors: yes + register: version_bad_version_type + +- name: Try version with bad semver + debug: + msg: "{{ 'nope' is version('nopenope', version_type='semver') }}" + ignore_errors: yes + register: version_bad_semver + +- name: Try version with empty input value + debug: + msg: "{{ '' is version('1.0', '>') }}" + ignore_errors: yes + register: version_empty_input + +- name: Try version with empty comparison value + debug: + msg: "{{ '1.0' is version('', '>') }}" + ignore_errors: yes + register: version_empty_comparison + +- name: Try version with empty input and comparison values + debug: + msg: "{{ '' is version('', '>') }}" + ignore_errors: yes + register: version_empty_both + +- name: Assert version tests work + assert: + that: + - "'1.0' is version_compare('1.0', '==')" # old name + - "'1.0' is version('1.0', '==')" + - "'1.0' is version('2.0', '!=')" + - "'1.0' is version('2.0', '<')" + - "'2.0' is version('1.0', '>')" + - "'1.0' is version('1.0', '<=')" + - "'1.0' is version('1.0', '>=')" + - "'1.0' is version_compare('1.0', '==', true)" # old name + - "'1.0' is version('1.0', '==', true)" + - "'1.0' is version('2.0', '!=', true)" + - "'1.0' is version('2.0', '<', true)" + - "'2.0' is version('1.0', '>', true)" + - "'1.0' is version('1.0', '<=', true)" + - "'1.0' is version('1.0', '>=', true)" + - "'1.2.3' is version('2.0.0', 'lt', version_type='semver')" + - "'2.14.0rc1' is version('2.14.0', 'lt', version_type='pep440')" + - version_bad_operator is failed + - version_bad_value is failed + - version_strict_version_type is failed + - version_bad_version_type is failed + - version_bad_semver is failed + - version_empty_input is failed + - version_empty_input is search('version value cannot be empty') + - version_empty_comparison is failed + - version_empty_comparison is search('to compare against cannot be empty') + - version_empty_both is failed + - version_empty_both is search('version value cannot be empty') + +- name: Assert any tests work + assert: + that: + - "[true, false] is any" + - "[false] is not any" + +- name: Assert all tests work + assert: + that: + - "[true] is all" + - "[true, false] is not all" + +- name: Assert truthy tests work + assert: + that: + - '"string" is truthy' + - '"" is not truthy' + - True is truthy + - False is not truthy + - true is truthy + - false is not truthy + - 1 is truthy + - 0 is not truthy + - '[""] is truthy' + - '[] is not truthy' + - '"on" is truthy(convert_bool=True)' + - '"off" is not truthy(convert_bool=True)' + - '"fred" is truthy(convert_bool=True)' + - '{} is not truthy' + - '{"key": "value"} is truthy' + +- name: Assert falsy tests work + assert: + that: + - '"string" is not falsy' + - '"" is falsy' + - True is not falsy + - False is falsy + - true is not falsy + - false is falsy + - 1 is not falsy + - 0 is falsy + - '[""] is not falsy' + - '[] is falsy' + - '"on" is not falsy(convert_bool=True)' + - '"off" is falsy(convert_bool=True)' + - '{} is falsy' + - '{"key": "value"} is not falsy' + +- name: Create vaulted variable for vault_encrypted test + set_fact: + vaulted_value: !vault | + $ANSIBLE_VAULT;1.1;AES256 + 35323961353038346165643738646465376139363061353835303739663538343266303232326635 + 3365353662646236356665323135633630656238316530640a663362363763633436373439663031 + 33663433383037396438656464636433653837376361313638366362333037323961316364363363 + 3835616438623261650a636164376534376661393134326662326362323131373964313961623365 + 3833 + +- name: Assert vault_encrypted tests work + assert: + that: + - vaulted_value is vault_encrypted + - inventory_hostname is not vault_encrypted -- cgit v1.2.3