38 Commits

Author SHA1 Message Date
Matt Davis d78232d917 Smarter uninstall (#6029)
* Initial take at making uninstall like the inverse of upgrade.
* Updates based on testing the uninstall command
* Handle pre flag
* Add news fragment
2024-03-26 21:25:45 -04:00
Dave Schaefer 966afee813 Add tests for sorting str and dict values
Currently these fail. Will be fixed shortly in the next patch.

Pipfiles can contain different formats for package specifications.
Current default behaivour is to sort packages into groups - all string values will be sorted first, followed by all dictionary values. e.g.

```
aa = "*"
bb = "*"
cc = "*"
aaa = {version = "*"}
bbb = {version = "*"}
ccc = {version = "*"}
```

This will have to be fixed.
2023-10-10 21:03:25 -06:00
Dave Schaefer 4010f5d197 Mark install for other tests that install
Since the goal of the mark is to note which tests use it.
2023-10-08 10:52:05 -06:00
Dave Schaefer 4de4d20b74 mark uninstall tests with install
since the test calls `install` while running.
as discussed in https://github.com/pypa/pipenv/pull/5965
2023-10-08 10:48:26 -06:00
Dave Schaefer 7b33b04374 Implement pipfile sorting for uninstall
using sorting directive
2023-10-08 09:51:40 -06:00
Christian Clauss 22223f0084 ruff rules SIM 2023-08-30 14:51:20 +02:00
Matt Davis 6ac1451ec8 stop using requirementslib models (#5793)
* Move away from requirementslib models

* Revise test since PEP-440 does not support wildcard versions but does support equivalent compatible release specifiers.

* simplify and remove dead code

* Ensure the os_name marker is AND with the other markers.

* Move what we still need from requirementslib into the pipenv utils and stop vendoring it.

* Remove requirementslib.

* force upgrade of virtualenv for python 3.12

* remove virtualenv-clone

* Update vcs specifiers documentation; infer name from specific pip line formats where possible.

* Provide helpful text and error for recently removed commands

* Set the right log levels and verbosity to show users the errors generated by pip resolver when supplying -v flag

* Fix the collection of all matching package hashes for non-pypi indexes.  Plus lesson from testing torch which contains local identifiers.
2023-08-19 16:36:52 -04:00
Matt Davis 70b77ae332 Fix failing test 2023-07-11 20:23:42 +02:00
Matt Davis 49b78914b4 somehow this change got reverted 2023-07-11 20:23:42 +02:00
Matt Davis c715b11234 Finally get to the bottom of the test parallelism random failures is because click's CliRunner is not thread safe. 2023-07-11 20:23:42 +02:00
Christian Clauss 44e8aebc41 ruff --select=FLY,UP --target-version=py37 --fix . 2023-06-30 08:36:14 +02:00
Christian Clauss 9525db4623 feat: Replace flake8 and isort with ruff 2023-04-13 15:58:49 +02:00
Matt Davis aed46b07c7 Fix tests 2022-11-10 01:47:29 -05:00
Matt Davis 9e064bc6c3 Fix issues from prior refactoring and specify --no-build-isolation by default. 2022-09-20 12:02:45 -04:00
Matt Davis 7497f0cbc8 resolve issues with uninstall. 2022-09-19 23:19:37 -04:00
Matt Davis 8a4916ebcc Adjust test expctation. 2022-09-19 12:26:42 -04:00
Matt Davis dcfa8d222c Fix remaining test. 2022-09-11 10:23:53 -04:00
Matt Davis 93c8bdaf62 Examine the 20 slowest tests and make improvements. 2022-09-06 00:13:12 -04:00
Matt Davis 9848862927 Convert test runner to use pypiserver package as standalone process (#5284)
* Check point progress on moving tests to pypiserver.

* Allow other indexes to mimic the pypi json API for package hashes.

* Fix these tests that run on lower python versions only.

* Try adding the pypiserver to the github actions to only run once.

* Expand the scope of fixtures for pypiserver.

* try to accomedate microsoft runner.

* Windows networking troubles.

* Remove running as a background job.

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to condtionally invoke different start pypi-server commands

* Try to introduce pypi as the root index because setuptools-scm is not in our pypi artifacts.

* see if the windows tests run faster (and the other tests) by supplying waitress.

* Only use waitress on windows because the others are fast on the default.  Fix requests pollution.

* Supply a suitable Pipfile instead for these two failing tests.

* More requests resolver cross test contamination cleanup.

* remove problematic tests because even on my version of python 3.8.12 this does not work due to AttributeError: 'HTMLParser' object has no attribute 'unescape'

* fix mirror install test.

* Fix Pipfile.

* Fix Pipfile for real

* Fix tests

* Cleanup test naming and more test enhancements.

* Save this optimization for a subsequent PR.

* Cleanup the TemporaryDirectory between tests.

* resolve merge conflict.

* Cleanup path initalization -- it hsould always be a TemporaryDirectory for tests that gets cleanedup.

* Cleanup path initalization -- it hsould always be a TemporaryDirectory for tests that gets cleanedup.

* tableflip on those requests tests that read the setup metadata in reqlib from other tests.

* Update developer documentation for running tests.

* add news fragment.

* Try gunicorn perfoormance for linux/mac

* Only use gunicorn on linux based on the results of last run.
2022-09-05 10:19:12 -04:00
Matt Davis 3387881a6d Code reorg utils into utils module reduces complexity (#4990)
* Split apart the massive utils.py into a utils module
2022-03-29 20:27:33 -04:00
Frost Ming 88df069d68 fix tests for 3.9 and 3.10 2021-11-05 14:45:37 +08:00
Frost Ming 9b4eb98529 Remove unused patch files 2021-07-28 17:30:17 +08:00
Frost Ming a82bbb7b27 Try switching from delegator to subprocess 2021-07-28 16:39:36 +08:00
Frost Ming ca5d931f1f Update to py36 plus syntax 2021-07-28 10:59:00 +08:00
Frost Ming 284bd24204 Tweak the test case to reflect correct behavior 2020-08-27 21:15:46 +08:00
Frost Ming 4f7bb36f92 Correct the exception to PipenvUsageError 2020-06-06 10:59:29 +08:00
Marcin 09a71e7c2c Fix --all-dev behaviour 2020-06-03 04:45:39 +02:00
Dan Ryan e03878d7c7 Add news entry and fix lockfile
- Drop pytest-tap
- Update azure pipelines config
- Borrow ramdisk configuration from pip
- Fix pyinstaller ref for python 2
- Add 0-minute timeout and add github workflow
- Add skip for pywin32
- Scale down to `-n auto` to reduce race conditions on windows
- Skip pywin32 on python 3.8 as the relevant dependencies aren't
  compatible
- Use default pip exists action = ignore to work around VCS race
  condition
- Create local temp directory to avoid crossing drive letter boundary on
  azure during CI runs
- Monkeypatch click windows console detection to return False in CI

Signed-off-by: Dan Ryan <dan.ryan@canonical.com>
2020-04-10 12:14:06 -04:00
John Vandenberg e4d992b84c test_uninstall.py: Replace requests with Django 2019-07-11 13:33:01 +07:00
Dan Ryan 83868c8f1a Cut over to devpi for tests and improve logging
- Verbose logs will now write gracefully to the terminal even while the
  spinner is running (i.e. during locking)
- This PR also cuts over to Devpi for a backing cache rather than a
  hacked httpbin instance
- Inclues a refactor of `pip_install` to deduplicate logic
- Attempts to switch back to relying on native editable installs in pip
  as the current implementation is broken on master (i.e. nothing is
  installed in the virtualenv)
- Fixes #3809

Signed-off-by: Dan Ryan <dan@danryan.co>
2019-06-25 01:26:49 -04:00
Dan Ryan d8e66c7fce Add future imports to tests
Signed-off-by: Dan Ryan <dan@danryan.co>
2019-05-16 00:52:10 -04:00
jxltom 85e64b86be Resort imports for tests 2018-12-01 17:26:32 +08:00
Dan Ryan 2b90c89d1f Revendor requirementslib
- Implement improvements and bugfixes in codebase
- Remote archives will now resolve properly

Signed-off-by: Dan Ryan <dan@danryan.co>
2018-11-11 16:30:42 -05:00
Mickaël Schoentgen 25a4b558cd Fix 2 ResourceWarning: unclosed file, in tests 2018-09-01 15:58:33 +02:00
kennethreitz 7588ca31cf passing tests! 2018-07-03 23:23:20 -04:00
Jacob Henner af91eb68bb Add support for PyPI mirrors
Adds support for the --pypi-mirror command line parameter and the
PIPENV_PYPI_MIRROR environment variable for most pipenv operations.
This permits pipenv to function without pypi.org, which is necessary for
users:

    1. behind restrictive networks
    2. facing strict artifact sourcing policies
    3. experiencing poor performance connecting to pypi.org
    4. who've configured a local cache for performance reasons

When specified, the value of this parameter replaces all instances of
pypi.org and pypi.python.org within pipenv operations without modifying
or requring the modification of Pipfiles.

- Resolves #2075
2018-06-07 18:24:18 -04:00
Tzu-ping Chung d8b1d637e0 Missed path fix 2018-04-12 18:11:59 +08:00
Tzu-ping Chung 4533e68bca Move things around 2018-04-12 17:35:17 +08:00