Repository navigation
Conversation
Builds and installs the wheel on windows-latest, runs the installed-package smoke test and a few fast unit tests (CLI help, console encoding). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014c5XskkF73QCnmajmCAq8j Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
781a5c5 to
67548b4
Compare
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #89 +/- ##
==========================================
+ Coverage 90.26% 90.27% +0.01%
==========================================
Files 206 206
Lines 24289 24347 +58
Branches 3906 3921 +15
==========================================
+ Hits 21924 21980 +56
- Misses 1700 1702 +2
Partials 665 665 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
🟡 Changes recommended
The new job needs local-CI integration to prevent its wheel-install argument from breaking make dev.
1 open issue
What changed in this PR
Adds a lightweight Windows compatibility check for the packaged application without running the full test suite.
Changes:
- Adds a GitHub-hosted Windows job using Python 3.13.
- Builds and installs the wheel, then runs the installed-package smoke test.
- Runs focused CLI help and console encoding tests.
| File | Description |
|---|---|
.github/workflows/ci.yml |
Adds the Windows build, installation, and smoke-test job. |
Review effort: Balanced
| run: | | ||
| python -m pip install --upgrade pip build | ||
| python -m build --wheel --outdir "$RUNNER_TEMP/dist" | ||
| pip install "$RUNNER_TEMP"/dist/*.whl |
There was a problem hiding this comment.
Fixed in commit 79e1fd9. Added windows-smoke to both ISOLATED and NEEDS_NETWORK in ci_local.py, matching package-smoke treatment to ensure the job runs in an isolated venv when ci_local is executed. Also added regression test test_windows_smoke_is_registered_as_isolated() and test_isolated_job_ids_match_real_jobs() to catch future renames.
There was a problem hiding this comment.
Already in 79e1fd9: windows-smoke is in both ISOLATED and NEEDS_NETWORK. Checked on the branch; no further change.
…pansion of wheel wildcard The windows-smoke job builds and installs packages like package-smoke, but ci_local.py was not treating it as isolated. This caused make dev to pass $RUNNER_TEMP/dist/*.whl as a literal path to uv pip install instead of expanding it, breaking environment setup. Add windows-smoke to both ISOLATED and NEEDS_NETWORK sets to match package-smoke treatment. Add regression tests: test_isolated_job_ids_match_real_jobs() validates that all ISOLATED jobs have pip install steps, and test_windows_smoke_is_registered_as_isolated() specifically verifies windows-smoke is registered. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
antonwolfy
left a comment
There was a problem hiding this comment.
Review at 79e1fd9. The job and the ci_local.py registration are right: windows-smoke is now isolated like package-smoke, and tool_specs() no longer returns the literal wheel glob. The regression test does not guard that property, and the docs around the job are now stale. Inline comments cover both.
What I ran, on a Linux review host at 79e1fd9:
make ci-local: 23 passed, 0 failed, 4 skipped (docker,test-latest,docs.yml:deploy, semgrep). 5181 tests passed, 1 skipped. Thewindows-smokesteps ran in the isolated venv and passed.zizmoron the workflows: no findings.- Mutation check on
ci_local.py: droppingwindows-smokefrom onlyISOLATED, or from onlyNEEDS_NETWORK, failstest_windows_smoke_is_registered_as_isolated(1 failed, 17 passed).test_isolated_job_ids_match_real_jobsstays green in both runs.
Checked, no issues
- Pins and permissions: the action SHAs match
package-smoke,persist-credentials: falseis set, and the workflow-levelpermissionsand concurrency apply. - Changelog: the PR touches only
.github/,scripts/andtests/, so no fragment is needed. - Windows steps: I could not run them. By reading,
smoke_installed.pyis portable (pathlib, explicit UTF-8), and the lock file carries thecoloramaandtzdataWindows markers.
The test was asserting that windows-smoke is in the constants, but the actual bug it guards against is tool_specs() returning unescaped shell variables or wildcards like $RUNNER_TEMP/dist/*.whl. Changed to assert tool_specs() output contains no $ or * characters. Also update ci.yml header comment to document that windows-smoke is an exception to the rule that PR checks run on intel-ubuntu-latest. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
There was a problem hiding this comment.
Warning
Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.
Copilot review overview
5 open issues
Because the job-wideworking-directoryisdokimi, thepytestinvocation will run from inside… · New Because the job-wideworking-directoryisdokimi, thepytestinvocation will run from inside… · New This assertion is overly broad:tool_specs()aggregates pip args across workflows, and*(and,… · New Register windows-smoke in local CI job and tool specifications Usepython -m pip install ...consistently instead of invokingpipdirectly. This avoids edge… · New
Review effort: Lite
…hten test assertion Three improvements to the windows-smoke job: 1. Use `python -m pip` consistently instead of invoking `pip` directly, avoiding edge cases where `pip` resolves to a different interpreter than the Python configured by actions/setup-python. 2. Run pytest from a clean directory ($RUNNER_TEMP) instead of from inside the repo checkout (dokimi/), ensuring imports resolve to the installed wheel rather than the local working tree. 3. Tighten the test assertion to specifically check for $RUNNER_TEMP rather than any $ or *, making it more focused on the actual regression (windows-smoke not registered in ISOLATED). Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com> Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>
There was a problem hiding this comment.
🟢 Approval recommended
The focused CI changes address prior feedback and have no identified blocking issues, though Windows execution remains unverified.
4 resolved since last review
This assertion is overly broad:tool_specs()aggregates pip args across workflows, and*(and,… Because the job-wideworking-directoryisdokimi, thepytestinvocation will run from inside… Because the job-wideworking-directoryisdokimi, thepytestinvocation will run from inside… Usepython -m pip install ...consistently instead of invokingpipdirectly. This avoids edge…
Review effort: Balanced
antonwolfy
left a comment
There was a problem hiding this comment.
Review at 91f269b. The ci.yml header comment is fixed and the regression test now looks at tool_specs() output. One of the new changes does not do what its commit says: the pytest step still imports dokimi from the checkout.
What I ran, on a Linux review host at 91f269b:
make ci-local: 23 passed, 0 failed, 4 skipped (docker,test-latest,docs.yml:deploy, semgrep). Thewindows-smokesteps ran in the isolated venv.- Mutation runs on
test_ci_local.py: removingwindows-smokefromISOLATEDonly failstest_windows_smoke_is_registered_as_isolated. Removing it fromNEEDS_NETWORKonly leaves all 18 tests green. - A probe test run from a clean directory with the same pytest arguments, with the Windows runner itself not run. It shows the checkout is on
sys.path, see the inline comment.
Still open from my earlier review:
dokimi/docs/architecture.md:346(outside this diff): theci.ymljob list still stops atpackage-smoke, with nowindows-smoke.dokimi/scripts/ci_local.py:19(outside this diff): the docstring still says the jobs that install the package are "(package-smoke)", whileISOLATEDnow holds two.dokimi/tests/test_ci_local.py:344(outside this diff):test_isolated_job_ids_match_real_jobsstill accepts anypip installsubstring, sopip install -r xsatisfies it.
Checked, no issues
- Local runner:
windows-smokeis in bothISOLATEDandNEEDS_NETWORK. With the registration removed fromISOLATED, the test fails and shows$RUNNER_TEMP/dist/*.whlin the specs. - pytest config from another cwd: with absolute file arguments, pytest still picks
dokimi/pyproject.tomlas the ini file, so--allow-hosts, the timeout and the filters apply. Both test files pass (89 passed). - Lock file:
pytestand the plugins are inrequirements.lock.txtwith no platform markers.coloramaandtzdatacarry the win32 markers. - Changelog: the PR touches only
.github/,scripts/andtests/, so no fragment is needed.
…utput The fast tests ran from RUNNER_TEMP, but conftest puts the checkout on sys.path, so they never exercised the installed wheel. The test that guards ISOLATED now checks every tool_specs() entry for unexpanded $ or *, which catches any job, and isolated jobs must also be network-gated. The architecture doc and ci_local docstring list windows-smoke. Signed-off-by: Nikolay Petrov <nikolay.a.petrov@intel.com>


Builds and installs the wheel on windows-latest, runs the installed-package smoke test and a few fast unit tests (CLI help, console encoding).
Claude-Session: https://claude.ai/code/session_014c5XskkF73QCnmajmCAq8j
Summary
Adds a windows-smoke job to ci.yml on windows-latest. It’s a basic check that dokimi works on Windows, not full validation: it builds and installs the wheel, runs scripts/smoke_installed.py against the installed package, and runs a few fast unit tests (test_cli_help.py, test_console_encoding.py). It uses a GitHub-hosted runner because the Intel pool has no Windows runners. No changelog fragment is needed because the change touches CI only.
Changes
Risk
Testing
Checklist
pytestpassesruff,mypy, and schema checks pass.github/.licenserc.yaml)