Skip to content

test: coverage push 53.7% -> 86.5% (awesome-go ready)#63

Merged
kolkov merged 6 commits into
mainfrom
chore/coverage-push-80
Mar 24, 2026
Merged

test: coverage push 53.7% -> 86.5% (awesome-go ready)#63
kolkov merged 6 commits into
mainfrom
chore/coverage-push-80

Conversation

@kolkov

@kolkov kolkov commented Mar 24, 2026

Copy link
Copy Markdown
Contributor

Summary

Raise project-wide test coverage from 53.7% to 86.5% — exceeding the awesome-go threshold of 80%.

11,200+ lines of enterprise-grade tests across 12 packages, written in 3 waves.

Wave 1 — Near-target packages

Package Before After
internal/parser 79.6% 83.0%
internal/fonts 72.3% 84.7%
builder/internal 73.5% 92.3%
creator/ 73.6% 83.3%

Wave 2 — Mid-range packages

Package Before After
internal/encoding 48.7% 91.3%
internal/tabledetect 45.9% 86.9%
internal/document 42.1% 98.4%

Wave 3 — Low-coverage packages

Package Before After
gxpdf (root) 31.0% 86.5%
export/ 34.8% 84.5%
internal/application/forms 9.3% 84.0%
internal/extractor 38.4% 83.8%
internal/writer 38.5% 82.8%

Production fix

  • Extracted filterFlateDecode constant in internal/extractor (goconst lint fix)

All non-example packages now above 80%

Test plan

  • go test ./... — all 21 packages pass
  • golangci-lint run — 0 issues
  • go vet — clean
  • No production code changes (except one goconst fix)
  • CI pipeline

kolkov added 5 commits March 24, 2026 13:14
… to 82%+

- internal/parser: 79.6% -> 83.0% (xref edge cases, CMap parsing, error recovery)
- internal/fonts: 72.3% -> 84.7% (TTF table parsing errors, subsetting, cmap format 12)
- builder/internal: 73.5% -> 92.3% (CJK line break, font resolution, renderer paths)
- creator/: 73.6% -> 83.3% (AddText variants, shapes, gradients, paths, annotations)

3,085 lines of new tests, table-driven, enterprise-grade
- internal/encoding: 48.7% -> 91.3% (Flate/DCT/ASCII85/LZW round-trips, predictor filters)
- internal/tabledetect: 45.9% -> 86.9% (whitespace analysis, valley detection, column boundaries)
- internal/document: 42.1% -> 98.4% (annotations, form fields, page operations, nil safety)
…o 82%+

- gxpdf (root): 31% -> 86.5% (Open, Extract, FormField wrappers, Table wrappers)
- export/: 34.8% -> 84.5% (CSV/JSON/Excel round-trips, edge cases)
- internal/application/forms: 9.3% -> 84.0% (field parsing, flattening, read/write)
- internal/extractor: 38.4% -> 83.8% (text extraction, content stream ops)
- internal/writer: 38.5% -> 82.8% (content streams, font objects, image xobjects)

PROJECT-WIDE COVERAGE: 53.7% -> 86.5%
5,046 lines of new tests
- goconst: extract filterFlateDecode constant in extractor (production fix)
- staticcheck: remove unnecessary fmt.Sprintf in forms test
- unused: remove dead paletteImage type in encoding test
- Fix syntax error from sed replacement in forms test
@codecov

codecov Bot commented Mar 24, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

…cov OIDC

- gofmt: format 3 test files missed locally
- goconst: extract colorSpaceDeviceRGB constant in extractor
- goconst: use MethodLattice.String() in root test
- staticcheck SA5011: use t.Fatal instead of t.Error before pointer deref
- codecov: file -> files (v5 deprecated parameter)

golangci-lint: 0 issues across all packages
@kolkov kolkov merged commit e12e886 into main Mar 24, 2026
8 checks passed
@kolkov kolkov deleted the chore/coverage-push-80 branch March 24, 2026 12:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant