machine:
  python:
    version: 2.7.10

general:
  artifacts:
    - "reports"
    - "test_root/log"

dependencies:
  override:
    - npm install

    - pip install setuptools
    - pip install --exists-action w -r requirements/edx/paver.txt

    # Mirror what paver install_prereqs does.
    # After a successful build, CircleCI will
    # cache the virtualenv at that state, so that
    # the next build will not need to install them
    # from scratch again.
    - pip install --exists-action w -r requirements/edx/pre.txt
    - pip install --exists-action w -r requirements/edx/github.txt
    - pip install --exists-action w -r requirements/edx/local.txt

    # HACK: within base.txt stevedore had a
    # dependency on a version range of pbr.
    # Install a version which falls within that range.
    - pip install  --exists-action w pbr==0.9.0
    - pip install --exists-action w -r requirements/edx/django.txt
    - pip install --exists-action w -r requirements/edx/base.txt
    - pip install --exists-action w -r requirements/edx/paver.txt
    - pip install --exists-action w -r requirements/edx/testing.txt
    - if [ -e requirements/edx/post.txt ]; then pip install --exists-action w -r requirements/edx/post.txt ; fi

    - pip install coveralls==1.0

    # Output the installed python packages to the console to help
    # with troubleshooting any issues with python requirements.
    - pip freeze

test:
  override:
    # Run tests for the system.
    # all-tests.sh is the entry point for determining
    # which tests to run.
    # See the circleCI documentation regarding parallelism
    # to understand how multiple containers can be used to
    # run subsets of tests in parallel.
    - ./scripts/all-tests.sh:
        timeout: 900  # if a command runs this many seconds without output, kill it
        parallel: true

  post:
    - mkdir -p $CIRCLE_TEST_REPORTS/junit
    # Copy the junit results up to be consumed by circleci,
    # but only do this if there actually are results.
    # Note that the greater than zero comparison is doing a
    # string compare, but that should be fine for our purposes here.
    # Do this on each of the containers that were used in
    # the build so that all results are consolidated.
    - "if [ $(find reports -type f | wc -l) -gt 0 ] ; then cp -r reports/. $CIRCLE_TEST_REPORTS/junit ; fi":
        parallel: true

    # If you have enabled coveralls for your repo, configure your COVERALLS_REPO_TOKEN
    # as an Environment Variable in the Project Settings on CircleCI, and coverage
    # data will automatically be sent to coveralls. See https://coveralls.io/
    # If you have not set up set up coveralls then the following statement will
    # print a message but not affect the pass/fail status of the build.
    - if [ -z $COVERALLS_REPO_TOKEN ]; then echo "Coveralls token not defined."; else coveralls; fi
