---
sudo: required
language: python
services:
  - docker
env:
  global:
    - role: weareinteractive.apt
  matrix:
    - distribution: Ubuntu
      distribution_version: "18.04"
      init: /lib/systemd/systemd
      run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
    - distribution: Ubuntu
      distribution_version: "16.04"
      init: /lib/systemd/systemd
      run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
    - distribution: Ubuntu
      distribution_version: "14.04"
      init: /sbin/init
      run_opts: ""
    - distribution: Debian
      distribution_version: "9"
      init: /lib/systemd/systemd
      run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"
    - distribution: Debian
      distribution_version: "8"
      init: /lib/systemd/systemd
      run_opts: "--privileged --volume=/sys/fs/cgroup:/sys/fs/cgroup:ro"

before_install:
  - sudo apt-get update
  - sudo apt-get -y -o Dpkg::Options::="--force-confnew" install docker-ce
  - docker pull ansiblecheck/ansiblecheck:"${distribution,,}"-"${distribution_version}"

script:
  - container_id=$(mktemp)
  # Start The Built Container In The Background
  - docker run -d -v "${PWD}":/etc/ansible/roles/${role}:ro ${run_opts} ansiblecheck/ansiblecheck:"${distribution,,}"-"${distribution_version}" "${init}" > "${container_id}"

  # Print ansible version
  - docker exec -t "$(cat ${container_id})" env TERM=xterm ansible --version

  # Ansible syntax check.
  - 'docker exec -t "$(cat ${container_id})" env TERM=xterm ansible-playbook /etc/ansible/roles/${role}/tests/main.yml --syntax-check'

  # Test role.
  - 'docker exec "$(cat ${container_id})" env ANSIBLE_FORCE_COLOR=1 ansible-playbook /etc/ansible/roles/${role}/tests/main.yml'

  # Test Idempotence
  - idempotence=$(mktemp)
  - docker exec "$(cat ${container_id})" ansible-playbook /etc/ansible/roles/${role}/tests/main.yml | tee -a ${idempotence}
  - >
    tail ${idempotence}
    | grep -q 'failed=0'
    && (echo 'Idempotence test: pass' && exit 0)
    || (echo 'Idempotence test: fail' && exit 1)

notifications:
  webhooks: https://galaxy.ansible.com/api/v1/notifications/
