# UNINSTALL 'python-apt'
#  The `apt` module has the smarts to auto-install `python-apt`.  To test, we
#  will first uninstall `python-apt`.
- name: check python-apt with dpkg
  shell: dpkg -s python-apt
  register: dpkg_result
  ignore_errors: true

- name: uninstall python-apt with apt
  apt: pkg=python-apt state=absent purge=yes
  register: apt_result
  when: dpkg_result|success

# UNINSTALL 'hello'
#   With 'python-apt' uninstalled, the first call to 'apt' should install
#   python-apt.
- name: uninstall hello with apt
  apt: pkg=hello state=absent purge=yes
  register: apt_result

- name: check hello with dpkg
  shell: dpkg --get-selections | fgrep hello
  failed_when: False
  register: dpkg_result

- name: verify uninstallation of hello
  assert:
    that:
        - "'changed' in apt_result"
        - "dpkg_result.rc == 1"

# UNINSTALL AGAIN
- name: uninstall hello with apt
  apt: pkg=hello state=absent purge=yes
  register: apt_result

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

# INSTALL
- name: install hello with apt
  apt: name=hello state=present
  register: apt_result

- name: check hello with dpkg
  shell: dpkg --get-selections | fgrep hello
  failed_when: False
  register: dpkg_result

- debug: var=apt_result
- debug: var=dpkg_result

- name: verify installation of hello
  assert:
    that:
        - "apt_result.changed"
        - "dpkg_result.rc == 0"

- name: verify apt module outputs
  assert:
    that:
        - "'invocation' in apt_result"
        - "'changed' in apt_result"
        - "'stderr' in apt_result"
        - "'stdout' in apt_result"
        - "'stdout_lines' in apt_result"

# INSTALL AGAIN
- name: install hello with apt
  apt: name=hello state=present
  register: apt_result

- name: verify no change on re-install
  assert:
    that:
        - "not apt_result.changed"


