dist: xenial

services:
    - mysql
    - postgresql

language: python
python:
    - 3.6
    - 3.7

addons:
    apt-packages:
        - sqlite3

before_install:
    - sudo apt-get update
    - sudo apt-get install gettext
    - sudo apt-get install mysql-server libmysqlclient-dev
    - sudo apt-get install libpq-dev
    - pip3 install invoke
    - pip3 install mysqlclient
    - pip3 install psycopg2
    - invoke install
    - invoke migrate
    - cd InvenTree && python3 manage.py createsuperuser --username InvenTreeAdmin --email admin@inventree.com --noinput && cd ..
    - psql -c 'create database inventree_test_db;' -U postgres
    - mysql -e 'CREATE DATABASE inventree_test_db;'

script:
    - cd InvenTree && python3 manage.py makemigrations && cd ..
    - python3 ci/check_migration_files.py
    # Run unit testing / code coverage tests
    - invoke coverage
    # Run unit test for SQL database backend
    - cd InvenTree && python3 manage.py test --settings=InvenTree.ci_mysql && cd ..
    # Run unit test for PostgreSQL database backend
    - cd InvenTree && python3 manage.py test --settings=InvenTree.ci_postgresql && cd ..
    - invoke translate
    - invoke style
    # Create an empty database and fill it with test data
    - rm inventree_default_db.sqlite3
    - invoke migrate
    - invoke import-fixtures
    # Export database records
    - invoke export-records -f data.json
    # Create a new empty database and import the saved data
    - rm inventree_default_db.sqlite3
    - invoke migrate
    - invoke import-records -f data.json

after_success:
    - coveralls