Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix tests on macOS #513

Merged
merged 14 commits into from
Oct 4, 2020
Merged

Fix tests on macOS #513

merged 14 commits into from
Oct 4, 2020

Conversation

itsayellow
Copy link
Contributor

Describe the bug

Closes #348 Closes #488

This PR moves the pre-building of wheels into the pip cache, from our GitHub workflow into our nox session. This enables our tests to be able to be run reliably from both CI and manually from a macOS computer. Previously, depending on the pip cache, certain install tests would fail when run manually on a macOS computer.

Before running our pytest tests, the code only builds certain wheels but does not install the packages. This is enough to put the wheels for these packages into the pip cache (pip wheel adds its wheels to the pip cache).

Longer Explanation

Because we remove the entire system PATH and replace it with only the pipx bin directory inside of tests/conftest.py, on macOS building certain wheels that require C compilation can fail. Compiling on macOS seems to require /usr/bin in the system PATH.

Building wheels for certain packages like regex and argon2-cffi can thus fail if they are attempted to be built from within our pytest tests. Since these libraries are dependencies of some of our test installation packages, our install tests can fail if these dependency wheels are not already in the pip cache.

This dependency on the pip cache can lead to seemingly non-deterministic failures (see #348, #488) until a build of the package in question is made outside of pipx's pytest tests, in which case the wheel can be successfully built and added to pip's cache.

This is why it was necessary to add pre-installation of regex, for example, to our Github Workflow. By moving it and other similar packages' builds into our nox session (before running pytest), it also means we can reliably run tests on a macOS computer manually.

How to reproduce

Expected behavior

Copy link
Contributor

@gaborbernat gaborbernat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@gaborbernat gaborbernat merged commit 315697a into pypa:master Oct 4, 2020
@itsayellow itsayellow deleted the fix_package_install branch October 4, 2020 08:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants