#
# Gramps - a GTK+/GNOME based genealogy program
#
# Copyright (C) 2015-2015  Doug Blank
# Copyright (C) 2016       DaAwesomeP
# Copyright (C) 2016       QuLogic
# Copyright (C) 2016       Tim G L Lyons
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

# After changing this file, check it on:
#   http://lint.travis-ci.org/

os: linux
dist: xenial
language: python
python:
 - 3.5

addons:
  apt:
    packages:
    - gir1.2-pango-1.0
    - gir1.2-gtk-3.0
    - xdg-utils
    - librsvg2-common
    - libglib2.0-dev
    - intltool
    # - python3-gobject Provided by python3-gi
    - python3-gi
    - python3-cairo
    - python3-gi-cairo
    - python3-bsddb3
    - python3-dev
    - python3-nose
    - python3-mock
    - python3-icu
    - python3-coverage
    - python3-jsonschema
    # lxml dependencies.  for merge_ref_test to work
    # - libxml2-dev
    # - libxslt1-dev
    - libxml2-utils
    - python3-lxml
    - python-libxml2
# ubuntu 14.04 requires this in addition to libxml2-dev and
# libxslt1-dev for compiling lxml.
# https://github.com/deanmalmgren/textract/issues/19
    - zlib1g-dev

stages:
  - test
  # Only execute deployment stage on tagged commits, and from our repository
  # (e.g. not PRs).
  - name: deploy
    if: tag IS PRESENT AND repo = gramps-project/gramps

env:
  global:
    - TWINE_USERNAME=__token__

jobs:
  include:
    - stage: test
      name: Run unit tests
      install:
      # The working directory is set to /home/travis/build/gramps-project/gramps
      # by the automatic git checkout.

      # Download Sean Ross-Ross's Pure Python module containing a framework to
      # manipulate and analyze python ast�s and bytecode. This is loaded to
      # /home/travis/build/gramps-project/gramps/meta
      # FIXME: This should be loaded from the release directory at
      # https://pypi.python.org/pypi/meta
      - git clone -b master https://github.com/srossross/meta

      # Build Gramps package. This seems to copy everything to
      # /home/travis/build/scripts-3.3
      - python setup.py build

      before_script:
      # Create the Gramps database directory.
      - mkdir -p ~/.gramps/grampsdb/
      # set PYTHONPATH so the directly installed module (meta) is picked up from
      # /home/travis/build/gramps-project/gramps/meta
      - export PYTHONPATH=meta
      # set module exclusions. --exclude=TestUser because of older version of mock
      # without configure_mock
      - export EXCLUDE="--exclude=TestcaseGenerator"
      #   --exclude=merge_ref_test"
      # set GRAMPS_RESOURCES for locale, data,image and documentation
      - export GRAMPS_RESOURCES=.
      # Install addons
      - mkdir -p ~/.gramps/gramps52/plugins/
      - wget https://github.com/gramps-project/addons/raw/master/gramps52/download/CliMerge.addon.tgz
      - tar -C ~/.gramps/gramps52/plugins -xzf CliMerge.addon.tgz
      - wget https://github.com/gramps-project/addons/raw/master/gramps52/download/ExportRaw.addon.tgz
      - tar -C ~/.gramps/gramps52/plugins -xzf ExportRaw.addon.tgz

      script:
      # Ignore the virtualenv entirely. Use nosetests3, python3 (3.4.0) and coverage
      # from /usr/bin. Use libraries from /usr/lib/python3.4,
      # /usr/local/lib/python3.4/dist-packages and /usr/lib/python3/dist-packages
      - nosetests3 --nologcapture --with-coverage --cover-package=gramps $EXCLUDE
        gramps
      # FIXME: This should have run from the current directory, rather than from
      # gramps, because there is some test code in that directory.

      # give an error for any trailing whitespace
      - if git --no-pager grep --color -n --full-name '[ 	]$' -- \*.py; then
          echo "ERROR - Trailing whitespace found in source file(s)";
          exit 1;
        fi

      after_success:
      # apt-get installs python3-coverage, but codecov only invokes coverage, so make
      # a link
      - sudo ln /usr/bin/python3-coverage /usr/bin/coverage

      # We have to use the bash script because the apt-get coverage does not install
      # codecov. If we used pip to install codecov, it would run inside the
      # virtualenv, and that doesn't work. Change the path to ensure that codecov
      # picks up coverage from /usr/bin, rather than from
      # /home/travis/virtualenv/python3.3.6/bin/
      - PATH=/usr/bin:$PATH bash <(curl -s https://codecov.io/bash)

    # Deploy source distribution
    - stage: deploy
      name: Deploy source distribution and wheel
      install: skip
      script:
       - python3 setup.py sdist bdist_wheel
       - python3 -m pip install twine
       - python3 -m twine upload --repository testpypi --skip-existing dist/*