Ctrl K
ComunidadGuías…

codecov.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
coverage:
  status:
    project:
      default:
        # Allow small fluctuations without failing the status check.
        # target: auto sets the target to the current coverage; the
        # threshold gives a small tolerance so a 0.02% blip (e.g. from
        # adding config defaults) doesn't break the check.
        target: auto
        threshold: 1%
    patch:
      default:
        # New/changed code in a PR must be at least 80% covered — a standard
        # floor that catches genuinely untested features while accepting that
        # defensive error branches (sync/close/chmod failures, OS-specific
        # dispatch, rollback-also-fails paths) are impractical to exercise
        # without fragile tests. The project status above (90%+) remains the
        # primary overall gate; this is a real (non-informational) floor so a
        # PR that ships mostly-untested code still fails.
        target: 80%

# Paths excluded from both project and patch coverage. These are either
# never compiled into the coverage run or are generated/vendored — counting
# them as diff lines produces false patch-coverage failures.
ignore:
  # Build-tagged e2e suites (//go:build e2e / live). `go test -cover` does
  # not compile them, so they never appear in coverage.out; without this
  # ignore, adding an e2e test file fails the 80% patch gate on every PR.
  - "test/e2e/**"
  # Custom-tagged platform stubs (non-_GOOS-suffixed //go:build !unix files).
  # Compiled only on non-Unix hosts; no coverage-upload job can ever hit them,
  # so their diff lines permanently failed the server-side patch gate (see the
  # earlier e2e/desktop entries for precedent).
  - "internal/history/restore_source_identity_other.go"
  - "internal/history/restore_source_nofollow_other.go"
  - "internal/downloader/restore_source_identity_other.go"
  - "internal/downloader/restore_source_nofollow_other.go"
  # //go:build windows companions to the stubs above — compiled only on
  # Windows hosts, so no coverage-upload job ever hits them either.
  - "internal/history/restore_source_nofollow_windows.go"
  - "internal/downloader/restore_source_nofollow_windows.go"
  # //go:build windows leg of the wave-30 publish-with-reverify helper
  # (PublishStagedBound): MoveFileEx cannot rename an open Go handle, so the
  # Windows leg keeps a prove-close-publish-reverify posture that compiles
  # only on Windows — no ubuntu coverage-upload job ever hits those lines.
  # The shared interface + POSIX recovery legs ARE fully covered
  # (publish_staged_bound.go / publish_staged_bound_unix.go).
  - "internal/fsutil/publish_staged_bound_windows.go"
  # The non-Linux variants of the wave-38 bound take-aside kernel identity
  # extractor (bound_take.go): //go:build windows (other) and darwin-family
  # (narrow unix) files — the ubuntu coverage-upload job compiles only the
  # posix variant.
  - "internal/fsutil/bound_identity_narrow_unix.go"
  - "internal/fsutil/bound_identity_other.go"
  # The Windows handle-route twin of the admission-time object identity
  # capture (BoundObjectIdentity — volume serial + file index via
  # GetFileInformationByHandle): //go:build windows, so the ubuntu
  # coverage-upload job never compiles these lines; the POSIX wrapper legs of
  # the same helper ARE covered through workflow/organizer/fsutil tests.
  - "internal/fsutil/bound_identity_windows.go"
  # The Windows (//go:build windows) delete-shared source open of the
  # verified composites (openVerifiedSource): Go's os.Open omits
  # FILE_SHARE_DELETE, so the OsFs leg runs raw CreateFile — compiled only
  # on Windows hosts. The POSIX passthrough twin and every caller ARE
  # covered (verified_source_open_posix.go / move_verified.go).
  - "internal/fsutil/verified_source_open_windows.go"
  # Desktop-only build-tagged file (//go:build desktop). The real Wails
  # runner pulls in per-platform webview headers and must not enter the
  # default build/test path; without this ignore, its new lines all count
  # as patch misses and fail the 80% gate. The non-tagged companion logic
  # (paths.go, server.go, redirector.go, app_stub.go) IS covered.
  - "internal/desktop/app.go"
  # swag-generated API docs + //go:embed wrappers (no testable logic).
  - "docs/swagger/**"
  # //go:embed wrapper for the built frontend; the frontend has its own
  # vitest suite, not Go coverage.
  - "web/**"
  # Vendored deps that ship Go files (e.g. flatted/golang).
  - "**/node_modules/**"
  # mockery-generated mocks — regenerated wholesale on every interface
  # change; their bodies have no testable behavior (CI's make check-mocks
  # guards freshness instead).
  - "internal/mocks/**"

comment:
  layout: "reach,diff,flags,files"
  behavior: default
  require_changes: false