---
language: python
python: "2.7"

before_install:
  # Make sure everything's up to date.
  - sudo apt-get update -qq
  - sudo apt-get install -qq python-apt python-pycurl git python-pip

install:
  - sudo pip install ansible
  - sudo mkdir -p /spec
  - >
    [ ! -d /spec/ansible-spec ]
    && sudo git clone https://github.com/ahelal/ansible-spec /spec/ansible-spec && echo "ansible-spec Installing"
    || echo "ansible-spec allready installed"

script:
    - cd test
    - ansible --version
    ## Group
    # 1st: check syntax
    - ansible-playbook -i local.ini application/group.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/group.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/group.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th: run test make sure module spit it right data
    - ansible-playbook -i local.ini application/group_spec.yml --sudo -vvvv -C

    ## Simple
    # 1st: check syntax
    - ansible-playbook -i local.ini application/simple.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/simple.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/simple.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th: run test make sure module spit it right data
    - ansible-playbook -i local.ini application/simple_spec.yml --sudo -vvvv -C

    ## Advanced
    # 1st: check syntax
    - ansible-playbook -i local.ini application/advanced.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/advanced.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/advanced.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th: run test make sure module spit it right data
    - ansible-playbook -i local.ini application/advanced_spec.yml --sudo -vvvv -C --diff

    ## Source file yaml and json
    # 1st: check syntax
    - ansible-playbook -i local.ini application/source_files.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/source_files.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/source_files.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th: run test make sure module spit it right data
    - ansible-playbook -i local.ini application/source_files_specs.yml --sudo -vvvv -C --diff

    ## Source databag
    # 1st: check syntax
    - ansible-playbook -i local.ini application/source_databag.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/source_databag.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/source_databag.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th: run test make sure module spit it right data
    - ansible-playbook -i local.ini application/source_databag_spec.yml --sudo -vvvv -C --diff

    ## Mutli Source
    # 1st: check syntax
    - ansible-playbook -i local.ini application/multi_source_files.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/multi_source_files.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/multi_source_files.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th:
    - ansible-playbook -i local.ini application/multi_source_specs.yml --sudo -vvvv -C --diff

    ## Team management
    # 1st: check syntax
    - ansible-playbook -i local.ini application/team.yml --syntax-check
    # 2nd:  Make sure we run the entire playbook
    - ansible-playbook -i local.ini application/team.yml --sudo -vvvv
    # 3rd:  Make sure our playbook is idempotent
    - >
      ansible-playbook -i local.ini application/team.yml --sudo -vvvv | tee ansible_output
      | grep -q 'changed=0.*failed=0'
      && (echo 'Idempotence test: pass' && exit 0)
      || (echo 'Idempotence test: fail' && exit 1)
    # 4th:
    - ansible-playbook -i local.ini application/team_spec.yml --sudo -vvvv -C --diff

after_failure:
    - echo "Failure"
    - sudo cat ansible_output
    - sudo netstat -atnlp
    - sudo cat /home/nexus/sonatype-work/nexus/logs/nexus.log
    - sudo cat /home/nexus/sonatype-work/nexus/logs/request.log
    - ansible -i 127.0.0.1, -m setup all -c local

after_success:
    - echo "Success"