Repository navigation
build(make): add integration, wheel-smoke and verify targets - #844
Merged
Merged
Conversation
There was a problem hiding this comment.
🟡 Changes recommended
Cancellation can leave smoke processes running, and integration can succeed after Azurite exits unexpectedly.
2 open issues
What changed in this PR
Adds local validation entry points for #811, covering real-host integration and installed-wheel smoke checks while preserving make check-all as the offline gate.
Changes:
- Adds
integration,wheel-smoke, and sequential, fail-fastverifytargets. - Introduces a shared Bash runner for service startup, temporary environments, smoke checks, and cleanup.
- Documents prerequisites and adds seven command-contract regression cases.
| File | Description |
|---|---|
tests/test_make_smoke_contract.py |
Tests target discovery, lane ordering, and fail-fast behavior. |
scripts/local-smoke.sh |
Implements real-host integration and isolated wheel smoke checks. |
Makefile |
Exposes the three new validation targets. |
docs/development.md |
Documents command contracts, prerequisites, and setup. |
CONTRIBUTING.md |
Updates contributor validation commands and links to smoke setup. |
Review effort: Balanced
…ERM during blocking commands
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Summary
Add the three missing local Makefile entry points for #811 on a branch based directly on current main, not on #843. Keep
make check-allunchanged as the offline gate.Changes
make integrationreusestests/host_smoke, starts a real Functions host and Azurite on four runtime-selected free ports, checks custom-name/spec-documented/docs routes, and runs the seven real-host route tests withHOST_SMOKE_BASE_URL. Missing prerequisites fail explicitly; no installer or silent skip is introduced.wait, so a signal fires the trap immediately instead of after the command. The runner also checks Azurite liveness before and after the route tests, since those routes are HTTP-only and would pass with a dead Azurite. The npx fallback uses--no-install.make wheel-smokebuilds a candidate wheel, installs runtime dependencies into a throwaway venv outside the checkout, checks dependencies and import provenance, and generates CI's minimal artifact-smoke spec. All scratch files are removed on exit.make verifyruns check, test, integration, strict docs, wheel-smoke sequentially and fails fast. New targets are phony and listed by existing help.verifylane order, discoverability, fail-fast at each lane, the Azurite liveness checks, and TERM cleanup during a hung blocking command.No workflows, required contexts, release gates, public package code, or modules under
tools/changed.Type of Change
Checklist
make check-alland all checks pass (including tests and at least 95% coverage)Validation
Passed:
make check-all PYTHON=python3.14(aggregate, including Bandit) ondde5eda: 1,645 passed, 30 optional-dependency skips.hatch, the previous script left an orphanedsleepand its scratch directory after SIGTERM; the fixed one exits 143 and leaves nothing. Both new regression tests fail against the previous script.make format-checkmake lint(strict mypy: 107 source/test files and six security-tool files)make lint-workflowsmake test(earlier run, before the review fixes): 1,555 passed, 30 optional-dependency skips, 22 deselected; coverage 95.14%, five pre-existing warningsmake docs(strict)make security(Bandit: zero blocking findings)make buildmake integration PYTHON=python3.11: real host/Azurite; seven passed, five deselectedPIP_NO_INDEX=1 PIP_FIND_LINKS=<temporary-local-wheelhouse> make wheel-smoke PYTHON=python3.11: dependency check and isolated installed-wheel import/spec succeeded. Dependencies were repacked from the existing local cache; no package-index access was used for this run.pgrep -af 'func|azurite'after cleanup showed only the processes present before this task; unrelated existing processes were not stopped. Task-created temporary wheelhouse, provisioning venv and failed-probe leftovers were removed.bash -n, ShellCheck andgit diff --checkpassed.Limitations / not claimed:
make -j4 verify PYTHON=python3.11withPIP_NO_INDEX=1stopped correctly at the test lane: existing artifact-metadata tests create isolated build environments, and the temporary wheelhouse lacked build-backend dependencies (first hatchling, then tomlkit). The full aggregate did not complete; successful individual lanes above are the validation evidence. No source change was made to hide the provisioning failure.Related Issues
Refs #811
Acceptance audit against main plus this PR plus open #843:
Exactly one acceptance-contract gap remains after combining these changes: #811 explicitly includes Bandit scope and workflow lints in
make checkitself; main keeps those inmake check-all, and neither this PR nor #843 changes that. Resolve that discrepancy (implementation or an explicit issue-contract decision) before closing #811. This PR therefore does not use a closing keyword.Review Evidence
6fe2974; supplemental helper review did not complete and was cancelled; review is inconclusive. No independent approval is claimed.