tests, test?
tomchen opened this issue · 5 comments
pypa/sampleproject and Python Packaging User Guide's "Packaging Python Projects" page suggest the unit test folder be named tests
. But by default, all files matching the pattern test/test*.py, not tests/test*.py, are included in the source distribution. Indeed, I renamed tests
to test
in sampleproject, then python setup.py sdist bdist_wheel
will create a dist
package that includes test/test*.py.
Or, did sampleproject intentionally change the name to avoid sdist's inclusion of the test files? That'd be a weird way to do so. It would be better to rename it back to test
and explicitly put an exclude
line in MANIFEST.in
if you want the exclusion.
tests
is far more common in my experience. I'm kinda surprised to hear test
is included in sdists by default... not sure why that would be desirable.
The only reason I know of for naming the folder tests
is to avoid conflicting with the test
standard library module.
Yeah right. It should be a pypa/setuptools issue, I opened a PR there.
Meanwhile, there is still something sampleproject could do: maybe add a include line to MANIFEST.in
to ask setuptools for the inclusion of tests
?
The PR there (pypa/setuptools#2494) got closed for some... technical reasons, it is complicated to add tests/test*
until other problems are solved...
So I guess here's what we can do now:
- In sampleproject, add a line
recursive-include tests test*.py
toMANIFEST.in
(include all test*.py in tests folder and its subfolders, this does not include __init__.py and .pyc) - Add some notice to "Including files in source distributions with MANIFEST.in" page in Python Packaging User Guide, explaining why
test
there contradictstests
in the same user guide's "Packaging Python Projects" page and in pypa/sampleproject, and suggest what users should do, what the folder name and what sdist inclusion strategy might be good.
The directory in this project should probably just change to test
so that it aligns with the default setuptools
behavior.