Skip to content

Commit

Permalink
Misc doc updates (mostly around running tests)
Browse files Browse the repository at this point in the history
This documents a workaround for
pypa#4909. It feels a bit weird to me
that developers have to pretend to be CI just to run the test suite,
thoug.

I ran into a lot of trouble trying to get the tests to run when working
on pypa#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 just bogus. It
   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. `make tests` (mentioned in RELEASING.md) also didn't work for me. I
   added the `CI=1` workaround from
   pypa#4909 to get it working.

5. 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.

6. `./run-tests.sh` doesn't work for me. It's failing for the same
   reason described by @ncoghlan here:
   pypa/pip#7953 (comment). He
   said something about a `PIPENV_BOOTSTRAP` environment variable, but I
   can't find any information about that.
  • Loading branch information
jfly committed Jan 7, 2022
1 parent b0ebaf0 commit 9a2eb44
Show file tree
Hide file tree
Showing 7 changed files with 12 additions and 72 deletions.
11 changes: 0 additions & 11 deletions .dockerignore

This file was deleted.

17 changes: 7 additions & 10 deletions CONTRIBUTING.md
Expand Up @@ -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.
Expand Down Expand Up @@ -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.

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -220,16 +216,17 @@ Run the tests

Three ways of running the tests are as follows:

1. `make test` (which uses `docker`)
2. `./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).
3. Using pipenv:

``` {.console}
$ git clone https://github.com/pypa/pipenv.git
$ cd pipenv
$ git submodule sync && git submodule update --init --recursive
$ pipenv install --dev
$ pipenv run pytest
# CI=1 is necessary as a workaround for https://github.com/pypa/pipenv/issues/4909
$ CI=1 pipenv run pytest
```

For the last two, it is important that your environment is setup
Expand Down
39 changes: 0 additions & 39 deletions Dockerfile

This file was deleted.

3 changes: 1 addition & 2 deletions MANIFEST.in
@@ -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
Expand All @@ -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
Expand Down
5 changes: 2 additions & 3 deletions Makefile
Expand Up @@ -23,8 +23,6 @@ piptools-checkout-dir = $(get_checkout_dir)/patch-piptools

format:
black pipenv/*.py
test:
docker-compose up

.PHONY: install
install:
Expand Down Expand Up @@ -71,8 +69,9 @@ submodules:

.PHONY: tests
tests: virtualenv submodules test-install
# CI=1 is a workaround for https://github.com/pypa/pipenv/issues/4909
. $(get_venv_path)/bin/activate && \
pipenv run pytest -ra -vvv --full-trace --tb=long
CI=1 pipenv run pytest -ra -vvv --full-trace --tb=long

.PHONY: test-specific
test-specific: submodules virtualenv test-install
Expand Down
7 changes: 0 additions & 7 deletions docker-compose.yml

This file was deleted.

2 changes: 2 additions & 0 deletions pipenv/core.py
Expand Up @@ -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:
Expand Down

0 comments on commit 9a2eb44

Please sign in to comment.