test: raise core-package unit coverage to 90% #98

Merged
benvin merged 25 commits from benvin/unit-coverage-90 into master 2026-07-03 14:31:25 +10:00

25 Commits

Author SHA1 Message Date
unkinben 35719984e6 test: generate a minimal RPM in pure Go instead of a committed fixture
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
Removes the committed .rpm binary (gitignored, so it broke clean checkouts)
and the rpmbuild dependency. testsupport.MinimalRPM builds a valid-enough
RPM header in-memory for cavaliergopher/rpm to parse, used by both the rpm
provider test and the full-stack server repodata test.
2026-07-03 14:25:30 +10:00
unkinben 1009bc7c69 test: database closed-db error paths + pure goproxy/generic/helm/repotype gaps
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline failed
2026-07-03 13:55:30 +10:00
unkinben 2ae12d9aef test: local upload store-failure branches (kill minio mid-test) 2026-07-03 13:53:13 +10:00
unkinben 1d97628fbd test: rpm serve errors, terraform rewriteDownloadURL, pypi merger, s3 stat, pattern-validation 400 2026-07-03 13:51:17 +10:00
unkinben 3e590bea2b test: classifier branches, docker provider, pypi index serving, bearer/checkUpstream variants 2026-07-03 13:48:27 +10:00
unkinben 053fbd70e2 test: provider-not-found and missing-blob download error branches 2026-07-03 13:45:19 +10:00
unkinben 03a29f2c0a test: ttlFor, HEAD 500/cached-index, rpm full-metadata xml, generic content-type 2026-07-03 13:42:17 +10:00
unkinben cfd0bae515 test: server Run, upstream 500/401 branches, virtual dead members, local DB accessor 2026-07-03 13:38:49 +10:00
unkinben 6029f19b86 test: proxy HTTP error branches (403/502) + revalidation upstream error 2026-07-03 13:35:40 +10:00
unkinben 2658167346 test: circuit breaker states, bearer cache-hit, blob dedup, terraform/storage branches 2026-07-03 13:33:24 +10:00
unkinben 4ec3d7b59e test: v2 handler error paths (closed db), v1 scheme, rpm content-type/flag helpers 2026-07-03 13:29:23 +10:00
unkinben 1842042241 test: RunOnListener, local pypi virtual merge, v2 download, waitForStore/Unwrap 2026-07-03 13:25:54 +10:00
unkinben 6bcda813fd test: probe branches, local upload errors, upstream errors, rpm/gc error paths 2026-07-03 13:22:24 +10:00
unkinben 3d80837539 test: bearer-token flow (engine) + docker/head/virtual/probe/events (server) 2026-07-03 13:18:51 +10:00
unkinben 915ec910c8 test: expand server test (pypi/rpm local, object evict, validation errors) 2026-07-03 13:15:52 +10:00
unkinben ba4a0e3b43 test: gc sweep integration (delete old orphan, empty no-op) 2026-07-03 13:11:55 +10:00
unkinben 21579c1ec0 test: proxy engine edge cases + storage/server minio retry
Cover denied, HEAD (cached/uncached/denied), stale-on-error, circuit-open,
and mutable revalidation (304) paths. proxy ~8->58%.
2026-07-03 13:11:09 +10:00
unkinben 696a1955b3 test: wait for minio readiness endpoint (avoid init-race flake) 2026-07-03 13:05:40 +10:00
unkinben a6830d6d9f test: wait for postgres readiness log twice (avoid connection-reset flake) 2026-07-03 13:03:40 +10:00
unkinben 6ba78caf4c test: full-stack server integration test
Drives the whole HTTP API against real Postgres/Redis/MinIO + a mock
upstream: health, remote CRUD, proxy miss/hit, local upload/download,
virtual helm merge, objects, stats, probe. Exercises server + api/v1 +
api/v2 + proxy + virtual engines together.
2026-07-03 12:59:39 +10:00
unkinben 5e7500ed04 test: storage (MinIO) and cache (Redis) integration tests
storage 0->79%, cache 0->92%, via the testsupport container harness.
2026-07-03 12:58:00 +10:00
unkinben bf31714e08 test: testcontainers harness + database integration tests
Add internal/testsupport (Postgres/Redis/MinIO container helpers, Ryuk
disabled) and full database coverage: remotes, artifacts/blobs, local
files, virtuals, stats, rpm metadata, orphan/cold cleanup. database
0->83%.
2026-07-03 12:55:51 +10:00
unkinben db663e00d7 test: cover virtual mergers and pkg/client
virtual mergers (helm/pypi merge, dedup, URL rewriting, registry) and the
API client (all endpoints via httptest, error/decode paths). pkg/client
0->96%, virtual 49->57%.
2026-07-03 12:45:49 +10:00
unkinben b6091c859d test: cover rpm provider (metadata parse, repodata generation)
rpm 2.7% -> 83.6%, pure-go via a real RPM testdata fixture and fake
BlobReader/MetadataStore/RPMMetadataReader implementations.
2026-07-03 12:43:21 +10:00
unkinben 428c6d0e97 test: unit tests for pure provider/config/auth packages
First increment toward 90% core-package coverage. Adds Docker-free unit
tests taking these packages to full or near-full coverage:
- provider/npm, provider/alpine, provider/puppet: 100%
- provider/pypi: index generation via a fake FileStore, upload validation,
  name parsing, classification, rewrite
- config: defaults, overrides, DSN, invalid port
- auth: basic header with/without credentials

Infra-backed packages (database, storage, cache, proxy engine, api
handlers, server) still need the testcontainers batch to reach 90%.
2026-07-03 12:35:05 +10:00