Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add tests for dnf modelled after the yum tests #18226

Merged
merged 1 commit into from
Oct 31, 2016
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions test/integration/destructive.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- { role: pip, tags: test_pip }
- { role: gem, tags: test_gem }
- { role: yum, tags: test_yum }
- { role: dnf, tags: test_dnf }
- { role: apt, tags: test_apt }
- { role: apt_repository, tags: [test_apt_repository, test_apt_key] }
- { role: postgresql, tags: [test_postgresql, test_postgresql_db, test_postgresql_privs, test_postgresql_user, needs_privileged] }
Expand Down
2 changes: 2 additions & 0 deletions test/integration/targets/dnf/meta/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
dependencies:
- prepare_tests
212 changes: 212 additions & 0 deletions test/integration/targets/dnf/tasks/dnf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,212 @@
# UNINSTALL 'python2-dnf'
# The `dnf` module has the smarts to auto-install the relevant python
# bindings. To test, we will first uninstall python2-dnf (so that the tests
# on python2 will require python2-dnf)
- name: check python2-dnf with rpm
shell: rpm -q python2-dnf
register: rpm_result
ignore_errors: true

# Don't uninstall python2-dnf with the `dnf` module in case it needs to load
# some dnf python files after the package is uninstalled.
- name: uninstall python2-dnf with shell
shell: dnf -y remove python2-dnf
when: rpm_result|success

# UNINSTALL
# With 'python2-dnf' uninstalled, the first call to 'dnf' should install
# python2-dnf.
- name: uninstall sos
dnf:
name: sos
state: removed
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_result

- debug: var=dnf_result
- debug: var=rpm_result

- name: verify uninstallation of sos
assert:
that:
- "not dnf_result.failed | default(False)"
- "rpm_result.rc == 1"

# UNINSTALL AGAIN
- name: uninstall sos
dnf:
name: sos
state: removed
register: dnf_result

- name: verify no change on re-uninstall
assert:
that:
- "not dnf_result.changed"

# INSTALL
- name: install sos
dnf:
name: sos
state: present
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_result

- debug: var=dnf_result
- debug: var=rpm_result

- name: verify installation of sos
assert:
that:
- "not dnf_result.failed | default(False)"
- "dnf_result.changed"
- "rpm_result.rc == 0"

- name: verify dnf module outputs
assert:
that:
- "'changed' in dnf_result"
- "'results' in dnf_result"

# INSTALL AGAIN
- name: install sos again
dnf:
name: sos
state: present
register: dnf_result

- name: verify no change on second install
assert:
that:
- "not dnf_result.changed"

# Multiple packages
- name: uninstall sos and sharutils
dnf: name=sos,sharutils state=removed
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result

- name: check sharutils with rpm
shell: rpm -q sharutils
failed_when: False
register: rpm_sharutils_result

- name: verify packages installed
assert:
that:
- "rpm_sos_result.rc != 0"
- "rpm_sharutils_result.rc != 0"

- name: install sos and sharutils as comma separated
dnf: name=sos,sharutils state=present
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result

- name: check sharutils with rpm
shell: rpm -q sharutils
failed_when: False
register: rpm_sharutils_result

- name: verify packages installed
assert:
that:
- "not dnf_result.failed | default(False)"
- "dnf_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
dnf: name=sos,sharutils state=removed
register: dnf_result

- name: install sos and sharutils as list
dnf:
name:
- sos
- sharutils
state: present
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result

- name: check sharutils with rpm
shell: rpm -q sharutils
failed_when: False
register: rpm_sharutils_result

- name: verify packages installed
assert:
that:
- "not dnf_result.failed | default(False)"
- "dnf_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
dnf:
name: "sos,sharutils"
state: removed
register: dnf_result

- name: install sos and sharutils as comma separated with spaces
dnf:
name: "sos, sharutils"
state: present
register: dnf_result

- name: check sos with rpm
shell: rpm -q sos
failed_when: False
register: rpm_sos_result

- name: check sos with rpm
shell: rpm -q sharutils
failed_when: False
register: rpm_sharutils_result

- name: verify packages installed
assert:
that:
- "not dnf_result.failed | default(False)"
- "dnf_result.changed"
- "rpm_sos_result.rc == 0"
- "rpm_sharutils_result.rc == 0"

- name: uninstall sos and sharutils
dnf:
name:
- sos
- sharutils
state: removed

- name: install non-existent rpm
dnf:
name: "{{ item }}"
with_items:
- does-not-exist
register: non_existent_rpm
ignore_errors: True

- name: check non-existent rpm install failed
assert:
that:
- non_existent_rpm|failed
23 changes: 23 additions & 0 deletions test/integration/targets/dnf/tasks/main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# test code for the yum module
# (c) 2014, James Tanner <tanner.jc@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/>.

# Note: We install the yum package onto Fedora so that this will work on dnf systems
# We want to test that for people who don't want to upgrade their systems.
- include: 'dnf.yml'
when: (ansible_distribution in ['RedHat', 'CentOS', 'ScientificLinux'] and False) or (ansible_distribution in ['Fedora'] and ansible_distribution_major_version >= 23)