You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ansible/test/integration/roles/test_zypper/tasks/zypper.yml

337 lines
7.9 KiB
YAML

# 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"
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=hello, 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:/42.1/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.')
# use of version specific (42.1) data in the following
- block:
# test for #1627
- name: in existing patch
zypper: name=openSUSE-2016-128 type=patch state=present
- name: in existing patch again
zypper: name=openSUSE-2016-128 type=patch state=present
register: zypper_patch
- assert:
that: not zypper_patch.changed
- name: in non-existing patch
zypper: name=openSUSE-1800-1 type=patch state=present
ignore_errors: yes
register: zypper_patch
- assert:
that: zypper_patch|failed
- name: remove pattern update_test
zypper: name=update_test type=pattern state=absent
- name: install pattern update_test
zypper: name=update_test type=pattern state=present
register: zypper_install_pattern1
- name: install pattern update_test again
zypper: name=update_test type=pattern state=present
register: zypper_install_pattern2
- assert:
that:
- zypper_install_pattern1|changed
- not zypper_install_pattern2|changed
- name: remove hello
zypper: name=hello state=absent
- name: install via URL
zypper: state=present name=http://download.opensuse.org/repositories/openSUSE:/Leap:/42.1/standard/x86_64/hello-2.9-6.2.x86_64.rpm
register: zypperin1
- name: test install
zypper: name=hello state=present
register: zypperin2
- assert:
that:
- zypperin1|success
- zypperin1|changed
- not zypperin2|changed
when: ansible_distribution == 'openSUSE Leap' and ansible_distribution_version == '42.1'