Repository navigation
[CI]: Validate the built testing-library wheel in OTel compatibility lanes #863
Description
Split from PR #795 — match replay state to the service, reference commit f8ac9b4; baseline main is d7ae95571c44b18c2a2efdef9a308b1c916c5049. This issue owns one independently implementable slice of that PR. Start a focused branch from current main and port only this slice, rather than stacking on the full PR.
Problem and reproduction
The installed-wheel lanes build/test local core and OTel artifacts while the testing library can remain the published dependency. A PR changing runner behavior can therefore pass installed-package validation without exercising the testing implementation that will ship. This is a validation gap, separate from the five runtime behavior fixes in this split.
Build core, OTel, and testing wheels from the checkout, run the wheel lane, and inspect installed distributions and module paths. The testing distribution must be the built local wheel rather than an editable checkout or unrelated published version.
Scope and implementation
- Extend the existing installer package list to include the testing wheel in both lanes.
- Normal lane: install built core, OTel, and testing wheels. Legacy lane: install built core/testing while retaining the actual released OTel 1.0.0 distribution used by the rejection tests.
- Reuse
built_wheelandverify: assert a single matching wheel, noneditable installation, archive SHA-256, and installed source bytes undersite-packages; keeppip check. - Update CONTRIBUTING.md to require building all three distributions. Do not add a separate environment or duplicate artifact-verification framework.
Primary code: install_otel_test_wheels.py; supporting references: pyproject.toml, CONTRIBUTING.md, otel_lifecycle_compatibility_test.py, and otel_legacy_registration_rejection_test.py.
Acceptance criteria
- Both lanes install and verify the built testing-library wheel before executing their tests.
- The normal lane uses built core/OTel/testing; the legacy lane still imports released OTel 1.0.0 and verifies its rejection by current core.
- Missing/ambiguous wheels or mismatched installed hashes/source bytes fail validation instead of silently falling back to a published/editable package.
- Add focused installer selection/verification coverage and exercise both real installed-wheel lanes.
- Build instructions accurately name all required distributions.
Validation
From each core, OTel, and testing package directory, run hatch build. From the repository root, run:
hatch run test-wheel-otel:test
hatch run test-wheel-otel-legacy:testUse CI-pinned Hatch 1.16.5 at the reference. Run focused installer tests and relevant lint checks. The full #795 wheel validation passed on Python 3.13.17 with 805 OTel tests, 12 lifecycle cases, and four legacy rejection cases; verify the smaller infrastructure-only PR on its own artifacts rather than reusing that claim.
Independence
This change can land on main before any behavior fix: it validates whatever testing implementation the checkout builds. No new OTel callback scenarios, runtime changes, feature-branch filters, or release-version changes are needed. The temporary #795/#796 workflow target filters are stack housekeeping, not a seventh issue, and should not be copied into this independent PR. The existing test_subject_uppercase linter-unit failure noted in #795 is unrelated and is not part of this issue.
Activity