Misc doc updates (mostly around running tests)

This adds and documents a workaround for
https://github.com/pypa/pipenv/issues/4909. It feels a bit weird to
pretend to be CI just to run the test suite, though. Maybe we can do
something about that later.

I ran into a lot of trouble trying to get the tests to run when working
on https://github.com/pypa/pipenv/pull/4908, and that was largely
because the instructions in this CONTRIBUTING.md file seem to have
rotted.

1. The bit about "can be run very simply" is bogus. It's
   unfortunately not that simple right now.

2. `make test` (the docker approach) fails for me with this error:

    ```bash
    $ make test
    docker-compose up
    [+] Running 1/0
     ⠿ Container pipenv-pipenv-tests-1  Recreated                                                                  0.1s
    Attaching to pipenv-pipenv-tests-1
    pipenv-pipenv-tests-1  | Collecting certifi
    pipenv-pipenv-tests-1  |   Downloading https://files.pythonhosted.org/packages/37/45/946c02767aabb873146011e665728b680884cd8fe70dde973c640e45b775/certifi-2021.10.8-py2.py3-none-any.whl (149kB)
    pipenv-pipenv-tests-1  | Installing collected packages: certifi
    pipenv-pipenv-tests-1  | Successfully installed certifi-2021.10.8
    pipenv-pipenv-tests-1  | Path: /root/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    pipenv-pipenv-tests-1  | Installing Pipenv...
    pipenv-pipenv-tests-1  | Obtaining file:///pipenv
    pipenv-pipenv-tests-1  |     Complete output from command python setup.py egg_info:
    pipenv-pipenv-tests-1  |     Traceback (most recent call last):
    pipenv-pipenv-tests-1  |       File "<string>", line 1, in <module>
    pipenv-pipenv-tests-1  |       File "/pipenv/setup.py", line 55
    pipenv-pipenv-tests-1  |         print(f"\033[1m{s}\033[0m")
    pipenv-pipenv-tests-1  |                                  ^
    pipenv-pipenv-tests-1  |     SyntaxError: invalid syntax
    pipenv-pipenv-tests-1  |
    pipenv-pipenv-tests-1  |     ----------------------------------------
    pipenv-pipenv-tests-1  | Command "python setup.py egg_info" failed with error code 1 in /pipenv/
    pipenv-pipenv-tests-1 exited with code 1
    ```

    The docker image it relies upon
    (https://hub.docker.com/r/kennethreitz/pipenv-tests) hasn't been
    updated in 4 years, so I assume it's just not something people use
    anymore?

3. Relatedly, there was a `Dockerfile` at the root of this repo that
   appears to be unused. Let me know if it's used somewhere I'm not
   realizing, I can add it back!

4. https://kennethreitz.org/essays/be-cordial-or-be-on-your-way seems to
   be a broken link now. I found
   https://kennethreitz.org/essays/2013/01/27/be-cordial-or-be-on-your-way
   on Google.

5. `./run-tests.sh` doesn't work for me. It's failing for the same
   reason described by @ncoghlan here:
   https://github.com/pypa/pip/issues/7953#issuecomment-611928262. He
   said something about a `PIPENV_BOOTSTRAP` environment variable, but I
   can't find any information about that.
This commit is contained in:
Jeremy Fleischman
2022-01-06 22:17:44 -08:00
parent b0ebaf054e
commit f42fcaa2b8
8 changed files with 17 additions and 74 deletions
-11
View File
@@ -1,11 +0,0 @@
./examples
./tests
./docs
./news
./pipenv
./.git
./.buildkite
./peeps
./.github
./tasks
./.azure-pipelines
+9 -13
View File
@@ -29,7 +29,7 @@ General Guidelines
Pipenv has one very important rule governing all forms of contribution,
including reporting bugs or requesting features. This golden rule is
\"[be cordial or be on your
way](https://www.kennethreitz.org/essays/be-cordial-or-be-on-your-way)\".
way](https://kennethreitz.org/essays/2013/01/27/be-cordial-or-be-on-your-way)\".
**All contributions are welcome**, as long as everyone involved is
treated with respect.
@@ -87,7 +87,7 @@ When contributing code, you\'ll want to follow this checklist:
6. Make your change.
7. Run the entire test suite again, confirming that all tests pass
*including the ones you just added*.
8. Send a GitHub Pull Request to the main repository\'s `master`
8. Send a GitHub Pull Request to the main repository\'s `main`
branch. GitHub Pull Requests are the expected method of code
collaboration on this project.
@@ -115,13 +115,9 @@ details.
### Testing
Tests are written in `pytest` style and can be run very simply:
Tests are written in `pytest` style.
``` {.sh}
pytest
```
This will run all Pipenv tests, which can take awhile. To run a subset
Running all tests can take awhile. To run a subset
of the tests, the standard pytest filters are available, such as:
- provide a directory or file: `pytest tests/unit` or
@@ -218,11 +214,11 @@ following things when filing bug reports:
Run the tests
-------------
Three ways of running the tests are as follows:
Two ways of running the tests are as follows:
1. `make test` (which uses `docker`)
2. `./run-tests.sh` or `run-tests.bat`
3. Using pipenv:
1. `./run-tests.sh` or `run-tests.bat`
- NOTE: `./run-tests.sh` is not working right now due to [this issue](https://github.com/pypa/pip/issues/7953#issuecomment-611928262).
2. Using pipenv:
``` {.console}
$ git clone https://github.com/pypa/pipenv.git
@@ -232,7 +228,7 @@ $ pipenv install --dev
$ pipenv run pytest
```
For the last two, it is important that your environment is setup
To run tests, it is important that your environment is setup
correctly, and this may take some work, for example, on a specific Mac
installation, the following steps may be needed:
-39
View File
@@ -1,39 +0,0 @@
FROM heroku/heroku:18-build
ENV DEBIAN_FRONTEND noninteractive
ENV LC_ALL C.UTF-8
ENV LANG C.UTF-8
# Python, don't write bytecode!
ENV PYTHONDONTWRITEBYTECODE 1
# -- Install Pipenv:
RUN apt update && apt install python3.7-dev libffi-dev -y
RUN curl --silent https://bootstrap.pypa.io/get-pip.py | python3.7
# Backwards compatility.
RUN rm -fr /usr/bin/python3 && ln /usr/bin/python3.7 /usr/bin/python3
RUN pip3 install pipenv
# -- Install Application into container:
RUN set -ex && mkdir /app
WORKDIR /app
# -- Adding Pipfiles
ONBUILD COPY Pipfile Pipfile
ONBUILD COPY Pipfile.lock Pipfile.lock
# -- Install dependencies:
ONBUILD RUN set -ex && pipenv install --deploy --system
# --------------------
# - Using This File: -
# --------------------
# FROM kennethreitz/pipenv
# COPY . /app
# -- Replace with the correct path to your app's main executable
# CMD python3 main.py
+1 -2
View File
@@ -1,5 +1,5 @@
include LICENSE README.md CONTRIBUTING.md CHANGELOG.rst NOTICES HISTORY.txt
include Makefile pyproject.toml get-pipenv.py .dockerignore *.yml
include Makefile pyproject.toml get-pipenv.py *.yml
include examples/Pipfil*
include *.md
recursive-include pipenv LICENSE LICENSE* *LICENSE* *COPYING* t32.exe t64.exe w32.exe w64.exe cacert.pem
@@ -20,7 +20,6 @@ include pipenv/pipenv.1
exclude .gitmodules
exclude .editorconfig .travis.yml .env appveyor.yml tox.ini pytest.ini
exclude Pipfile* CHANGELOG.draft.rst
exclude docker-compose.yml Dockerfile
exclude run-tests.sh run-tests.bat
recursive-include docs Makefile *.rst *.py *.bat
-2
View File
@@ -23,8 +23,6 @@ piptools-checkout-dir = $(get_checkout_dir)/patch-piptools
format:
black pipenv/*.py
test:
docker-compose up
.PHONY: install
install:
-7
View File
@@ -1,7 +0,0 @@
version: '3'
services:
pipenv-tests:
image: kennethreitz/pipenv-tests
command: bash /pipenv/run-tests.sh
volumes:
- .:/pipenv
+2
View File
@@ -2496,6 +2496,8 @@ def do_run(project, command, args, three=None, python=False, pypi_mirror=None):
click.echo("Can't run script {0!r}-it's empty?", err=True)
run_args = [project, script]
run_kwargs = {'env': env}
# We're using `do_run_nt` on CI (even if we're running on a non-nt machine)
# as a workaround for https://github.com/pypa/pipenv/issues/4909.
if os.name == "nt" or environments.PIPENV_IS_CI:
run_fn = do_run_nt
else:
+5
View File
@@ -1,4 +1,9 @@
import pytest
import os
def pytest_sessionstart(session):
# CI=1 is necessary as a workaround for https://github.com/pypa/pipenv/issues/4909
os.environ['CI'] = '1'
@pytest.fixture()