On 10/23/19 11:29 AM, Stephen Warren wrote:
On 10/23/19 11:12 AM, Tom Rini wrote:
On Wed, Oct 23, 2019 at 11:03:38AM -0600, Stephen Warren wrote:
On 10/23/19 10:58 AM, Tom Rini wrote:
On Wed, Oct 23, 2019 at 10:55:57AM -0600, Stephen Warren wrote:
On 10/22/19 9:20 PM, Tom Rini wrote:
Now that we have moved to being based on pytest for python3 we
need to
make our test.py wrapper more robust in terms of only calling python3
rather than possibly finding and using python2. To do this,
change from
execvp()'ing pytest to invoking the package itself via python. In
the
event that pytest is unavailable we still get a user-friendly error:
I guess if this works, it's fine. But I think it'd work just as
well to
simply s/py.test/py.test-3/ in the existing code?
We can't because pip only provides "py.test" / "pytest" binaries.
Hmm. It sucks that virtualenv does things differently to Ubuntu
packaging
then. That means this series will probably break my test system, which
doesn't use virtualenv. I guess I'll apply it and see.
This should be what works everywhere tho. Instead of hoping that
"py.test" will be the right python version we tell python3 to use the
pytest module it has. So if you have system python3-pytest, that works,
if you (python3) pip install pytest locally, that works and if you
virtualenv + python3 + pip install pytest, that works.
On Ubuntu 16.04, with everything installed from Ubuntu packages rather
than using virtualenv, I get this:
+ ./src/u-boot/test/py/test.py --bd sandbox --build-dir
/var/lib/jenkins/workspace/u-boot-github_swarren_u-boot-tegra_dev-test-py/U_BOOT_BOARD/sandbox/build/u-boot/sandbox
-k 'not sleep'
Traceback (most recent call last):
File "./src/u-boot/test/py/test.py", line 20, in <module>
sys.exit(load_entry_point('pytest', 'console_scripts',
'pytest')(args))
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py",
line 542, in load_entry_point
return get_distribution(dist).load_entry_point(group, name)
File "/usr/lib/python3/dist-packages/pkg_resources/__init__.py",
line 2568, in load_entry_point
raise ImportError("Entry point %r not found" % ((group, name),))
ImportError: Entry point ('console_scripts', 'pytest') not found
[swarren@swarren-lx1 u-boot]$ dpkg -l|grep py|grep test
ii python-pytest 2.8.7-4
ii python3-pytest 2.8.7-4
I guess that's much older than the pytest in requirements.txt (5.2.1!!).
While I think we can require a newish version of Python (3.5) since
that's widely available on supported OSs, I don't think we want to force
people to have a very new version of all the packages (which supported
distros don't package yet), or change they way they run pytest (by
requiring use of a virtualenv and requirements.txt) since that mechanism
isn't supported on old branches of U-Boot, which will then require all
kinds of special cases in scripts that invoke the U-Boot test system.
Ah. The issue is the name of the entry point; the last parameter to
load_entry_point(). "py.test" is supported everywhere, but only newer
versions of pytesst have a "pytest" entry point. Changing that parameter
to "py.test" makes the wrapper script work. Now every other test fails;
I will see if there's an easy fix for that or not.
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot