##########################################################################
# This will allow the job to run whenever code events trigger it.
##########################################################################
.only_code:
  only:
    - master
    - branches
    - merge_requests
    - pushes
  except:
    - schedules

##########################################################################
# Define a template for all the unit tests, since each one is run in a separate
# job to make the display nicer.
##########################################################################
.unit_test:
  stage: test
  when: on_success
  # We define this using a before script because GitLab cannot merge variable
  # definitions across inheritance (so the variables block from this would disappear)
  before_script:
    - export BOOST_TEST_LOGGER='JUNIT,all,test_results.${TEST}.xml:HRF,warning'
    - export CTEST_OUTPUT_ON_FAILURE=1
  script:
    - cd build/linux/qa
    - ctest -R qa_${TEST}
  # GitLab supports displaying the results in the GUI through JUNIT artifacts
  # (https://docs.gitlab.com/ee/ci/junit_test_reports.html)
  # so we upload the JUNIT results. Note that there is a bug with how paths
  # are processed in the junit report (https://gitlab.com/gitlab-org/gitlab/issues/23835)
  # so we can't use a glob and have to list out each hierarchy separately.
  artifacts:
    reports:
      junit:
        - build/linux/qa/*/*.xml
        - build/linux/qa/*/*/*.xml