-
-
Notifications
You must be signed in to change notification settings - Fork 514
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
tox does not pass environment variables defined in [testenv:*] to the building phase #3266
Comments
Expected outputOutput of
|
I think you need to set the environment variables for the packaging environment separately, see https://tox.wiki/en/latest/upgrading.html#packaging-configuration-and-inheritance. I see you use passenv there, but not setenv. If you only want to set them in a specific environment, you need to use the syntax mentioned in the above documentation. |
I have tried this but it does not work: [tox]
requires =
tox>=4.2
env_list =
report
py{311, 310, 39, 38}
[pkgenv]
pass_env =
CC
CFLAGS
LDFLAGS
set_env =
cov: CFLAGS=--coverage -DDEBUG=1
cov: LDFLAGS=--coverage
[testenv:.pkg-cov]
pass_env =
CFLAGS=--coverage -DDEBUG=1
LDFLAGS=--coverage
{[pkgenv]pass_env}
set_env =
CFLAGS=--coverage -DDEBUG=1
LDFLAGS=--coverage
[testenv]
description = Run unit tests
package = wheel
wheel_build_env = .pkg
deps =
pytest>=7
cov: coverage
cov: gcovr
pass_env = {[pkgenv]pass_env}
commands =
pytest --doctest-modules --doctest-continue-on-failure --import-mode=importlib {envsitepackagesdir}/moocore tests
[testenv:report]
skip_install = true
deps =
coverage
commands =
coverage report -m
[testenv:cov]
description = Run coverage
pass_env = {[pkgenv]pass_env}
commands =
coverage run --source={envsitepackagesdir}/moocore,tests -m pytest --doctest-modules --import-mode=importlib {envsitepackagesdir}/moocore tests
coverage report -m
coverage xml
gcovr --print-summary --delete -r {toxinidir} {toxinidir} --xml=c_coverage.xml --exclude '.*/moocore\._libmoocore.c' --fail-under-line 1 |
I also tried removing the lines:
Then
But it is easy to check that the code was not compiled with coverage information because it does not generate any coverage info, while providing the CFLAGS outside does work. |
You missed the dot.
|
Where? I can't see a single instance of pkg that doesn't have the dot in
the two tox.ini files that I posted.
…On Sat, 13 Apr 2024, 13:41 Jürgen Gmach, ***@***.***> wrote:
You missed the dot.
[testenv:.pkg]
—
Reply to this email directly, view it on GitHub
<#3266 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAT7U5JO6QM2SDD7HOUTT3LY5ERYJAVCNFSM6AAAAABGCDWWUOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDANJTGYZTKOJYGQ>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Ah sorry, when I looked at the ticket on my smartphone I misinterpreted the The next steps would be to create a minimal example, as here a lot of things are involved, e.g. multiple instances of setenv and passenv, the coverage tool and so on. Oh, and even includes substitution. For the latter we have a bug report, it relates to I am currently very limited on time, and it would help us tremendously if you could both verify whether this If this is not the same bug as in #3262, then a minimal reproducer would be very welcome. |
The solution seems to be to define a custom [tox]
requires =
tox>=4.2
env_list =
py{311, 310, 39, 38}
[testenv]
description = Run unit tests
package = wheel
wheel_build_env = .pkg
deps =
pytest>=7
cov: coverage[toml]
cov: gcovr
commands =
pytest --doctest-modules --doctest-continue-on-failure --import-mode=importlib {envsitepackagesdir}/moocore tests
[testenv:report]
skip_install = true
deps =
coverage[toml]
commands =
coverage report -m
[testenv:cov]
description = Run coverage
package = wheel
wheel_build_env = .pkg-cov
commands =
coverage run --source={envsitepackagesdir}/moocore,tests -m pytest --doctest-modules --import-mode=importlib {envsitepackagesdir}/moocore tests
coverage report -m
coverage xml
gcovr --print-summary --delete -r {toxinidir} {toxinidir} --xml=c_coverage.xml --exclude '.*/moocore\._libmoocore.c' --fail-under-line 1
[pkgenv]
setenv =
.pkg-cov: CFLAGS={env:CFLAGS:--coverage -UNDEBUG -DDEBUG=1}
.pkg-cov: LDFLAGS=--coverage |
Issue
For coverage of C files within a Python package we need to set
CFLAGS=--coverage
andLDFLAGS=--coverage
. One would expect that setting that withinsetenv =
would be enough but tox does not seem to pass those environment variables when building the package. The documentation onsetenv
is very brief and it does not cover the scope ofsetenv
.Provide at least:
tox.ini
Output of
(Relevant packages only)pip list
of the host Python, wheretox
is installedActual output
Output of
make clean; tox -rvv -e cov
The text was updated successfully, but these errors were encountered: