[MacPorts] #64045: py-pyzstd: tests fail from clean state because glob is used in global part of portfile
MacPorts
noreply at macports.org
Tue Nov 23 17:30:05 UTC 2021
#64045: py-pyzstd: tests fail from clean state because glob is used in global part
of portfile
------------------------+-----------------------
Reporter: ryandesign | Owner: catap
Type: defect | Status: assigned
Priority: Normal | Milestone:
Component: ports | Version:
Keywords: | Port: py-pyzstd
------------------------+-----------------------
py-pyzstd does:
{{{
test.env PYTHONPATH=[glob -nocomplain
${worksrcpath}/build/lib*]
}}}
This won't work if the port is in a clean state at the time the portfile
is parsed because ${worksrcpath} and its contents don't exist yet.
For example: `sudo port clean py39-pyzstd && sudo port test py39-pyzstd`
fails:
{{{
:info:test test_zstd (unittest.loader._FailedTest) ... ERROR
:info:test
======================================================================
:info:test ERROR: test_zstd (unittest.loader._FailedTest)
:info:test
----------------------------------------------------------------------
:info:test ImportError: Failed to import test module: test_zstd
:info:test Traceback (most recent call last):
:info:test File
"/opt/local/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/unittest/loader.py",
line 154, in loadTestsFromName
:info:test module = __import__(module_name)
:info:test File "/opt/local/var/macports/build
/_Users_rschmidt_macports_macports-ports-ryandesign-fork_python_py-
pyzstd/py39-pyzstd/work/pyzstd-0.15.0/tests/test_zstd.py", line 20, in
<module>
:info:test import pyzstd
:info:test ModuleNotFoundError: No module named 'pyzstd'
:info:test
----------------------------------------------------------------------
}}}
A subsequent `sudo port test py39-pyzstd` without cleaning first succeeds.
To avoid this problem, if you need to `glob` or otherwise inspect the
contents of ${worksrcpath}, you can't do it in the global part of the
portfile. You have to defer it to a time when ${worksrcpath} exists. In
this case, you should enclose at least the `test.env` line in a `pre-test`
block.
--
Ticket URL: <https://trac.macports.org/ticket/64045>
MacPorts <https://www.macports.org/>
Ports system for macOS
More information about the macports-tickets
mailing list