codecov.yml
Rama main · réplica de lectura del repositorio original.
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