pytest failures
pipeline job https://gitlab.postmarketos.org/postmarketOS/pmaports/-/jobs/1292907
for !5804 (merged) failed on "#6 (closed) (3Ek4xzsq) ci-x64-runner4-docker-postmarketos" with:
(few lines omitted)
$ .ci/pytest.sh
+ wget https://gitlab.postmarketos.org/postmarketOS/ci-common/-/raw/master/install_pmbootstrap.sh
Connecting to gitlab.postmarketos.org (140.211.167.182:443)
saving to 'install_pmbootstrap.sh'
install_pmbootstrap. 100% |********************************| 4093 0:00:00 ETA
'install_pmbootstrap.sh' saved
+ sh ./install_pmbootstrap.sh pytest
Installing dependencies: coreutils git losetup multipath-tools openssl procps python3 sudo pytest
Creating pmos user
pmbootstrap config file: pmbootstrap_v3.cfg
Found pmaports.cfg in current dir
Downloading pmbootstrap (master): https://gitlab.postmarketos.org/postmarketOS/pmbootstrap.git
Initializing pmbootstrap
[23:19:15] Config changed: aports='/builds/postmarketOS/pmaports'
+ exec su pmos -c 'sh -e .ci/pytest.sh'
[23:19:16] Config changed: aports='/builds/postmarketOS/pmaports'
[23:19:16] DONE!
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.2.2, pluggy-1.5.0 -- /usr/bin/python3
cachedir: .pytest_cache
rootdir: /builds/postmarketOS/pmaports
collecting ... collected 15 items
.ci/testcases/test_device.py::test_aports_device FAILED [ 6%]
=================================== FAILURES ===================================
______________________________ test_aports_device ______________________________
Traceback (most recent call last):
File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 341, in from_call
result: Optional[TResult] = func()
^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 241, in <lambda>
lambda: runtest_hook(item=item, **kwds), when=when, reraise=reraise
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/threadexception.py", line 87, in pytest_runtest_call
yield from thread_exception_runtest_hook()
File "/usr/lib/python3.12/site-packages/_pytest/threadexception.py", line 63, in thread_exception_runtest_hook
yield
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 90, in pytest_runtest_call
yield from unraisable_exception_runtest_hook()
File "/usr/lib/python3.12/site-packages/_pytest/unraisableexception.py", line 65, in unraisable_exception_runtest_hook
yield
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/logging.py", line 850, in pytest_runtest_call
yield from self._runtest_for(item, "call")
File "/usr/lib/python3.12/site-packages/_pytest/logging.py", line 833, in _runtest_for
yield
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/capture.py", line 878, in pytest_runtest_call
return (yield)
^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 122, in _multicall
teardown.throw(exception) # type: ignore[union-attr]
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/skipping.py", line 257, in pytest_runtest_call
return (yield)
^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 183, in pytest_runtest_call
raise e
File "/usr/lib/python3.12/site-packages/_pytest/runner.py", line 173, in pytest_runtest_call
item.runtest()
File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 1632, in runtest
self.ihook.pytest_pyfunc_call(pyfuncitem=self)
File "/usr/lib/python3.12/site-packages/pluggy/_hooks.py", line 513, in __call__
return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_manager.py", line 120, in _hookexec
return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 139, in _multicall
raise exception.with_traceback(exception.__traceback__)
File "/usr/lib/python3.12/site-packages/pluggy/_callers.py", line 103, in _multicall
res = hook_impl.function(*args)
^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/site-packages/_pytest/python.py", line 162, in pytest_pyfunc_call
result = testfunction(**testargs)
^^^^^^^^^^^^^^^^^^^^^^^^
File "/builds/postmarketOS/pmaports/.ci/testcases/test_device.py", line 64, in test_aports_device
raise RuntimeError("!archcheck missing in options= line: " + path)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
TypeError: can only concatenate str (not "PosixPath") to str
------------------------------ Captured log call -------------------------------
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-pine64-pinetab2: replace '$pkgname' with 'device-pine64-pinetab2'
VERBOSE root:logging.py:116 device-pine64-pinetab2: replace '$pkgname' with 'device-pine64-pinetab2'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'v0': 'Kernel for PineTab 2 Dev Units', 'v2': 'Kernel for PineTab 2 Early Adopter'}
VERBOSE root:logging.py:116 device-samsung-a2corelte: replace '$pkgname' with 'device-samsung-a2corelte'
VERBOSE root:logging.py:116 device-samsung-a2corelte: replace '$pkgdesc' with 'Samsung Galaxy A2 Core'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-lg-bullhead: replace '$pkgname' with 'device-lg-bullhead'
VERBOSE root:logging.py:116 device-lg-bullhead: replace '$pkgname' with 'device-lg-bullhead'
VERBOSE root:logging.py:116 device-lg-bullhead: replace '$pkgname' with 'device-lg-bullhead'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'downstream': 'Downstream kernel', 'mainline': 'Close to mainline kernel (only basic hardware support)'}
VERBOSE root:logging.py:116 device-samsung-a30: replace '$pkgname' with 'device-samsung-a30'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-samsung-j8y18lte: replace '$pkgname' with 'device-samsung-j8y18lte'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-surftab-wintron7.0: replace '$pkgname' with 'device-surftab-wintron7.0'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-semc-anzu: replace '$pkgname' with 'device-semc-anzu'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgname' with 'device-google-nyan-big'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgver' with '6'
VERBOSE root:logging.py:116 device-google-nyan-big: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'nyan-big': 'Google Nyan Big', 'nyan-big-fhd': 'Google Nyan Big (FullHD)'}
VERBOSE root:logging.py:116 device-sony-sirius: replace '$pkgname' with 'device-sony-sirius'
VERBOSE root:logging.py:116 device-sony-sirius: replace '$pkgname' with 'device-sony-sirius'
VERBOSE root:logging.py:116 device-sony-sirius: replace '$pkgname' with 'device-sony-sirius'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-xunlong-orangepi5-plus: replace '$pkgname' with 'device-xunlong-orangepi5-plus'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-qcom-msm8909: replace '$pkgname' with 'device-qcom-msm8909'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-huawei-y530: replace '$pkgname' with 'device-huawei-y530'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-acer-picasso: replace '$pkgname' with 'device-acer-picasso'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-xunlong-orangepi3: replace '$pkgname' with 'device-xunlong-orangepi3'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-samsung-degaswifi: replace '$pkgname' with 'device-samsung-degaswifi'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-huawei-sturgeon: replace '$pkgname' with 'device-huawei-sturgeon'
VERBOSE root:logging.py:116 device-huawei-sturgeon: replace '$pkgname' with 'device-huawei-sturgeon'
VERBOSE root:logging.py:116 device-huawei-sturgeon: replace '$pkgname' with 'device-huawei-sturgeon'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'downstream': 'Downstream kernel', 'mainline': 'Close to mainline kernel'}
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$pkgname' with 'device-fairphone-fp5'
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$pkgname' with 'device-fairphone-fp5'
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$pkgver' with '4'
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$pkgrel' with '2'
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$subpkgname' with 'device-fairphone-fp5-openrc'
VERBOSE root:logging.py:116 device-fairphone-fp5: replace '$subpkgname' with 'device-fairphone-fp5-openrc'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-samsung-t03g: replace '$pkgname' with 'device-samsung-t03g'
VERBOSE root:logging.py:116 device-samsung-t03g: replace '$pkgname' with 'device-samsung-t03g'
VERBOSE root:logging.py:116 device-samsung-t03g: replace '$pkgname' with 'device-samsung-t03g'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'s6evr02': 'Samsung S6EVR02 panel. To know which panel your device uses, see the wiki page of this device: https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Note_II_(samsung-t03g)', 'ea8061': 'Magnachip EA8061 panel. To know which panel your device uses, see the wiki page of this device: https://wiki.postmarketos.org/wiki/Samsung_Galaxy_Note_II_(samsung-t03g)'}
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
VERBOSE root:logging.py:116 device-google-crosshatch: replace '$pkgname' with 'device-google-crosshatch'
VERBOSE root:logging.py:116 device-google-crosshatch: replace '$pkgname' with 'device-google-crosshatch'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in {'downstream': 'LineageOS downstream kernel (recommended)', 'mainline': "Close to mainline; DO NOT USE: doesn't work (only USB networking is supported)"}
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$subpkgname' with 'device-xiaomi-nabu-nonfree-firmware'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgname' with 'device-xiaomi-nabu'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgver' with '1'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$pkgrel' with '0'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$subpkgname' with 'device-xiaomi-nabu-openrc'
VERBOSE root:logging.py:116 device-xiaomi-nabu: replace '$subpkgname' with 'device-xiaomi-nabu-openrc'
VERBOSE root:logging.py:116 parse_kernel_suffix: lts not in None
=========================== short test summary info ============================
FAILED .ci/testcases/test_device.py::test_aports_device - TypeError: can only concatenate str (not "PosixPath") to str
!!!!!!!!!!!!!!!!!!!!!!!!!! stopping after 1 failures !!!!!!!!!!!!!!!!!!!!!!!!!!!
============================== 1 failed in 0.10s ===============================
Logfile from artifacts log.txt