# UNINSTALL - name: uninstall hello zypper: name=hello state=removed register: zypper_result - name: check hello with rpm shell: rpm -q hello failed_when: False register: rpm_result - debug: var=zypper_result - debug: var=rpm_result - name: verify uninstallation of hello assert: that: - "zypper_result.rc == 0" - "rpm_result.rc == 1" # UNINSTALL AGAIN - name: uninstall hello again zypper: name=hello state=removed register: zypper_result - name: verify no change on re-uninstall assert: that: - "not zypper_result.changed" # INSTALL - name: install hello zypper: name=hello state=present register: zypper_result - name: check hello with rpm shell: rpm -q hello failed_when: False register: rpm_result - debug: var=zypper_result - debug: var=rpm_result - name: verify installation of hello assert: that: - "zypper_result.rc == 0" - "zypper_result.changed" - "rpm_result.rc == 0" # INSTALL AGAIN - name: install hello again zypper: name=hello state=present register: zypper_result - name: verify no change on second install assert: that: - "not zypper_result.changed" # Multiple packages - name: uninstall hello and metamail zypper: name: - hello - metamail state: removed register: zypper_result - name: check hello with rpm shell: rpm -q hello failed_when: False register: rpm_hello_result - name: check metamail with rpm shell: rpm -q metamail failed_when: False register: rpm_metamail_result - name: verify packages uninstalled assert: that: - "rpm_hello_result.rc != 0" - "rpm_metamail_result.rc != 0" - name: install hello and metamail zypper: name: - hello - metamail state: present register: zypper_result - name: check hello with rpm shell: rpm -q hello failed_when: False register: rpm_hello_result - name: check metamail with rpm shell: rpm -q metamail failed_when: False register: rpm_metamail_result - name: verify packages installed assert: that: - "zypper_result.rc == 0" - "zypper_result.changed" - "rpm_hello_result.rc == 0" - "rpm_metamail_result.rc == 0" - name: uninstall hello and metamail zypper: name: - hello - metamail state: removed # INSTALL nonexistent package - name: install hello from url zypper: name=doesnotexist state=present register: zypper_result ignore_errors: yes - name: verify package installation failed assert: that: - "zypper_result.rc == 104" - "zypper_result.msg.startswith('No provider of')" # INSTALL broken local package - name: create directory file: path: "{{output_dir | expanduser}}/zypper1" state: directory - name: fake rpm package file: path: "{{output_dir | expanduser}}/zypper1/broken.rpm" state: touch - name: install broken rpm zypper: name="{{output_dir | expanduser}}/zypper1/broken.rpm" state=present register: zypper_result ignore_errors: yes - debug: var=zypper_result - name: verify we failed installation of broken rpm assert: that: - "zypper_result.rc == 3" - "'Problem reading the RPM header' in zypper_result.stdout" # Build and install an empty rpm - name: uninstall empty zypper: name: empty state: removed - name: clean zypper RPM cache file: name: /var/cache/zypper/RPMS state: absent - name: create directory file: path: "{{output_dir | expanduser}}/zypper2" state: directory - name: copy spec file copy: src: empty.spec dest: "{{ output_dir | expanduser }}/zypper2/empty.spec" - name: build rpm command: | rpmbuild -bb \ --define "_topdir {{output_dir | expanduser }}/zypper2/rpm-build" --define "_builddir %{_topdir}" \ --define "_rpmdir %{_topdir}" \ --define "_srcrpmdir %{_topdir}" \ --define "_specdir {{output_dir | expanduser}}/zypper2" \ --define "_sourcedir %{_topdir}" \ {{ output_dir }}/zypper2/empty.spec register: rpm_build_result - name: install empty rpm zypper: name: "{{ output_dir | expanduser }}/zypper2/rpm-build/noarch/empty-1-0.noarch.rpm" disable_gpg_check: yes register: zypper_result - name: check empty with rpm shell: rpm -q empty failed_when: False register: rpm_result - name: verify installation of empty assert: that: - "zypper_result.rc == 0" - "zypper_result.changed" - "rpm_result.rc == 0" - name: uninstall empty zypper: name: empty state: removed # test simultaneous remove and install using +- prefixes - name: install hello to prep next task zypper: name: hello state: present - name: remove metamail to prep next task zypper: name: metamail state: absent - name: install and remove in the same run, with +- prefix zypper: name: - -hello - +metamail state: present register: zypper_res1 - name: install and remove again, leave out plus zypper: name={{item}} state=present with_items: - metamail - -hello register: zypper_res1a - name: in and rm swapped zypper: name={{item}} state=present with_items: - -metamail - hello register: zypper_res1b - name: install metamail zypper: name=metamail state=absent register: zypper_res2 - name: remove hello zypper: name=hello state=present register: zypper_res3 - name: verify simultaneous install/remove worked assert: that: - zypper_res1|success - zypper_res1|changed - not zypper_res1a|changed - zypper_res1b|changed - not zypper_res2|changed - not zypper_res3|changed - name: install and remove with state=absent zypper: name={{item}} state=absent with_items: - metamail - +hello register: zypper_res ignore_errors: yes - name: verify simultaneous install/remove failed with absent assert: that: - zypper_res|failed - zypper_res.results[0].msg == "Can not combine '+' prefix with state=remove/absent." - name: try rm patch zypper: name=openSUSE-2016-128 type=patch state=absent ignore_errors: yes register: zypper_patch - assert: that: - zypper_patch|failed - zypper_patch.msg.startswith('Can not remove patches.') - name: try rm URL zypper: name=http://download.opensuse.org/repositories/openSUSE:/Leap:/{{ ansible_distribution_version }}/standard/x86_64/hello-2.9-6.2.x86_64.rpm state=absent ignore_errors: yes register: zypper_rm - assert: that: - zypper_rm|failed - zypper_rm.msg.startswith('Can not remove via URL.') # check for https://github.com/ansible/ansible/issues/20139 - name: run updatecache zypper: name: hello state: present update_cache: True register: zypper_result_update_cache - name: run updatecache in check mode zypper: name: hello state: present update_cache: True check_mode: True register: zypper_result_update_cache_check - assert: that: - zypper_result_update_cache|success - zypper_result_update_cache_check|success - not zypper_result_update_cache_check|changed