# Setting coverage targets per flag
coverage:
  status:
    project: false
    patch:
      frontend:
        # codecov will not fail status checks for master
        only_pulls: true
        informational: false # Fail the check
        target: 60%
        flags:
          - frontend
      backend:
        # codecov will not fail status checks for master
        only_pulls: true
        informational: false # Fail the check
        target: 90%
        flags:
          - backend
  ignore:
    - src/*/migrations/
    - src/bitfield/
    - src/sentry/debug/
    - src/sentry/lint/
    - src/sentry/runner/
    - src/social_auth/
    - static/app/routes.tsx
    - static/app/**/*.stories.tsx
    - tests/

component_management:
  individual_components:
    # Profiling team components
    - component_id: 'profiling_views'
      name: 'Profiling Views'
      paths:
        - 'static/app/views/profiling/**'
    - component_id: 'profiling_components'
      name: 'Profiling Components'
      paths:
        - 'src/sentry/static/sentry/app/components/profiling/**'
    - component_id: 'profiling_utils'
      name: 'Profiling Utils'
      paths:
        - 'src/sentry/static/sentry/app/utils/profiling/**'

flags:
  frontend:
    paths:
      - 'static/app/'
    carryforward: true
    # FE uploads 4 coverage reports. This property ensures codecov waits
    # for all reports to be uploaded before creating a GitHub status check.
    # NOTE: If you change this, make sure to change `comment.after_n_builds` below as well.
    after_n_builds: 4
  backend:
    paths:
      - 'src/sentry/**/*.py'
    carryforward: true
    # Do not send any status checks until n coverage reports are uploaded.
    # NOTE: If you change this, make sure to change `comment.after_n_builds` below as well.
    after_n_builds: 18

# https://docs.codecov.com/docs/flags#two-approaches-to-flag-management
flag_management:
  individual_flags:
    - name: smart-tests
      # Prevents the upload with this flag from being copied accross commits
      carryforward: false
      # https://docs.codecov.com/docs/getting-started-with-ats#step-2-configure-the-codecovyml-for-automated-test-selection
      # carryforward_mode: "labels"
      statuses:
        # https://github.com/codecov/shared/blob/main/shared/validation/user_schema.py#L310
        - type: 'patch'
          only_pulls: true

# Read more here: https://docs.codecov.com/docs/pull-request-comments
comment:
  # This is the addition of carry forward builds and fresh builds, thus, it's the addition
  # of the FE and BE builds
  after_n_builds: 22
  layout: 'diff, files'
  # Update, if comment exists. Otherwise post new.
  behavior: default
  # Comments will only post when coverage changes. Furthermore, if a comment
  # already exists, and a newer commit results in no coverage change for the
  # entire pull, the comment will be deleted.
  require_changes: true
  require_base: true # must have a base report to post
  require_head: true # must have a head report to post

cli:
  # This would be used when uploading the ats results
  # But we will not be doing that yet
  plugins:
    pycoverage:
      report_type: 'json'
    compress-pycoverage:
      file_to_compress: '.artifacts/python.coverage.json'
      # We don't want to upload the original coverage report by accident
      # Because it's too big
      delete_uncompressed: true
  runners:
    pytest:
      # Same args used for the backend tests
      # See Makefile:135
      collect_tests_options:
        - 'tests'
        - '--ignore=tests/acceptance'
        - '--ignore=tests/apidocs'
        - '--ignore=tests/js'
        - '--ignore=tests/tools'