Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[#826] switch to source layout #827

Merged
merged 3 commits into from
Jun 11, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ repos:
rev: v1.0.1
hooks:
- id: seed-isort-config
args: [--application-directories, src]
- repo: https://github.com/pre-commit/mirrors-isort
rev: v4.3.4
hooks:
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,8 @@ def main():
platforms=["unix", "linux", "osx", "cygwin", "win32"],
author="holger krekel",
author_email="holger@merlinux.eu",
packages=["tox"],
packages=setuptools.find_packages("src"),
package_dir={"": "src"},
entry_points={
"console_scripts": ["tox=tox:cmdline", "tox-quickstart=tox._quickstart:main"]
},
Expand All @@ -59,7 +60,6 @@ def main():
"pytest-xdist",
],
"docs": ["sphinx >= 1.6.3, < 2", "towncrier >= 17.8.0"],
"lint": ["pre-commit == 1.8.2"],
"publish": ["devpi", "twine"],
},
classifiers=[
Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
47 changes: 32 additions & 15 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -12,47 +12,61 @@ skip_missing_interpreters = true

[testenv]
description = run the tests with pytest under {basepython}
setenv = COVERAGE_FILE={toxworkdir}/.coverage.{envname}
setenv = PIP_DISABLE_VERSION_CHECK = 1
COVERAGE_FILE = {toxworkdir}/.coverage.{envname}
passenv = http_proxy https_proxy no_proxy SSL_CERT_FILE TOXENV CI TRAVIS TRAVIS_* APPVEYOR APPVEYOR_* CODECOV_*
deps =
extras = testing
commands = pytest {posargs:--cov-config="{toxinidir}/tox.ini" --cov="{envsitepackagesdir}/tox" --timeout=180 tests}
changedir = {toxinidir}/tests
commands = pytest {posargs:--cov="{envsitepackagesdir}/tox" --cov-config="{toxinidir}/tox.ini" --timeout=180 .}

[testenv:docs]
description = invoke sphinx-build to build the HTML docs and check that all links are valid
whitelist_externals = sphinx-build
basepython = python3.6
extras = docs
changedir = {toxinidir}
commands = sphinx-build -d "{toxworkdir}/docs_doctree" doc "{toxworkdir}/docs_out" --color -W -bhtml


[testenv:fix-lint]
description = format the code base to adhere to our styles, and complain about what we cannot do automatically
basepython = python3.6
passenv = {[testenv]passenv}
HOMEPATH
# without PROGRAMDATA cloning using git for Windows will fail with an
# `error setting certificate verify locations` error
PROGRAMDATA
extras = lint
description = run static analysis and style check using flake8
deps = pre-commit == 1.10.1
skip_install = True
changedir = {toxinidir}
commands = pre-commit run --all-files --show-diff-on-failure
python -c 'print("hint: run {envdir}/bin/pre-commit install to add checks as pre-commit hook")'


[testenv:coverage]
description = combine coverage data and create reports
deps = coverage
description = [run locally after tests]: combine coverage data and create report;
generates a diff coverage against origin/master (can be changed by setting DIFF_AGAINST env var)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should DIFF_AGAINST be in passenv?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

well spotted, fixed

deps = {[testenv]deps}
coverage >= 4.4.1, < 5
diff_cover
skip_install = True
changedir = {toxworkdir}
setenv = COVERAGE_FILE=.coverage
passenv = {[testenv]passenv}
DIFF_AGAINST
setenv = COVERAGE_FILE={toxworkdir}/.coverage
changedir = {toxinidir}
commands = coverage erase
coverage combine
coverage report --rcfile="{toxinidir}/tox.ini"
coverage xml
coverage report -m
coverage xml -o {toxworkdir}/coverage.xml
diff-cover --compare-branch {env:DIFF_AGAINST:origin/master} {toxworkdir}/coverage.xml

[testenv:codecov]
description = [only run on CI]: upload coverage data to codecov (depends on coverage running first)
deps = codecov
skip_install = True
changedir = {toxinidir}
commands = codecov --file "{toxworkdir}/coverage.xml"

[testenv:exit_code]
Expand All @@ -61,13 +75,15 @@ commands = codecov --file "{toxworkdir}/coverage.xml"
basepython = python3.6
description = commands with several exit codes
skip_install = True
changedir = {toxinidir}
commands = python3.6 -c "import sys; sys.exit(139)"

[testenv:pra]
platform = linux
passenv = *
description = "personal release assistant" - see HOWTORELEASE.rst
extras = publish, docs
changedir = {toxinidir}
commands = sphinx-build -d "{toxworkdir}/docs_doctree" doc "{toxworkdir}/docs_out" --color -W -blinkcheck
"{toxinidir}/tasks/pra.sh" {posargs}

Expand All @@ -81,6 +97,7 @@ extras = testing, docs
# required to make looponfail reload on every source code change
usedevelop = True
basepython = python3.6
changedir = {toxinidir}
commands = python -m pip list --format=columns
python -c 'import sys; print(sys.executable)'

Expand All @@ -90,21 +107,21 @@ max-line-length = 99
ignore = E203, W503

[coverage:run]
omit = tox/__main__.py
branch = true

[coverage:report]
skip_covered = True
show_missing = True
exclude_lines = if __name__ == ["']__main__["']:

[coverage:paths]
source = tox
{toxworkdir}/*/lib/python*/site-packages/tox
{toxworkdir}/*/Lib/site-packages/tox
{toxworkdir}/pypy*/site-packages/tox
source = src/tox
.tox/*/lib/python*/site-packages/tox
.tox/*/Lib/site-packages/tox
.tox/pypy*/site-packages/tox
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is by far my least favorite part of moving to a src directory, the coverage reports become unreadable :(

we've used this script or a derivative of it to try and make this more sane (it combines the coverage data from site-packages over top the local directory)

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hmm, combining the data is still fine (e.g. tox -e py27,coverage); only the pytest run one is messed up; I would prefer to fix this upstream instead 👍


[pytest]
addopts = -rsxX -vvv --showlocals
addopts = -rsxX --showlocals
rsyncdirs = tests tox
looponfailroots = tox tests
norecursedirs = .hg .tox
Expand Down