Pytest: fix the build-as-test mode on Windows#20641
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull Request Overview
This PR fixes the experimental build-as-test mode for pytest on Windows systems by addressing an issue where native_test couldn't properly wrap a py_binary target due to .exe suffix mismatches on Windows.
Key changes:
- Replaces
native_testwithpy_testfor the test wrapper - Refactors common installer arguments into a shared dictionary to avoid duplication
This mode (enabled with `--codeql=build-as-test` or setting `PYTEST_CODEQL=build-as-test` in the environment) is an experimental mode that makes the pytest dist installation run as a test. This allows to avoid running the installation in case nothing changed in the dist, leveraging bazel's test caching mechanism, and accelrating the dev loop when working on integration test code. This mode might become the default for devs in the future. Up until now, this mode was only working on POSIX systems. This commit fixes it on Windows. The issue was `native_test` being unable to wrap a `py_binary` target because of an `.exe` suffix mismatch. Turning the `native_test` into a full-fledged `py_test` solves the issue.
5a697ae to
b6aee67
Compare
esbena
approved these changes
Oct 27, 2025
Contributor
esbena
left a comment
There was a problem hiding this comment.
sounds right, but without the PR body I would never have guessed that this was a windows fix.
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.
This mode (enabled with
--codeql=build-as-testor settingPYTEST_CODEQL=build-as-testin the environment) is an experimental mode that makes the pytest dist installation run as a test. This allows to avoid running the installation in case nothing changed in the dist, leveraging bazel's test caching mechanism, and accelrating the dev loop when working on integration test code. This mode might become the default for devs in the future.Up until now, this mode was only working on POSIX systems. This commit fixes it on Windows. The issue was
native_testbeing unable to wrap apy_binarytarget because of an.exesuffix mismatch. Turning thenative_testinto a full-fledgedpy_testsolves the issue.