---
- name: "{{ test.name }} | install test packages"
  dnf: name="{{ test.package }}-tests" state=installed

- name: "{{ test.name }} | define helper variables"
  set_fact:
    test_name_oneword: "{{ test.name | replace(' ','-') }}"

# UGH. This is necessary because our caller sets some environment variables
# and we need to set a few more based on other caller variables; then we
# need to combine the two dicts when running the test. This seems to be
# the only way to do it in ansible.
- name: "{{ test.name }} | define local environment"
  set_fact:
    local_environment:
      TEST_NAME:    "{{ test.name }}"
      TEST_PACKAGE: "{{ test.package }}"
      TEST_ENV:     "{{ test.environment }}"

- name: "{{ test.name }} | setup/teardown helper | see if exists"
  local_action: stat path={{ role_path }}/files/helper.{{ test_name_oneword }}.sh
  register: helper

- name: "{{ test.name }} | setup/teardown helper | install"
  copy: src=helper.{{ test_name_oneword }}.sh dest=/tmp/helper.sh
  when: helper.stat.exists

- name: "{{ test.name }} | run test"
  script: ./run_bats_tests.sh
  args:
    chdir: /usr/share/{{ test.package }}/test/system
  become: "{{ true if test.become is defined else false }}"
  become_user: testuser
  environment: "{{ local_environment | combine(test.environment) }}"

- name: "{{ test.name }} | pull logs"
  fetch:
    src: "/tmp/artifacts/test.{{ test_name_oneword }}.{{ item }}.log"
    dest: "{{ artifacts }}/"
    flat: yes
  with_items:
    - bats
    - debug

- name: "{{ test.name }} | remove remote logs and helpers"
  file:
    dest=/tmp/{{ item }}
    state=absent
  with_items:
    - artifacts/test.{{ test_name_oneword }}.bats.log
    - artifacts/test.{{ test_name_oneword }}.debug.log
    - helper.sh