[Pytest-commit] Issue #711: Confusing exit code when pkg_resources fails (pytest-dev/pytest)

Diogo Campos issues-reply at bitbucket.org
Mon Apr 6 20:50:07 CEST 2015


New issue 711: Confusing exit code when pkg_resources fails
https://bitbucket.org/pytest-dev/pytest/issue/711/confusing-exit-code-when-pkg_resources

Diogo Campos:

When pytest fails to start (e.g., missing a dependency), the test command fails with something like this:

```
#!python

Traceback (most recent call last):
  File "XXX/pytest-2.6.4/Scripts/py.test-script.py", line 5, in <module>
    from pkg_resources import load_entry_point
  File "XXX\setuptools-12.2\lib\site-packages\pkg_resources\__init__.py", line 3020, in <module>
    working_set = WorkingSet._build_master()
  File "XXX\setuptools-12.2\lib\site-packages\pkg_resources\__init__.py", line 614, in _build_master
    ws.require(__requires__)
  File "XXX\setuptools-12.2\lib\site-packages\pkg_resources\__init__.py", line 920, in require
    needed = self.resolve(parse_requirements(requirements))
  File "XXX\setuptools-12.2\lib\site-packages\pkg_resources\__init__.py", line 807, in resolve
    raise DistributionNotFound(req)
pkg_resources.DistributionNotFound: colorama
```

And the command returns **1**.

This is confusing because pytest states that exit code **1** means "tests failed", while "internal error" or "usage error" should return **2**/**3**.

I'm not sure if there is much that can be done to fix this, since that **1** is given by setuptools, and not pytest.

Overall, using such a common error exit code **1** to indicate anything other than errors might be a bad idea.




More information about the pytest-commit mailing list