dist: trusty
sudo: required
language: python
branches:
  only:
    - master
before_install:
  # This needs be sourced as it sets various env vars
  - . ./tools/ci/before_install.sh
install:
  - ./tools/ci/install.sh
matrix:
  # The use of `if` conditionals to exclude jobs from master should align with
  # jobs unconditionally listed by `./wpt test-jobs`, regardless of affected
  # paths. (The reverse is not true, as the manifest job could run on PRs too.)
  fast_finish: true
  include:
    - name: "tag master + upload manifest"
      if: type = push AND branch = master
      os: linux
      python: "2.7"
      env:
        - JOB=manifest_upload SCRIPT=tools/ci/ci_manifest.sh
        - secure: "FrlMkMZiwggnhJbLiLxZ4imtXxuzFNozty94g1mneMPEVLrnyhb6c/g2SwN37KKU0WSDlGTz26IYnFvo1ftfSOx+sjRz0HqwW7JnrXULKYo7jiPttIcmeJxlSVeW9yS4blbLaBakytHjSnsf+za7bAaf1aS7RRAtAINgifA6Chg="
      deploy:
        provider: releases
        api_key:
          secure: "EljDx50oNpDLs7rzwIv+z1PxIgB5KMnx1W0OQkpNvltR0rBW9g/aQaE+Z/c8M/sPqN1bkvKPybKzGKjb6j9Dw3/EJhah4SskH78r3yMAe2DU/ngxqqjjfXcCc2t5MKxzHAILTAxqScPj2z+lG1jeK1Z+K5hTbSP9lk+AvS0D16w="
        file: $WPT_MANIFEST_FILE.gz
        skip_cleanup: true
    - name: "lint"
      # lint is run both on master and on PRs
      os: linux
      python: "2.7"
      env: JOB=lint SCRIPT=tools/ci/ci_lint.sh
    - name: "update-built-tests.sh"
      if: type = pull_request
      os: linux
      python: "2.7"
      env: JOB=update_built SCRIPT=tools/ci/ci_built_diff.sh
    - name: "build-css-testsuites.sh"
      if: type = pull_request
      os: linux
      python: "2.7"
      env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
    - name: "stability (Firefox Nightly)"
      if: type = pull_request
      os: linux
      python: "2.7"
      addons:
        apt:
          packages:
            - libnss3-tools
      env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
    - name: "stability (Chrome Dev)"
      if: type = pull_request
      os: linux
      python: "2.7"
      addons:
        apt:
          packages:
            - libappindicator1
            - fonts-liberation
      env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
    - name: "tools/ unittests (Python 2)"
      if: type = pull_request
      os: linux
      python: "2.7"
      env: JOB=tools_unittest TOXENV=py27 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
    - name: "tools/ unittests (Python 3)"
      if: type = pull_request
      os: linux
      python: "3.6"
      env: JOB=tools_unittest TOXENV=py36 HYPOTHESIS_PROFILE=ci SCRIPT=tools/ci/ci_tools_unittest.sh
    - name: "tools/wpt/ tests"
      if: type = pull_request
      os: linux
      python: "2.7"
      addons:
        apt:
          packages:
            - libnss3-tools
      env: JOB=wpt_integration TOXENV=py27 SCRIPT=tools/ci/ci_wpt.sh
    - name: "resources/ tests"
      if: type = pull_request
      os: linux
      python: "2.7"
      env: JOB=resources_unittest TOXENV=py27 SCRIPT=tools/ci/ci_resources_unittest.sh
    - name: "infrastructure/ tests"
      if: type = pull_request
      os: linux
      python: "2.7"
      env: JOB=wptrunner_infrastructure SCRIPT=tools/ci/ci_wptrunner_infrastructure.sh
      addons:
        apt:
          packages:
            - libnss3-tools
            - libappindicator1
            - fonts-liberation
  exclude:
    - env:  # exclude empty env from the top-level above
  allow_failures:
    - env: JOB=build_css SCRIPT=css/build-css-testsuites.sh
    - env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=firefox:nightly
    - env: JOB=stability SCRIPT=tools/ci/ci_stability.sh PRODUCT=chrome:dev
script:
  - ./tools/ci/run.sh
cache:
  directories:
    - $HOME/.cache/pip
    - $HOME/meta
notifications:
  email:
    on_success: never
    on_failure: always
